***Fichier généré par IA à partir des sources et de la liste des commits*** # TP Ouvertures - Cheminement pédagogique Ce projet illustre la construction progressive d'un système de gestion de bâtiments avec leurs salles et ouvertures. L'historique Git permet de retrouver chaque étape du développement. ## Parcours des étapes ### Étape 00 - Démarrage du projet **Tag:** `etape00` - Classes importées initialement - Pas de méthode main - Définition du package non faite **Concepts abordés:** Structure initiale d'un projet Java --- ### Étape 01 - Première classe exécutable **Tag:** `etape01` - Ajout de la classe `ZeMain` avec une méthode `static void main` **Concepts abordés:** Point d'entrée d'une application Java --- ### Étape 02 - Développement de la classe Salle **Tag:** `etape02` - Implémentation complète de la classe `Salle` - Ajout des propriétés (numéro, liste des ouvertures) - Création des constructeurs (par défaut et paramétré) - Méthodes d'accès (getters/setters) - Méthode `afficherInfos()` **Concepts abordés:** - Encapsulation - Constructeurs - Collections (ArrayList) - Association entre classes --- ### Étape 03 - Spécialisation avec la classe Amphi **Tag:** `etape03` - Implémentation de la classe `Amphi` qui hérite de `Salle` - Ajout de propriétés spécifiques (hauteurSousPlafond, sallesVoisines) - Redéfinition de la méthode `afficherInfos()` **Concepts abordés:** - Héritage - Spécialisation - Redéfinition de méthodes (override) - Utilisation de `super` --- ### Étape 04 - Tests et validation **Tag:** `etape04` - Tests dans le main pour `Ouverture`, `Salle` et `Amphi` - Création d'instances - Tests des méthodes d'affichage **Concepts abordés:** - Tests manuels - Instanciation d'objets - Manipulation des collections --- ### Étape 05 - Gestion des bâtiments **Tag:** `etape05` - Implémentation de la classe `Batiment` - Gestion d'une liste de salles - Ajout de tests dans le main **Concepts abordés:** - Composition - Navigation dans les associations - Agrégation d'objets --- ### Étape 06 - Gestion des exceptions **Tag:** `etape06` (HEAD) - Ajout d'une levée d'exception dans `Batiment::ajouterSalle(Salle s)` - Exemple de traitement d'exception dans le main avec try/catch - Validation des paramètres (vérification de null) **Concepts abordés:** - Gestion des exceptions en Java - `throw` et `IllegalArgumentException` - Blocs try/catch - Validation des entrées - Différence entre exception traitée et non traitée --- ## Navigation dans l'historique Pour revenir à une étape spécifique : ```bash git checkout etape00 # Remplacer par le numéro d'étape souhaité ``` Pour revenir à la version finale : ```bash git checkout master ``` Pour voir les différences entre deux étapes : ```bash git diff etape02 etape03 ``` ## Structure du projet ``` src/travaux/ ├── ZeMain.java # Point d'entrée avec tests ├── Ouverture.java # Classe de base pour fenêtres/portes ├── Salle.java # Classe représentant une salle ├── Amphi.java # Spécialisation de Salle ├── Batiment.java # Agrégation de salles ├── Responsable.java # (non utilisé dans ce TP) └── autres classes... ``` ## Concepts Java couverts 1. **POO de base:** Classes, objets, encapsulation 2. **Constructeurs:** Par défaut et paramétrés 3. **Collections:** ArrayList et manipulation 4. **Héritage:** Extension de classes, super 5. **Polymorphisme:** Redéfinition de méthodes 6. **Exceptions:** Levée et traitement 7. **Associations:** Composition et agrégation