Projet : étape 4
Réseau sanguin
Doter chaque hamster d'une vue interne et d'un réseau sanguin.
Concepts
nécessaires: classes, constructeurs/destructeurs, héritage, polymorphisme.
Ces concepts sont expliqués dans les cours 16, 17, 18, 19 , 20 &
21.
Mise en place
L'archive fournie pour cette étape contient contient donc une nouvelle version du
CMakeLists.txt permettant de compiler le matériel de cette partie. Elle contient aussi :
- un programme correspondant à l'application finalisée à ce stade src/Tests/GraphicalTests/FinalApplication.[hpp][cpp];
- de nouveaux fichiers de test situés dans le sous-répertoire src/Tests/;
- une nouvelle version du noyau de simulation Application.[hpp][cpp] dont dériveront tous vos tests de simulation graphiques;
- de nouvelles ressources dans le répertoire de ressources res/.
Vous travaillerez pour cette étape dans le répertoire partie4/.
Description générale des classes à produire
Cette étape importante a pour but principal de créer la vue interne liée à chaque hamster.
A ce stade, cette vue permettra de visualiser le système sanguin irriguant le fragment d'organe.
La vue interne sera discrétisée au moyen d'une grille bi-dimensionnelle. Chaque case de cette grille représentera une superposition de cellules.
Nous voulons en effet, au travers de la vue interne, modéliser le fait que:
- les cellules du fragment d'organe sont supportées par la matrice extra-cellulaire («ECM») et irriguées par des portions du réseau sanguin;
- qu'il se produit des échanges de substances entre l'ECM, les cellules du fragment d'organe et le réseau sanguin, par exemple :
- les cellules saines ou malades consomment du glucose depuis l'ECM pour se diviser et se régénérer ou les cellules cancéreuses diffusent du VGEF sur l'ECM;
- le réseau sanguin consomme du VGEF depuis l'ECM pour s'accroître.
La mise en oeuvre de ce modèle suggère en fait que chaque case de la vue interne va superposer (au plus) trois niveaux différents, le niveau "ECM", le niveau "organe" et le niveau "réseau sanguin" :
De plus :
- chaque niveau va véhiculer des substances (flèches en rouge);
- des échanges de substances auront lieu entre ces différents niveaux (flèches en bleu).
Au vu de ces considérations, nous vous suggérerons lors de cette étape:
- D'introduire une hiérarchie de cellules (classes ECMCell, OrganCell et BloodCell héritant d'une super-classe Cell).
- D'introduire la classe Organ modélisant la vue interne sur un fragment d'organe. Cette vue interne sera discrétisée en un ensembles de cases.
- De faire en sorte que chaque case soit modélisée comme un CellsLayer. Un objet de ce type permet de faire se superposer jusqu'à trois différents types de cellules (organe, sang et ECM).
- D'initialiser chaque fragment d'organe en le dotant d'un réseau sanguin généré selon un algorithme à créer.
Voici, pour résumer, l'essentiel de l'architecture à laquelle vous devrez aboutir au terme de cette étape :
Modules à programmer
Les volets (modules) à mettre en place pour finaliser cette étape sont les suivants :
Cette partie est assez technique. Si au final le code à implémenter n'est pas d'une grand complexité, sa production exigera cependant de votre part un effort de compréhension pour bien saisir les modalités de mise en oeuvres suggérées ainsi que l'utilité des outils qui vous sont fournis. Prenez le temps de bien comprendre la conception suggérée (une petite synthèse «crayon/papier» sera certainement utile) et de réfléchir aux questions posées dans l'énoncé avant d'aborder le codage à proprement parler.
Les modules 2 et 3 restent très guidés afin de vous permettre d'aborder correctement les aspects les plus techniques. Le module 4 sera quant à lui beaucoup plus libre dans sa mise en oeuvre.
Au terme de cette étape, vous disposerez de l'essentiel de l'outillage relatif à la vue interne.
Retour au document principal