4 votes

Héritage C++ pour la classe de caractères

J'ai pour mission de recréer un jeu. Je dois mettre en place une liste de personnages. Par exemple, j'ai le Character qui ne contient que le nom du personnage.

Je dois maintenant créer un personnage Warrior qui est un ennemi dans le jeu. Dois-je mettre en œuvre mon héritage de cette manière : Character --> Enemy --> Warrior quand ma classe d'ennemis n'a pratiquement pas d'attributs. C'est plus une classification qu'autre chose.

Est-il possible d'avoir un Enemy et un Warrior définies dans la même classe, où Warrior est du type Enemy qui est du type Character ? Il y aura plus d'ennemis, mais il n'y en aura qu'un seul Warrior .

Remerciements

4voto

Richard Points 5991

Vous dites que la classe ennemie n'a pratiquement pas d'attributs.

C'est le cas aujourd'hui, mais l'une des raisons d'utiliser une classe Enemy et l'héritage est qu'elle permet de mieux anticiper les besoins futurs inconnus du code en intégrant dès à présent une flexibilité (presque) transparente.

Vous pourriez certainement créer un type pour la classe Enemy, mais au fur et à mesure que vous ajouterez des ennemis, vous vous rendrez compte que cette solution nécessite de plus en plus de code sous la forme de switch déclarations et if pour vérifier le type.

2voto

Alan Points 21367

Si tous les Warriors sont des Enemies, et ont toutes les propriétés d'un ennemi, alors oui, il est logique que le Warrior soit une sous-classe de l'Enemy.

Comme certains commentaires l'ont souligné, une chaîne d'héritage compliquée est problématique et asymptomatique d'une mauvaise architecture de programme.

Est-il possible d'avoir un ennemi et un guerrier définis dans la même classe, où le guerrier est de type ennemi, qui est de type personnage ?

Dans la chaîne d'héritage dont nous avons parlé, le guerrier est un type d'ennemi, qui est un type de personnage.

Je pense que vous confondez une classe avec le fichier qui la définit. Vous ne pouvez pas définir une classe qui a deux types. Vous pouvez définir plusieurs classes dans un seul fichier .h et les implémenter dans un seul fichier cpp, mais d'un point de vue stylistique, il est préférable de définir une seule classe dans une seule paire .h/.cpp.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X