144 lines
3.6 KiB
Markdown
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
|