%% 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]]