OOP : Créer objets de types distincts mais dérivés d'un type commun

OOP : Créer objets de types distincts mais dérivés d'un type commun - C++ - Programmation

Marsh Posté le 17-11-2002 à 14:32:25    

J'ai une list déclarée ainsi :
list<Sprite>
Sprite étant un type ayant une position une vitesse, etc... mais aucune spécificité. Pour modéliser un certain type de sprite, j'ai fait des classes dérivées de Sprite. Mais est-ce que je vais pouvoir stocker dans cette liste des dérivés de Sprite, ou alors il va falloir que je fasse une liste de pointeurs a la place?


Message édité par Ace17 le 19-11-2002 à 18:49:16
Reply

Marsh Posté le 17-11-2002 à 14:32:25   

Reply

Marsh Posté le 17-11-2002 à 14:49:52    

tu dois mettre des pointeurs dans ta liste. Qd tu ecris
std::list<Sprite>, tu stocke dans ta liste des objets de type sprite ce qui signifie que tu passe par recopie et donc perds toute specificité.

Reply

Marsh Posté le 17-11-2002 à 14:52:56    

ok, merci :hello:

Reply

Marsh Posté le 17-11-2002 à 16:10:58    

du polymorphisme a fond. oublies pas de declarer tes fonctions virtuelles et surtout le destructeur


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 17-11-2002 à 17:34:28    

Taz@PPC a écrit a écrit :

du polymorphisme a fond. oublies pas de declarer tes fonctions virtuelles et surtout le destructeur




 
merci du conseil :)

Reply

Marsh Posté le 17-11-2002 à 19:05:53    

si t'as des doutes ou que tu veux soumettre ton code, n'hesite pas


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 18-11-2002 à 21:38:38    

Ouais, y'a un truc qui me chiffone. Comme c'est l'user qui définit quel type de sprite il veut créer, et que chaque type de sprite, bien que dérivé, est quand meme un type a part entiere, comment dois-je faire pour la création? Un grand switch? Ou y'a-t-il un moyen plus propre?

Reply

Marsh Posté le 19-11-2002 à 07:10:14    

je pense


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 19-11-2002 à 18:33:06    

Taz@PPC a écrit a écrit :

je pense




et tu penses quoi? :D

Reply

Marsh Posté le 19-11-2002 à 19:41:11    

Le Grand Switch, ça s'appelle une Factory.
 
"Que le Grand Switch me swotche" disait un illustre (de) Hadoque. Enfin, quelque chose comme ça...  :D

Reply

Marsh Posté le 19-11-2002 à 19:41:11   

Reply

Marsh Posté le 21-11-2002 à 14:28:00    

Ace17 a écrit a écrit :

Ouais, y'a un truc qui me chiffone. Comme c'est l'user qui définit quel type de sprite il veut créer, et que chaque type de sprite, bien que dérivé, est quand meme un type a part entiere, comment dois-je faire pour la création? Un grand switch? Ou y'a-t-il un moyen plus propre?




 
Comme l'a indique BifaceMcLoad, ca s'appelle une factory. Il existe aussi des VirtualFactories qui remplacent le switch par des classes derivee (de SpriteFactory par ex) Ces classes peuvent par exemple decrire chaque sprite et comporter une methode virtuelle CreateSprite qui instancie le bon sprite.
 
On peut meme ne faire qu'une seule classe avec une methode vituelle Clone qui instancie une copie du sprite en question.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed