Ben d'abord on a trois classes d'animaux avec leurs signature propres pour se nourrir et se deplacer
Le pretexte est un scenario ou chaque animal a une heure pour manger et une pour se déplacer.
Il s'agit d'une boucle sur les heures et quand son heure de manger ou de se deplacer arrive, l'animal s'execute.
(tout par des sorties standard, le but est de voir l'évolution du code.
Premier temps:
les oiseaux volent et mangent des graines
Les chats marchent et mangent de la viande
Les poissons nagent et mangent des algues
Deuxieme temps:
On abstrait une classe AbstractAnimal avec methodes Manger et seDeplacer génerique (abstraites)
Les trois especes d'animaux héritent de la classe abstraite et les methodes abstraites sont implementees pour permettre le meme appel de méthode pour se deplacer et se nourrir.
à chaque iteration de la boucle des heures, on test pour chaque animal si c'est son heure de manger ou de se deplacer.
Troisieme temps
On ne veut plus tester si c'est l'heure pour l'animal de se deplacer ou de manger, alors on le décore avec les methodes de controle de l'heure, pour qu'il se gere tout seul --> Classe Decorateur animalier
Le décorateur doit pouvoir se substituer à tout, il implemente donc toutes les méthodes et possede les proprietes plus celles qu'on veut apporte en amélioration.