Files
actjavamarclaguerre/README.md
2025-10-07 16:41:03 +02:00

144 lines
3.6 KiB
Markdown

***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