Projet : étape 3
«Élevage de hamsters»

But: Simuler des hamsters «élevés» en laboratoire pouvant se déplacer dans les cages et se nourrir.

Au terme de cette étape, les fonctionnalités nécessaires à visualiser le niveau externe de la simulation seront toutes mises en oeuvre.

Concepts nécessaires: classes, constructeurs/destructeurs, surcharge d'opérateurs, héritage et polymorphisme.


Mise en place

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

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

Description générale des classes à produire

Le contenu du laboratoire est jusqu'ici plutôt rudimentaire puisque nous ne pouvons «élever» qu'un hamster et y placer un unique tas de granulés.

L'une des premiers objectifs de cette étape est de tirer profit du polymorphisme pour gérer de façon unifiée aussi bien les animaux que d'autres entités qu'il serait envisageable de placer dans le laboratoire.

Nous allons donc commencer par réviser notre conception de sorte à remplacer l'unique hamster et l'unique de tas de granulés par un ensemble général d'entités simulables (Entity).

Nous allons ensuite entreprendre de «donner vie» à nos hamsters de sorte à ce qu'ils puissent se déplacer et se nourrir. Avant de leur permettre de se déplacer, nous allons (méchamment) garantir qu'ils ne peuvent pas s'échapper des cages où ils sont élevés.

Mettre en oeuvre la consommation de nourriture implique que les animaux deviennent capables de reconnaître les situations où ils rencontrent (sont en collision avec ) des sources de nourriture. Nous allons donc commencer aussi à tirer parti du matériel codé lors de la première étape du projet, à savoir la classe CircularBody.

Pour cette étape, il n'y aura pas de nouvelles classes suggérées, mais de nombreux ajouts à celle existantes. Ces dernières se verront aussi généralisées dans leur fonctionnement grâce au polymorphisme. Voici, pour résumer, l'essentiel de 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 et notamment de ne pas donnant d'accès publics ou protégés à vos attributs. Vous vous préoccuperez aussi systématiquement des destructeurs.

Modules à programmer

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

Ces différents volets ne sont pas tous de même difficulté ni longueur. Avant de vous lancer dans le codage, veillez à bien comprendre les développements qui vous sont suggérés (faites des petits schémas de votre architecture en plaçant attributs et méthodes aux bons endroits, par exemple). La fin du volet 3 est délibérément un peu moins guidé que les précédents et nécessite un peu plus de réflexion de votre part.

Au terme de cette étape vous aurez achevé le codage de la vue externe de la simulation :

Image: élevage de hamsters

Retour au document principal