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 :

heritage multiple


Sujet :

C++

  1. #1
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut heritage multiple
    Bonjour à tous,

    je n'aime pas utiliser l'héritage multiple. Je trouve que cela rend le code complexe et rend sa maintenance plus difficile. Même du point de vue de l'architecture, je ne trouve pas que ce soit "élégant".

    Cependant, certains collègues m'assurent que dans certains cas, l'utilisation de l'héritage multiple est largement préférable à toute autre solution. Depuis, je ne cesse de me torturer les méninges, et je ne trouve aucun exemple précis qui vérifierait cela.

    Du coup, j'aurais bien aimé avoir votre avis sur la question:
    * A votre avis, l'héritage multiple (en c++ bien évidemment) est-il "une bonne chose"? Quels en sont les avantages?
    * Connaissez-vous des exemples concrets où l'utilisation de l'héritage multiple est préférable à toute autre solution?

    Merci pour votre participation
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Est-ce une bonne chose ?
    Si c'est utilisé raisonnablement et de manière utile, oui

    Je pense que là où l'héritage multiple est vraiment nécessaire, c'est surtout pour l'interfaçage...

    exemple, tu as deux classes ISerializable et ICloneable qui fournissent les interfaces pour Sérialiser (sauvegarder les données d'un objet sous forme de chaine de caractère) et Cloner un objet

    si tu dois créer une classe Sérialisable ET Clonable, alors l'héritage des deux interfaces et la meilleur solution (à mon sens...)

    (ok, j'ai repompé un truc de C#, mais bon, c'est pour l'exemple hein )
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  3. #3
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    +1 pour les interfaces (COM, ou classes de base abstraites). Mais c'est de l'héritage fonctionnel, à la manière des interfaces Java. La spécificité du C++ c'est l'héritage structurel multiple. Et moi aussi je trouve cette utilisation plus restreinte.
    Mais elle existe, et est justifiée. Pour la "mise en commun" de bibliothèques notamment. Typiquement, tu as un toolkit qui gère les fenêtres etc... et une autre bibliothèque qui fait du rendu 3D. Elle affiche dans sa propre fenêtre 3D, toute seule.
    Comment intégrer cette fenêtre 3D dans ton appli 2D, développée avec une autre lib ?
    L'héritage multiple est une solution élégante, car tu peux créer une seule classe qui se comporte à la fois comme une fenêtre du toolkit 2D et comme une fenêtre de rendu de la lib 3D. Sans cela, il faut créer une fenêtre 2D avec une fonction membre Get3DWindow() pour le rendu. C'est moins élégant...

  4. #4
    Membre expérimenté Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 886
    Points : 1 526
    Points
    1 526
    Par défaut
    Citation Envoyé par r0d
    * Connaissez-vous des exemples concrets où l'utilisation de l'héritage multiple est préférable à toute autre solution?
    Voir les design patterns (je pense notament à l' "adaptateur"). L'héritage multiple est indispensable à tout projet un peu complexe, et quand ça n'y est pas, c'est un handicap certain (java, vcl, par exemple).

  5. #5
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    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 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Ceci est un lien intéressant sur le sujet (à lire)
    http://www.ddj.com/184402074

    Sinon, ils t'ont parlé de l'héritage d'interfaces. Je pourrais en rajouter une couche sur les contrats, le est-un VS le implémenté-en-termes-de. Mais là, il est un peu trop tard pour aborder ces aspects OO non propres au C++.
    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...

  6. #6
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Merci pour vos réponses

    Au fait, l'héritage multiple sera-t-il possible en c++0x ?

    [edit]Je suis en train de lire le lien, c'est, en effet, vraiment très intéressant. Merci pour ce lien[/edit]
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  7. #7
    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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Il n'y a aucune raison que ce soit supprimé, tout le code écrit à ce jour doit rester compatible, donc ça restera.

Discussions similaires

  1. C++ : Heritage multiple mais de même base.
    Par hpfx dans le forum C++
    Réponses: 28
    Dernier message: 12/07/2007, 13h28
  2. [C#] Heritage multiple -> comment faire autrement
    Par schnourf dans le forum Windows Forms
    Réponses: 14
    Dernier message: 03/10/2006, 15h14
  3. [POO] Héritage multiple Parent
    Par djshaker dans le forum Langage
    Réponses: 15
    Dernier message: 15/03/2006, 17h35
  4. Réponses: 9
    Dernier message: 25/05/2005, 18h17
  5. [Kylix] heritage multiple et interfaces :(
    Par le_barbu dans le forum EDI
    Réponses: 4
    Dernier message: 26/01/2004, 19h30

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