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 :

Appel d'une méthode non partagee par toutes les sous classes


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de b Oo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 179
    Par défaut Appel d'une méthode non partagee par toutes les sous classes
    Bonjour,
    j'ai une hiérarchie de classes de ce style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
                                        A
                                    /       \
                                  B           E  
                              /      \      /   \
                            C          D   E1  E2         
                          /   \      /   \ 
                        C1     C2   D1  D2                                             
     
    A, B, E, C, D sont abstraites.
    C1,C2 sont les classes qui héritent de C et qui sont concretes
    de même pour D1, ...
    J'ai un conteneur monConteneur de A *. B possède une méthode toto et E non.
    Je voudrais pour chaque élément de monConteur appelé la méthode toto si c'est un B.
    Existe t-il une méthode propre de faire ceci ?
    Pour l'instant je ne vois que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    pour tout les elément de monConteneur faire
       si classMereDeElementCourant = b alors
          appeler toto

  2. #2
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Quand on veut réaliser ce genre de choses, souvent, c'est que l'on a foiré son design.
    Sinon, un visiteur peut-être ?
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  3. #3
    Membre confirmé Avatar de b Oo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 179
    Par défaut
    Arf c'est bien ce que je craignais , ma conception n'est pas bonne.

    En fait B et E ne devrait pas etre des classes filles de A mais A devrait contenir des B et des E.

    Luc j'aimerais savoir s'il y a quelques règles pour choisir entre héritage et composition (lorsque les 2 solutions semblent envisageables).

    Je sais qu'il est recommandé de faire de la composition plutôt que de l'heritage lorsqu'on a le choix mais je ne sais pas vraiment pourquoi.

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Bah c'est relativement simple.
    Si B est un sous-type de A alors tu dérives. Sinon, non.

  5. #5
    Membre confirmé Avatar de b Oo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 179
    Par défaut
    Par exemple si tu as une classe Personne.
    Si je fais une classe PersonneAgee et JeunePersonne.
    Tu fais un héritage ou une composition ?
    On peut le voir des 2 manieres non ?
    (tu vas me dire que tu fais de l'héritage)

  6. #6
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Aucun des deux. Je stocke l'âge et en aucun cas je ne spécialise cette classe de la sorte.
    Je ne te raconte pas la compléxité du changement de type d'une "grosse" entité au fil de son évolution. jeune -> "..." -> agé
    Je préfère avoir un trait del'entité qui au besoin changera de catégorie/type.

    Je pense que tu devrais utiliser un exemple moins générique.

    Le choix sinon ? Hum...
    * modélisation de la relation "est-un", mise en oeuvre d'une subtituabilité, .. => héritage public
    * réutilisation de code
    - couplage statique et fort acceptable => héritage privé
    - sinon, 90% du temps => composition

    Pour les cas intermédiaires, cela dépend. Toujours est-il que j'évite au maximum l'héritage public quand le LSP (recherche avancée!) n'est pas recherché, et qu'il ne peut pas être correctement mis en oeuvre.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Une méthode non-supportée par OpenJDK ?
    Par PyNub dans le forum Langage
    Réponses: 2
    Dernier message: 20/04/2013, 10h14
  2. Lister toutes les sous-classes d'un classe mère
    Par Kerod dans le forum Langage
    Réponses: 10
    Dernier message: 09/02/2009, 19h21
  3. Réponses: 7
    Dernier message: 30/08/2007, 14h17
  4. [POO] appel d'une méthode d'un autre fichier, le tout objet
    Par aaaaaaaa dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 13/07/2007, 18h43

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