TP1 : Le patron Observer

De $1

Version de 23:49, 28 Avr 2024

cette version.

Revenir à liste des archives.

Voir la version actuelle

Introduction exhaustive au projet

L'objectif de ce TP est de vous familiariser avec le projet "creatureSimulator" et de vous apprendre à implémenter un pattern Observer.

Pour cela nous vous proposons de prendre en main le projet "creatureSimulator". Ce projet vise à créer un environnement de simulation pour des créatures. L'archive que nous vous donnons contient les 4 packages principaux du projet (décrit ci-dessous) et un package contenant une classe de lancement de la simulation :

  • creatures : gère les classes concernant les créatures ;
  • creatures.visual : gère la visualisation des créatures ;
  • simulator : gère le moteur de simulation ;
  • visual : gère le moteur de visualisation.

Nous décrivons dans la suite l'ensemble des classes et interfaces du projet représentés dans la figure ci-dessous. td1.png

Package Creature

Ce package contient l'ensemble des informations pour la manipulation (la simulation) des créatures.

Il contient les fichiers suivants :

  • ICreature : interface définissant les méthodes qu'une créature doit exposer ;
  • AbstractCreature : classe abstraite implémentant la majorité des méthodes d'une créature pour un environnement donné (voir package creatures.visual)
  • StupidCreature : classe représentant une créature "stupide" càd se déplaçant en suivant toujours sa trajectoire initiale.
ICreature

Cette interface définit les méthodes qu'une créature doit exposer pour donner son environnement, sa vitesse, sa direction et sa position.

ICreature hérite de l'interface IActionable (voir package simulator) : une créature peut être simulée au sein du moteur de simulation.

AbstractCreature

Une créature possède tous les attributs qui lui permettent de se positionner dans un environnement (position et environment), de se déplacer (speed et direction), d'interagir avec d'autres créatures (fieldOfView -> champ de vision et visionDistance) et d'être représentée à l'écran (size et color).

Elle possède également deux méthodes protégées (et donc accessibles dans les classes héritées) pour se mouvoir (move) et tourner (rotate). 

Enfin, une méthode permettant de dessiner la créature (selon sa taille et son champ de vision) est également fournie (paint).

StupidCreature

L'implémentation de cette créature consiste uniquement en l'implémentation de la méthode act() requis par l'interface IActionable. Dans le cadre de la StupidCreature, cette méthode fait se déplacer la créature en utilisant sa vitesse et sa direction. 

 

Déroulement