Pages : 1
#1 Le 18/08/2007, à 10:26
- Loack62
Héritage multiple ?
Hello
J'aimerai demander l'avis de personne compétente en C++ au niveau de la conception.
J'aimerai réaliser un moteur 2D basique afin de faire mon jeu. J'en suis pour l'instant au niveau de la conception et voici mon soucis:
- J'ai par exemple une class Player. Cette classe représente le joueur. Le joueur doit être dessiné, et il doit également être soumis aux lois de la physique.
J'avais donc l'intention de faire deux autres classes abstraites:
-> ItemDrawable
-> ItemPhysic
La classe ItemDrawable aurait comme méthode virtuelle: Draw() [ Pour dessiner ];
et ItemPhysic: Update() [ Pour mettre à jour les données ]
A la suite de ça, j'ai deux autres class:
-> PhysicEngine
-> GraphicEngine
La class GraphicEngine contenant un vector de ItemDrawable et PhysicEngine un vector de ItemPhysic.
Mais voilà, pour cela je dois faire hérité ma class Player de 2 autres class.. ItemPhysic et ItemDrawable. J'ai entendu dire que l'héritage de 2 classes étaient pas du tout conseillé. Pensez-vous que je devrai revoir ma conception ? Ou bien dans mon cas cela ne pose pas de problème ?
#2 Le 18/08/2007, à 15:16
- alexduf
Re : Héritage multiple ?
je viens du monde java, et ma réponse serait d'utiliser une Interface. Maintenant ne connaissant pas bien le C++ je ne sais pas si celle-si existent.
En Java une classe peut hériter d'une seule autre classe, mais implémenter autant d'interface que souhaité.
Hors ligne
#3 Le 19/08/2007, à 21:31
- obiwankennedy
Re : Héritage multiple ?
Dans le C++, si ce sont des classes abstraites avec des méthodes abstraites , je dirais qu'il y a pas de soucis. Le grave problème de l'héritage multiple c'est faire hérité une classe D d'une classe C et B et que C et D hérite d'une troisième classe A et donc depuis la classe D on peut arrivé à la classe A par 2 chemin et là gros gros problème il faut bien taquiner le C++ pour s'en sortir mais dans ton cas ça passe.
Dans mes logiciels, j'écris ton nom.
SGNGD: SvgGd is Not GD
Rolisteam
Hors ligne
#4 Le 20/08/2007, à 08:08
- Loack62
Re : Héritage multiple ?
D'accord.
Je vous remercies de vos réponses. Je vais donc continuer comme cela
#5 Le 20/08/2007, à 09:16
- carella
Re : Héritage multiple ?
L'héritage multiple ne pose de problème ......... qu'aux écrivains de compilateur !!!
Conceptuellement c'est une notion excessivement simple à comprendre : quoi de plus naturel que de dire qu'un téléphone portable hérite des classes calculette, agenda, appareil photo, lecteur mp3 .........
Le problème pour le programmeur est un problème de nommage.
Si une classe A hérite de B et C un problème peut survenir si les classes B et C proposent des méthodes ou attributs de même nom. Pour éviter l'ambigüité pour le compilateur il faut renommer ces méthodes (un compilateur sérieux ne laisse pas passer l'appel à une méthode pour laquelle un conflit de nom est détecté)
Un problème à peine plus ardu et qui se résout de la même façon survient quand B et C héritent elles mêmes d'un même ancêtre D (ce cas s'appelle héritage répété). Là encore le renommage doit être utilisé avec quelques astuces à peine plus complexes.
Exemple de hiérarchie de classe répétée :
Soit une classe CONDUCTEUR représentant les conducteurs d'automobile avec comme attributs age et adresse
Soit deux classes CONDUCTEUR_FRANCAIS et CONDUCTEUR_ANGLAIS chacune étant héritière de CONDUCTEUR
Enfin une classe CONDUCTEUR_FRANCAIS_ANGLAIS pour ceux qui vivent dans les deux pays.
Par l'héritage répété CONDUCTEUR_FRANCAIS_ANGLAIS reçoit les attributs du grand père CONDUCTEUR donc age et adresse.
Dans le cas de l'attribut age pas besoin de renommage c'est le même.
Pour adresse il faudra surement renommer avec une clause du genre
Class CONDUCTEUR_FRANCAIS_ANGLAIS
inherit CONDUCTEUR_FRANCAIS
rename
adresse as adresse_francaise
end
inherit CONDUCTEUR_ANGLAIS
rename
adresse as adresse_anglaise
end
Voilà !
Malheureusement je ne connais pas le C++ mais aucun doute que ce genre de mécanisme existe.
je ne peux que conseiller d'avoir la bible de l'objet à côté de soi
Object Oriented Software Construction de Bertrand Meyer
http://archive.eiffel.com/doc/oosc/
Il y a une traduction française que je déconseille
Hors ligne
#6 Le 20/08/2007, à 10:17
- AuraHxC
Re : Héritage multiple ?
Effectivement l'héritage multiple ne pose pas de réel problème.
Hors ligne
#7 Le 20/08/2007, à 13:04
- alexduf
Re : Héritage multiple ?
Je vais donc continuer comme cela
Tu devrais passer le sujet en [Résolu] en éditant le titre de ton premier post sinon la discussion va continuer sans vraiment apporter grand chose ^^
Hors ligne
Pages : 1