Salut à tous,
Est ce que vous vous servez de l'héritage virtuel?
Dans la mesure où dans les langages type java et c# l'héritage virtuel n'existe pas peux t on dire qu'il s'agit d'une bonne pratique?
Salut à tous,
Est ce que vous vous servez de l'héritage virtuel?
Dans la mesure où dans les langages type java et c# l'héritage virtuel n'existe pas peux t on dire qu'il s'agit d'une bonne pratique?
En Java et C# l'héritage multiple, le plus important raison pour l'existence de l'héritage virtuel, n'existe pas. Je crois que c'est mieux parce que l'héritage multiple de classes peut être la source de beaucoup problèmes. Dans le projets sur lesquelles j'ai travaillé je n'ai jamais vu de cas d'héritage multiple.
Regarde cette faq:
http://www.parashift.com/c++-faq-lit...heritance.html
FAQ.
L'héritage multiple est une solution technique à un problème technique propre au C++, ce n'est pas parce que ca n'existe pas en Java/C# que c'est une mauvaise chose.
Comme dans ces langages, l'héritage multiple n'existe pas, la question ne se pose pas.
La première question est "est-on pour ou contre l'héritage multiple". Si on est pour (comme moi), l'héritage virtuel est indispensable, même s'il ne répond pas à tout. Sinon, il est inutile.
Salut,
+1...
Je vais cependant me permettre d'étayer un peu mon avis.
Pour moi, l'héritage multiple a deux avantages particuliers:
Le premier est qu'il permet de travailler dans ce que je qualifierai volontiers d' "ordre naturel des choses", à savoir de passer l'étape de conception sans devoir tenir compte d'éventuelles restrictions imposées par le langage, et donc d'arriver à l'étape de l'implémentation sans avoir à "retoucher" (modulo les erreurs de conception qui pourraient devenir flagrante) les décisions prises lors de la conception.
Le second tient au fait que C++ ne fait aucune différence entre une classe présentant une interface et une classe instanciable.
L'héritage multiple est donc la seule solution "raisonnable" lorsqu'il s'agit de rajouter des possibilités issues d'une interface à celles issues d'un objet utilisable.
En effet, bien que je sois globalement d'accord avec le principe qui conseille de préférer l'agrégation / la composition à l'héritage chaque fois que c'est possible, il faut avouer qu'il devient rapidement impossible de l'envisager dans le cas que je mets en avant
Partant de là, il semble "normal", même s'il s'agit d'une spécificté propre au C++, de considérer l'héritage multiple comme "une bonne pratique", même s'il est sans doute important de rappeler qu'il ne doit pas être utilisé "n'importe comment".
Seulement, dés le moment où l'on accepte l'idée de l'héritage multiple, il faut être conscient que la problématique de l'héritage "en losange", voire "en diamant" n'est sans doute pas très loin, deux classes appelées à servir de classe de base pouvant, très souvent, hériter d'une classe "ancêtre" commune.
La conséquence logique est... que l'héritage virtuel devient non seulement une "bonne pratique", mais aussi une "pratique indispensable" afin d'éviter les problèmes qui pourraient être liés au fait de se retrouver avec deux (ou plusieurs) classes "ancêtres" venant des différentes classes de base.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager