IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

[POO] conception des classes


Sujet :

C++

  1. #41
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Non, sauf si tu prévois un pointeur pour "remonter". Et attention, tu stockes un pointeur vers CFP, pas une instance directement

  2. #42
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    AAAH ok.
    On stocke un pointeur et pas une instance? Pourquoi?
    Là du coup je vais devoir créer un max de méthode dans Choc pour remplir mes champs de CFP !

    Quand on stocke un pointeur comme ça, quels sont les droits d'accès (private, protected, public) vers là ou on pointe ?

  3. #43
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Tu ne pourras pas stocker une instance de CFP puisqu'en tant que telle, elle n'existe pas, c'est un composant abstrait, c'est l'antenne qui sera quelque chose, et pour accéder à une antenne à travers un CFP, il va te falloir un pointeur.

  4. #44
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Ok d'accord, je commence à comprendre !

    1) Dans l'hypothèse où CFG serait seul, sans classes filles. Pourrait-on stocker directement l'instance dans choc ?

    2)
    c'est l'antenne qui sera quelque chose
    Donc, on ne peut pas créer d'objet CFP? Il faudra passer obligatoirement par les classes filles (j'ai fait un peu de java avant donc... c'est un peu différent je pense) ?

    3) Vu que CFP est une classe abstraite, faut-il la déclarer comme abstract (comme en java)?

    Merci bcp bcp pour ton aide !

  5. #45
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    1) oui
    2) Exact, comme en Java, on ne peut pas créer de classe dont une fonction est virtuelle pure/abstraite
    3) non, ce sont les méthodes qui sont virtuelles pures.

  6. #46
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    OK d'accord! De fils en aiguilles, je progresse !
    Ce sont donc les méthodes à déclarer comme virtuelles pures. Lorsqu'on les déclare comme telles, faut-il leur donner une implémentation? i.e on déclare quand même les méthodes, et la méthode fille appelle la méthode mère ?
    Comment ça se passe en C++?

  7. #47
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Virtuelles pures = virtuelles pures, s'il y a une implémentation, elles sont virtuelles.
    Si tu veux appeler la méthode mère, c'est ton choix.

  8. #48
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Au fait, pourquoi implémenter des méthodes virtuelles pures?
    Ne peut-on pas déclarer les fonctions membres normalement?

  9. #49
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Elles doivent au moins être virtuelles si tu veux appeler les fonctions de la classe fille àç partir de la classe mère, mais pour ça, je te conseille d'aller voir la FAQ http://c.developpez.com/faq/cpp/?pag...LASS_abstraite

  10. #50
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Pour moi, de la classe mère dérive deux classes : LPT et Antenne. La classe mère (CFP) va définir un ensemble de méthodes, certaines reprises par les classes filles.

    Effectivement, comme dans la FAQ, il est possible (mais pas encore sur!) que certaines fonctions bien différentes pour CFP et Antenne, aient besoin d'une redéfinition! -> Dans ce cas, méthode virtuelle pure ?

    Question : si on définit une méthode calculer() dans CFP, est-ce qu'on peut modifier cette fonction? i.e donner une nouvelle implémenation sans changer les arguments? Peut-on surchager cette fonction ?

    Ca fait bcp de questions!
    Merci...

  11. #51
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    C'est sûr, tu auras des méthodes dans CFP qui seront génériques aux CFP, mais les autres, qui sont des particularités des 2 composants - je ne sais pas, par ex la température de je ne sais quoi -, seront des fonctions virtuelles pures dans la classe mère.
    Si tu as une fonction dans CFP qui s'appelle calculer, tu peux redéfinir cette fonction dans la classe fille, mais si elle n'est pas virtuelle dans la classe mère, elle ne sera jamais appelée. Si tu surcharges la fonctiond ans la classe fille, c'est une autre fonction, il te faudra tout de même définir la première.

  12. #52
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par Miles
    Si tu as une fonction dans CFP qui s'appelle calculer, tu peux redéfinir cette fonction dans la classe fille, mais si elle n'est pas virtuelle dans la classe mère, elle ne sera jamais appelée.
    A ce sujet, j'ai lu la FAQ
    http://c.developpez.com/faq/cpp/?pag...NITION_virtual
    Mais je dois avouer que j'ai pas tout compris... Le virtual permet d'appeler la fonction dans la classe fille, sinon c'est la fonction "mère" qui est appelée c'est ça ???

  13. #53
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Tu as un pointeur de type Mere* que tu as rempli avec un new Fille();
    Si tu accèdes aux méthodes déclarées dans Mere - les seules pouvant être appelées puisque tu as un pointeur de type Mere* - sans qu'elles soient virtuelles, tu appelles les fonctions de la classe mère, tu n'as aucun moyen d'accéder à la classe fille. E revanche, si les fonctions sont virtuelles, tu accèdera aux fonctions de la classe fille.

  14. #54
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Salut !

    OK j'ai bien compris... De plus, je viens de potasser un bouquin de C++ là dessus, j'y vois plus clair!
    Par contre, voici une question plus embetante pour moi:

    Pour implémenter une fonction du genre "is_readable (std::string &file)", comme celà est fait dans la FAQ, faut-il créer une classe fichier (pour rester dans l'esprit de la POO), ou bien alors le laisser comme une fonction, et donc créer un fichier outils.cpp où tous ces petits test seront implémentés (moins propre ???)

    Merci !

  15. #55
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Les 2 se défendent, mais je préfèrerais les fonctions libres qu'une classe

  16. #56
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    OK super, je vais donc pas le mettre dans une classe, j'ai déjà assez de problèmes avec le reste!

    Il faut bien le dire, je suis bientôt près de la solution, mais j'hésite encore sur l'architecture globale de mon programme!

    Voici où j'en suis (pièce jointe).
    Ma question est la suivante:
    litCorrespondanceCameraNumero() a besoin de deux paramètres pour fonctionner : nom_composant, et fichier_camera_numero. Elle doit remplir le champ numero_cam dans la classe Camera.
    Est-ce possible d'effectuer cette opération avec ce schéma là?

    Je n'ai pas trop d'idée comment remplir, c'est à dire comment accéder aux variables des autres classes proprement(peut-être par amitié ?)

    Merci beaucoup:

  17. #57
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Une série de set/get ?

  18. #58
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Oui, mais les variables ne sont pas dans la classe ? Je ne peux donc pas faire un simple get ? (cf pièce jointe)
    Ma question est donc : comment accéder aux classes par composition? L'amitié est - elle dans mon cas un bon moyen (cf schéma ?)
    Tu me parlais de pointeurs pour "remonter" ?

  19. #59
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut exemple
    Voici un exemple concret de mon problème :
    En rouge sur le schéma de la pièce jointe, une fonction get qui doit aller chercher une variable dans une autre classe: la classe CFP.

    Est-ce que la déclaration friend est bien adaptée?
    Merci Miles!

  20. #60
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Attends, qu'est-ce que tu fais ? C'est dans Choc qu'il y a la fonctionq ue tu veux appeler, non ? Pourquoi ne peut-elle pas chercher dans ses variables CFP les données que tu veux ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 12 PremièrePremière 1234567 ... DernièreDernière

Discussions similaires

  1. Réponses: 7
    Dernier message: 01/01/2010, 08h31
  2. [POO] d’encapsulation des classe
    Par amazircool dans le forum Langage
    Réponses: 6
    Dernier message: 17/09/2007, 18h33
  3. [POO] Héritage des classes
    Par mic79 dans le forum Langage
    Réponses: 27
    Dernier message: 09/03/2007, 20h02
  4. [POO] Organisation des classes PHP
    Par AsQuel dans le forum Langage
    Réponses: 6
    Dernier message: 16/02/2007, 09h09
  5. [POO] faire des classes en php
    Par gromit83 dans le forum Langage
    Réponses: 2
    Dernier message: 13/04/2006, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo