Projet : étape 2
Laboratoire

But: Modéliser un laboratoire pouvant contenir des hamsters, des portions de granulés et des cages.

Concepts nécessaires: classes, constructeurs/destructeurs, surcharge d'opérateurs, héritage (et bases du polymorphisme)

Ces concepts sont expliqués dans les cours 16, 17, 18, 19 & 20.

Mise en place

L'archive fournie pour cette étape contient donc une nouvelle version du fichier CMakeLists.txt permettant de compiler le matériel de cette partie. Elle contient aussi  :

Vous travaillerez pour cette étape dans le répertoire partie2/.

Comme pour l'étape précédente, le prototypage des méthodes et la déclaration des attributs se trouveront dans un fichier avec l'extension .hpp tandis que leurs définitions se trouveront dans un fichier avec l'extension .cpp.

L'énoncé du projet est conçu de sorte à ce que votre projet puisse compiler avec le fichier CMakeLists.txt fourni dans le dossier src/partie2. Pour assurer la compatibilité de vos classes avec les fichiers de tests fournis, il faudra donner à vos fichiers le même nom que les classes qu'ils contiennent. Par exemple, la classe Animal sera codée dans les fichiers Animal.[hpp][cpp]

Il faudra procéder de la sorte tout au long du projet.

(si vous n'optez pas pour ce choix, il faudra adapter par vous-même les fichiers de test fournis).

Description générale des classes à produire

Il s'agit ici de modéliser la vue externe de notre simulation, à savoir un laboratoire (classe Lab) pouvant contenir des cages (classe Cage) et où évolueront des hamsters (classe Hamster) qui consommeront des portions de granulés (classe Pellets).

Nous partirons sur une modélisation plus générale des entités simulées en tirant profit de la notion d'héritage  : les classes Hamster et Pellets dériveront de super-classes (classes Entity et Animal).

Pour cette partie, il est délibérément décidé de ne pas recourir au collection hétérogènes et de n'utiliser le polymorphisme que de façon minimaliste. Il s'agit essentiellement de pratiquer la notion d'héritage en dehors de ce cadre. Ceci permettra de bien appréhender l'apport du polymorphisme à l'étape suivante.

A cette étape vous commencerez à utiliser vos premières applications graphiques. Une classe Application.[hpp][cpp] est fournie; elle servira de base à tous vos tests de simulation graphiques.

Voici, pour résumer, l'architecture à laquelle vous devrez aboutir au terme de cette étape :

Modele

Procédons donc maintenant au début du codage. Dans votre programme, vous veillerez à encapsuler proprement vos classes, notamment en ne donnant pas d'accès public ou protected à vos attributs. Vous fournirez aussi systématiquement les destructeurs.

Les descriptions qui vous sont suggérées ci-dessous sont minimales. Il s'agit d'une première ébauche que nous serons amenés à affiner au fur et à mesure que le projet progressera. Libre à vous également d'y ajouter par la suite les méthodes et attributs supplémentaires qui vous semblent nécessaires.

Modules à programmer

Les volets (modules) à mettre en place pour finaliser cette étape sont les suivants :

Au terme de cette étape, vous disposerez d'un environnement de simulation basique vous permettant de couvrir la surface d'un laboratoire de cages (dont le nombre pourra être choisi interactivement) et d'y placer un hamster et une portion de granulés :
Modele

Un «laboratoire» avec 4 cages, un hamster et une portion de granulés

Le hamster et la portion de granulés «évolueront» au cours du temps de façon minimale : ils prendront de l'âge et disparaîtront automatiquement de la simulation dans certaines situations. Le placement des entités simulées ne tient pas encore compte de l'existence des boîtes.


Retour au document principal