%% nav-debut : généré par gen_navigation.py, ne pas modifier à la main %%
> [!nav]
> ↩ [[Code et Développement/Développement d'Applications/Modélisation Jeu Vidéo/Modélisation Jeu Vidéo|Accueil · Modélisation Jeu Vidéo]]
%% nav-fin %%
# 🐟 Travail autonome — Modéliser les classes du projet *Wa-Tor*
Ce travail a pour objectif de vous faire **analyser un système réel**, d’en extraire les objets pertinents, puis de construire **un diagramme de classes UML complet** représentant la dynamique du modèle.
# 🌊 1. Présentation du projet *Wa-Tor*
*Wa-Tor* est un modèle de simulation **proie-prédateur**, utilisé en écologie artificielle et en modélisation des systèmes complexes.
Le monde est représenté par une **grille à deux dimensions**, dans laquelle évoluent deux espèces :
- les **thons** (proies 🐟)
- les **requins** (prédateurs 🦈)
Chaque case de la grille contient **au plus un poisson** (thon *ou* requin).
![[Code et Développement/Développement d'Applications/Modélisation Jeu Vidéo/ressources/Capture d’écran 2025-11-22 à 14.48.33.png]]
# 🎯 2. Règles de fonctionnement du modèle
Le système évolue étape par étape.
À chaque itération :
1. Une **case aléatoire** est sélectionnée dans l’environnement.
2. S’il y a un poisson dans cette case, celui-ci :
- tente de **se déplacer**,
- peut **se reproduire**,
- peut **mourir** (selon des règles propres à son espèce).
L’objectif global est d’observer l’évolution respective des **populations** de thons et de requins au fil du temps.
# 🐟 3. Comportement des thons (proies)
Les thons :
- peuvent se déplacer vers **l’une des 8 cases voisines**
(haut, bas, gauche, droite, et diagonales)
- ne peuvent se déplacer **que si la case est libre**
- se reproduisent selon une **période fixe**
→ après un déplacement réussi, un **nouveau thon apparaît sur la case libérée**
Récapitulatif :
- ✔ Déplacement : uniquement vers une case vide
- ✔ Reproduction : après déplacement, si la période est atteinte
- ✖ Pas de prédation
- ✖ Pas de mort naturelle
# 🦈 4. Comportement des requins (prédateurs)
Les requins :
- peuvent se déplacer vers une des **8 cases voisines**
- la case voisine peut être :
- **libre** → déplacement simple
- **occupée par un thon** → le requin **mange le thon** et prend sa place
- se reproduisent selon une période dédiée
- peuvent **mourir de faim** s’ils ne mangent pas assez souvent
Récapitulatif :
- ✔ Déplacement : vers case libre **ou** occupée par un thon
- ✔ Prédation : mange le thon → réinitialise le compteur de faim
- ✔ Reproduction : même règle que les thons (période propre)
- ✖ Mort de faim : si trop long sans manger
# 🗺️ 5. Structure de l’environnement
L’environnement se modélise par :
- une **grille 2D**
- chaque case contient :
- soit **rien**
- soit un **Thon**
- soit un **Requin**
Le programme doit permettre de :
- sélectionner une position aléatoire
- récupérer l’élément présent
- mettre à jour les déplacements
- gérer les naissances/morts
- suivre les populations au cours du temps
# 🧩 6. Travail demandé : Modélisation UML
À partir des règles ci-dessus, votre objectif est de produire un **diagramme de classes UML complet** représentant fidèlement le modèle *Wa-Tor*.
Votre diagramme doit inclure :
### 🟦 1. Les classes pertinentes
Exemples possibles (liste non exhaustive) :
- Environnement
- Poisson (classe générique ?)
- Thon
- Requin
- Case / Position
- MoteurDeSimulation
- Paramètres / Constantes
### 🟧 2. Les attributs essentiels
Pour chaque classe, identifier :
- les données permanentes
- les compteurs (faim, reproduction…)
- la position dans la grille
- les caractéristiques propres à chaque espèce
### 🟩 3. Les méthodes importantes
Par exemple :
- seDeplacer()
- seReproduire()
- mourir()
- manger()
- choisirCaseVoisine()
- iteration()
- mettreAJourGrille()
### 🟨 4. Les relations UML
- associations
- cardinalités
- compositions (ex. : Environnement → Cases)
- généralisations / spécialisations (héritage)
### 🟥 5. Une hiérarchie cohérente
En particulier :
- Thon et Requin doivent-ils hériter d’une classe Poisson ?
- Environnement doit-il contenir les poissons ou les gérer indirectement ?
- Les règles doivent-elles être contenues dans des classes dédiées ?
# 📝 Corrigé — Diagramme UML officiel du modèle *Wa-Tor*
Voici un corrigé possible, à ne consulter qu’après avoir essayé de modéliser le projet par vous-même.
> [!note]- Corrigé UML
>
> ![[Code et Développement/Développement d'Applications/Modélisation Jeu Vidéo/ressources/Capture d’écran 2025-11-22 à 14.51.38.png]]
# 🟦 1. Classe **Environnement**
### Attributs
- **nbLignes : Entier**
- **nbColonnes : Entier**
### Méthodes
- **Environnement(Entier, Entier, Entier, Entier, Entier, Entier, Entier)**
- **getNbLignes() : Entier**
- **getNbColonnes() : Entier**
- **getTabT(Entier, Entier) : Thon**
- **getTabR(Entier, Entier) : Requin**
- **getNbCases() : Entier**
- **getNbThons() : Entier**
- **getNbRequins() : Entier**
- **evoluer()**
### Relations
- **Environnement 1 — * Thon** (composition)
- **Environnement 1 — * Requin** (composition)
➡️ Les thons et requins n’existent que dans leur environnement.
# 🟩 2. Classe **Thon**
### Attributs
- **vivant : Booléen**
- **cycleDeReproduction : Entier**
- **nbToursAvantReproduction : Entier**
### Méthodes
- **Thon(Entier)**
- **getVivant() : Booléen**
- **getCycleDeReproduction() : Entier**
- **getNbToursAvantReproduction() : Entier**
- **setVivant(Booléen)**
- **setCycleDeReproduction(Entier)**
- **setNbToursAvantReproduction(Entier)**
- **tour()**
Exécute un tour de simulation : déplacement + reproduction
- **reproduire()**
Produit un nouveau thon si condition remplie
- **recopier(Thon)**
Copie l’état d’un autre thon
➡️ **Thon est la classe mère.**
# 🟥 3. Classe **Requin** *(hérite de Thon)*
### Attributs spécifiques
- **cycleDeFamine : Entier**
- **nbToursAvantFamine : Entier**
### Méthodes spécifiques
- **Requin(Entier, Entier)**
- **getNbToursAvantFamine() : Entier**
- **getCycleDeFamine() : Entier**
- **setNbToursAvantFamine(Entier)**
- **setCycleDeFamine(Entier)**
### Méthodes héritées de Thon (et potentiellement redéfinies)
- **tour()**
- **reproduire()**
- **recopier(Requin)**
➡️ Le requin possède les mêmes mécanismes de reproduction que le thon, mais **ajoute sa logique de faim**.
➡️ UML : La flèche `Requin → Thon` signifie que **Requin est une sous-classe de Thon**.
# 🏁 Conclusion du corrigé
Ce modèle UML incorpore correctement :
- la **composition** Environnement → (Thons & Requins)
- la **généralisation** Requin → Thon
- les attributs biologiques (reproduction, famine)
- les méthodes essentielles de simulation
- une modélisation simple et directement implémentable en Java
Ce diagramme constitue la base officielle pour le projet Wa-Tor.
%% nav-debut : généré par gen_navigation.py, ne pas modifier à la main %%
> [!nav]
> ↩ [[Code et Développement/Développement d'Applications/Modélisation Jeu Vidéo/Modélisation Jeu Vidéo|Accueil · Modélisation Jeu Vidéo]]
%% nav-fin %%
---
🗓️ Historique
Dernière mise à jour : `22 novembre 2025`
Rédigé par : [[Julien DUQUENNOY]]