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. #21
    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
    D'accord, donc pas virtuelle du tout!!!
    Oui, je me souviens de mes cours de POO en java. L'idée était toujours d'appeler une méthode de la classe mère...
    J'ai un bouquin de C++ avec moi, je vais relire la partie héritage pour être sur de bien tout comprendre...

  2. #22
    Nip
    Nip est déconnecté
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    963
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 963
    Par défaut
    Rapidement de mon cote:
    1) Dans quels cas faire hériter une classe d'une autre?
    On va partir du principe que tu parles de l'heritage d'implementation et dans ce cas je dirai jamais! Les raisons en vrac: rupture de l'encapsulation, couplage fort, semantique aleatoire, baisse de la flexibilite et complexite augmentee.
    Les alternatives: interface et composition


    2) Une classe avec une seule variable est-elle abbérante?
    Comme Miles, un seul attribut dans la classe, pas abberant, mais une seule methode oui

    3) Une classe peut-elle contenir des données qui ne pas vraiment propre à elle? (exemple : dans mon cas, une classe Composant qui contiendrait une variable numero_experience...)
    Elle peut (tout) mais c'est pas bien mais la dessus les explications de Miles sont claires.

  3. #23
    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
    Ouf, j'ai presque pas tout faux

  4. #24
    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
    Merci à tous pour vos réponses!

    Citation Envoyé par Nip
    Rapidement de mon cote:
    On va partir du principe que tu parles de l'heritage d'implementation et dans ce cas je dirai jamais! Les raisons en vrac: rupture de l'encapsulation, couplage fort, semantique aleatoire, baisse de la flexibilite et complexite augmentee.
    Les alternatives: interface et composition
    Je suppose que tu parles là de deux classes bien différentes non???
    Car j'ai jamais vu l'héritage de deux classes faire une rupture d'encapsulation
    Mais bon, je suis loin de tout connaitre sur le sujet !

    Je pourrai avoir juste un soupçon d'explications? Je potasse de mon côté un bouquin de C++!

    Merci!

  5. #25
    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
    Si, en fait tu rompts l'encapsulation de la classe mère car ce qui est protected peut être accédé sans passer par les fonctions publiques de la classe mère, donc à moins que tu ne le veuilles expressément pour des raisons louables, c'est à éviter.

  6. #26
    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
    Tu veux dire, si je redéfinie des méthodes dans la classe fille c'est ça?
    Normalement, la classe fille appelle une méthode de la classe mère... ou alors je comprend plus rien à la programmation ?

  7. #27
    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
    Par exemple, la classe mère a des fonctions protected qui sont appelées dans un ordre avec des préconditions et des postconditions.
    Si tu hérites de cette classe, tu pourrais accéder à ces fonctions directement, ce qui n'est pas forcément judicieux si tu ne sais pas les préconditions et les postconditions.
    Ou pire, tu le sais et tu programmes bien, mais qqn va hériter de TA classe de la même manière et mettre le souc partout...

  8. #28
    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
    Hum.... oui je comprend!
    Mais alors comment gérer correctement?
    Une fonction fille doit quand même appeler un méthode de sa fonction mère, non???

  9. #29
    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
    Oui, mais si tu ne veux pas avoir de problème, genre j'appelle une méthode qui ne fait pas partie de l'interface publique de la classe, ie qui ne devrait pas être appelée à moins que l'on sache exactement ce que l'on veut, on passe par la composition, par exemple.
    Tu prends une instance de la classe anciennement mère comme variable interne de ton objet, que ce soit directement ou un pointeur.

  10. #30
    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
    Miles, normalement on peut pas appeler une méthode non publique?
    Bon, je crois que je vais continuer à lire mon bouquin de C++, et après je poserai des questions si nécessaire!
    Je comprends pas tout bien encore!

  11. #31
    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
    Si tu as hérité de cette classe, tu peux appeler les méthodes protected.
    Mais comme dit, l'héritage ne doit être utilisé que lorsque le nouvel élément peut se comporter comme le parent.

  12. #32
    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 je suis d'accord Miles!
    Juste un truc, sur la base, est-ce que tu trouves ça une bonne idée de recoder un projet en POO?
    Ce donne un code plus clair, non?

    Dès que j'ai une architecture de programme, je vous la fait savoir....

    Merci

  13. #33
    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
    Oui, je vais bientôt sortir un tuto de refactoring sur un projet/tuto DVP que j'ai passé de C vers C++

  14. #34
    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
    Bonne nouvelle !
    Moi ca serait du C++ vers du C++ objet !!!
    A la base, j'utilisais quand même les conteneurs standards, mais les classes, c'est vraiment pas mal...

    @+

  15. #35
    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
    En fait, avec peu de changements, un code C peut se compiler en C++, donc ça ira

  16. #36
    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
    Sur la base, je vais partir d'un schéma comme celui de la pièce jointe.

    J'ai donc mis une instance de CFP (composant face au plasma) dans choc (jargon d'une expérience).
    De CFP, je fais hériter deux classes : Antenne et LPT qui sont deux types d'objet face au plasma.

    Ca me parait pas mal, non?

    Je suis en train de me pencher sur l'implémentation des méthodes pour ne pas faire d'erreur...

    EDIT : Le fait de mettre en private CFP est - il souhaitable?
    Schéma mis à jour plus loin!

  17. #37
    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
    Ca l'air d'être un bon début

  18. #38
    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
    Miles, j'ai deux trois questions de débutant (cf nouveau schéma post précédent).

    1) Les variables privées comme ça c'est OK ?

    2) Les classes filles peuvent-elle avoir des variables qui ne sont pas dans la classe mère? Si oui, est-ce souhaitable? (en fait je ne pense pas que ce soit pas possible, mais n'étant pas sur...)

    3) Les classes choc et PDC sont un peu "toutes seules" non?

  19. #39
    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
    Ca a l'air correct
    Oui, les classes filles peuvent avoir pleins de variables différentes, la classe mère n'aura que les points communs, en gros.

  20. #40
    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 !
    Une question plus "pointue": l'instance CFP qui est dans la classe choc aura t-elle accès à la variable numero_choc?

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 12 PremièrePremière 123456 ... 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