first commit
This commit is contained in:
60
travaux/Amphi.java
Normal file
60
travaux/Amphi.java
Normal file
@@ -0,0 +1,60 @@
|
||||
package travaux;
|
||||
import java.util.*;
|
||||
|
||||
public class Amphi extends Salle {
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// PROPRIETES
|
||||
private ArrayList<Salle> sallesVoisines;
|
||||
private int hauteurSousPlafond;
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// CONSTRUCTEURS
|
||||
public Amphi() {
|
||||
sallesVoisines = new ArrayList<Salle>();
|
||||
hauteurSousPlafond = 0;
|
||||
}
|
||||
|
||||
public Amphi(String numSalle, int ht) {
|
||||
setNumero(numSalle);
|
||||
sallesVoisines = new ArrayList<Salle>();
|
||||
hauteurSousPlafond = ht;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// METHODES "INTELLIGENTES"
|
||||
public void afficherInfos() {
|
||||
System.out.println("Amphi :");
|
||||
super.afficherInfos(); // on exécute la méthode de la classe mère
|
||||
|
||||
// on ajoute la liste des salles voisines (numéros)
|
||||
System.out.print("Liste des salles voisines : ");
|
||||
for (Salle s : sallesVoisines) {
|
||||
System.out.println(s.getNumero()+". ");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// METHODES D'ACCES
|
||||
|
||||
public void ajouterVoisine(Salle sa) {
|
||||
sallesVoisines.add(sa);
|
||||
}
|
||||
|
||||
public void supprimerOuverture(Salle sa) {
|
||||
sallesVoisines.remove(sa);
|
||||
}
|
||||
public int getHauteurSousPlafond() {
|
||||
return hauteurSousPlafond;
|
||||
}
|
||||
|
||||
public void setHauteurSousPlafond(int hauteurSousPlafond) {
|
||||
this.hauteurSousPlafond = hauteurSousPlafond;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
60
travaux/Batiment.java
Normal file
60
travaux/Batiment.java
Normal file
@@ -0,0 +1,60 @@
|
||||
package travaux;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class Batiment {
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// PROPRIETES
|
||||
private String nom;
|
||||
private ArrayList<Salle> listeSalles;
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// CONSTRUCTEURS
|
||||
|
||||
public Batiment() {
|
||||
listeSalles = new ArrayList<Salle>();
|
||||
nom = "NC"; // non connu
|
||||
}
|
||||
|
||||
public Batiment(String n) {
|
||||
listeSalles = new ArrayList<Salle>();
|
||||
nom = n;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// METHODES "INTELLIGENTES"
|
||||
|
||||
public void afficherInfos() {
|
||||
System.out.println("Batiment :" + nom);
|
||||
|
||||
System.out.print("Liste des salles : ");
|
||||
for (Salle s : listeSalles) {
|
||||
s.afficherInfos();
|
||||
}
|
||||
|
||||
}
|
||||
//-------------------------------------------------------------------------
|
||||
// METHODES D'ACCES
|
||||
|
||||
public void ajouterSalle(Salle s) {
|
||||
if (s==null) throw(new IllegalArgumentException("La salle ne doit pas être 'null'."));
|
||||
|
||||
listeSalles.add(s);
|
||||
}
|
||||
|
||||
public void supprimerSalle(Salle s) {
|
||||
listeSalles.remove(s);
|
||||
}
|
||||
|
||||
public String getNom() {
|
||||
return nom;
|
||||
}
|
||||
|
||||
public void setNom(String nom) {
|
||||
this.nom = nom;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
33
travaux/Fenetre.java
Normal file
33
travaux/Fenetre.java
Normal file
@@ -0,0 +1,33 @@
|
||||
package travaux;
|
||||
|
||||
public class Fenetre extends Ouverture {
|
||||
|
||||
private Boolean doubleVitrage;
|
||||
|
||||
public Fenetre(String numS, int larg, Responsable s, boolean dv) {
|
||||
super(numS,larg, s);
|
||||
setDoubleVitrage(dv);
|
||||
}
|
||||
|
||||
public Boolean aDoubleVitrage() {
|
||||
super.afficherInfos();
|
||||
if( this.doubleVitrage == true) {
|
||||
System.out.println("Double vitrage: Oui");
|
||||
return true;
|
||||
}else {
|
||||
System.out.println("Double vitrage: Non");
|
||||
return false;
|
||||
}
|
||||
// TODO - implement Fenetre.aDoubleVitrage
|
||||
//throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public Boolean getDoubleVitrage() {
|
||||
return doubleVitrage;
|
||||
}
|
||||
|
||||
public void setDoubleVitrage(Boolean doubleVitrage) {
|
||||
this.doubleVitrage = doubleVitrage;
|
||||
}
|
||||
|
||||
}
|
20
travaux/GestionTravaux.java
Normal file
20
travaux/GestionTravaux.java
Normal file
@@ -0,0 +1,20 @@
|
||||
package travaux;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class GestionTravaux {
|
||||
|
||||
/**
|
||||
* Association Type = Batiment
|
||||
*/
|
||||
private ArrayList<Batiment> listeBatiments;
|
||||
/**
|
||||
* Association Type = Ouverture
|
||||
*/
|
||||
private ArrayList<Ouverture> listeOuvertures;
|
||||
/**
|
||||
* Association Type = Technicien
|
||||
*/
|
||||
private ArrayList<Technicien> listeTechiniciens;
|
||||
|
||||
}
|
70
travaux/Ouverture.java
Normal file
70
travaux/Ouverture.java
Normal file
@@ -0,0 +1,70 @@
|
||||
package travaux;
|
||||
public class Ouverture {
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// PROPRIETES
|
||||
|
||||
private Responsable superviseur;
|
||||
private int largeur;
|
||||
private String numeroSerie;
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// CONSTRUCTEURS
|
||||
|
||||
public Ouverture() {
|
||||
largeur = 0;
|
||||
numeroSerie="NC"; // non connu
|
||||
}
|
||||
|
||||
public Ouverture(String numS, int larg, Responsable s) {
|
||||
largeur = larg;
|
||||
numeroSerie = numS;
|
||||
superviseur = s;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// METHODES "INTELLIGENTES"
|
||||
|
||||
public void afficherInfos() {
|
||||
System.out.println("Ouverture : " + numeroSerie);
|
||||
System.out.println(" largeur : "+ largeur);
|
||||
|
||||
if (superviseur!=null) {
|
||||
// System.out.println(" superviseur : "+ superviseur.getNom()); // a activer plus tard
|
||||
} else {
|
||||
System.out.println(" superviseur : NC" );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// METHODES D'ACCES
|
||||
|
||||
public Responsable getSuperviseur() {
|
||||
return superviseur;
|
||||
}
|
||||
|
||||
public void setSuperviseur(Responsable superviseur) {
|
||||
this.superviseur = superviseur;
|
||||
}
|
||||
|
||||
public int getLargeur() {
|
||||
return largeur;
|
||||
}
|
||||
|
||||
public void setLargeur(int largeur) {
|
||||
this.largeur = largeur;
|
||||
}
|
||||
|
||||
public String getNumeroSerie() {
|
||||
return numeroSerie;
|
||||
}
|
||||
|
||||
public void setNumeroSerie(String numeroSerie) {
|
||||
this.numeroSerie = numeroSerie;
|
||||
}
|
||||
|
||||
}
|
143
travaux/README.md
Normal file
143
travaux/README.md
Normal file
@@ -0,0 +1,143 @@
|
||||
***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
|
28
travaux/Responsable.java
Normal file
28
travaux/Responsable.java
Normal file
@@ -0,0 +1,28 @@
|
||||
package travaux;
|
||||
import java.util.*;
|
||||
|
||||
public class Responsable extends Technicien {
|
||||
|
||||
public Responsable(String nom, int anneesExperience, ArrayList<Ouverture> listeOuvertures) {
|
||||
super(nom, anneesExperience, listeOuvertures);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Association Type = Ouverture
|
||||
*/
|
||||
private ArrayList<Ouverture> listeSupervisions;
|
||||
|
||||
|
||||
|
||||
|
||||
public void getFicheInfo() {
|
||||
// TODO - implement Responsable.getFicheInfo
|
||||
//throw new UnsupportedOperationException();
|
||||
super.getFicheInfo();
|
||||
}
|
||||
|
||||
}
|
64
travaux/Salle.java
Normal file
64
travaux/Salle.java
Normal file
@@ -0,0 +1,64 @@
|
||||
package travaux;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class Salle {
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// PROPRIETES
|
||||
private String numero; // lecture/écriture
|
||||
|
||||
// traduction de l'association entre une salle et ses ouvertures
|
||||
private ArrayList<Ouverture> listeOuvertures;
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// CONSTRUCTEURS
|
||||
public Salle() {
|
||||
listeOuvertures = new ArrayList<Ouverture>(); // ne pas oublier ce new
|
||||
numero = "NC"; // NC pour "non connu"
|
||||
}
|
||||
|
||||
public Salle(String num) {
|
||||
listeOuvertures = new ArrayList<Ouverture>(); // ne pas oublier ce new
|
||||
numero = num;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// METHODES "INTELLIGENTES"
|
||||
public void afficherInfos() {
|
||||
System.out.println("Salle numero : " + numero);
|
||||
System.out.println("Ouvertures : ");
|
||||
|
||||
// Affichage des infos de toutes les ouvertures :
|
||||
// parcours de la liste, et on demander à chaque ouverture de s'afficher
|
||||
for (Ouverture ouv : listeOuvertures) {
|
||||
ouv.afficherInfos();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// METHODES D'ACCES
|
||||
|
||||
public void ajouterOuverture(Ouverture ouv) {
|
||||
listeOuvertures.add(ouv);
|
||||
}
|
||||
|
||||
public void supprimerOuverture(Ouverture ouv) {
|
||||
listeOuvertures.remove(ouv);
|
||||
}
|
||||
|
||||
public String getNumero() {
|
||||
return numero;
|
||||
}
|
||||
|
||||
|
||||
public void setNumero(String numero) {
|
||||
this.numero = numero;
|
||||
}
|
||||
|
||||
|
||||
}
|
51
travaux/Technicien.java
Normal file
51
travaux/Technicien.java
Normal file
@@ -0,0 +1,51 @@
|
||||
package travaux;
|
||||
import java.util.*;
|
||||
|
||||
public class Technicien {
|
||||
|
||||
/**
|
||||
* Association Type = Ouverture
|
||||
*/
|
||||
private ArrayList<Ouverture> listeOuvertures;
|
||||
private String nom;
|
||||
private int anneesExperience;
|
||||
|
||||
public Technicien(String nom,int anneesExperience,ArrayList<Ouverture> listeOuvertures) {
|
||||
setNom(nom);
|
||||
setAnneesExperience( anneesExperience);
|
||||
listeOuvertures = new ArrayList<Ouverture>();
|
||||
}
|
||||
|
||||
public void getFicheInfo() {
|
||||
// TODO - implement Technicien.getFicheInfo
|
||||
//throw new UnsupportedOperationException();
|
||||
System.out.println("INFO TECHNICIEN:");
|
||||
System.out.println("Nom: " +getNom());
|
||||
System.out.println("Annees experience: "+getAnneesExperience());
|
||||
}
|
||||
|
||||
public ArrayList<Ouverture> getListeOuvertures() {
|
||||
return listeOuvertures;
|
||||
}
|
||||
|
||||
public void setListeOuvertures(ArrayList<Ouverture> listeOuvertures) {
|
||||
this.listeOuvertures = listeOuvertures;
|
||||
}
|
||||
|
||||
public String getNom() {
|
||||
return nom;
|
||||
}
|
||||
|
||||
public void setNom(String nom) {
|
||||
this.nom = nom;
|
||||
}
|
||||
|
||||
public int getAnneesExperience() {
|
||||
return anneesExperience;
|
||||
}
|
||||
|
||||
public void setAnneesExperience(int anneesExperience) {
|
||||
this.anneesExperience = anneesExperience;
|
||||
}
|
||||
|
||||
}
|
56
travaux/ZeMain.java
Normal file
56
travaux/ZeMain.java
Normal file
@@ -0,0 +1,56 @@
|
||||
package travaux;
|
||||
|
||||
public class ZeMain {
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println("So far, so good... Yes I can spic ingliche.\n");
|
||||
|
||||
//----------------------------------------------
|
||||
|
||||
Ouverture ouv1 = new Ouverture("ouv 01", 90, null);
|
||||
Ouverture ouv2 = new Ouverture("ouv 02", 70, null);
|
||||
Ouverture ouv3 = new Ouverture("ouv 03", 50, null); // non ajouté, pour test plus tard
|
||||
Ouverture ouv4 = new Ouverture("ouv 04", 180, null);
|
||||
|
||||
Fenetre fen1 = new Fenetre("fen 01", 14, null, false);
|
||||
fen1.aDoubleVitrage();
|
||||
|
||||
Salle salle1 = new Salle("S001");
|
||||
salle1.ajouterOuverture(ouv1);
|
||||
salle1.ajouterOuverture(ouv2);
|
||||
|
||||
|
||||
Amphi amphi1 = new Amphi("A123",500);
|
||||
amphi1.ajouterOuverture(ouv4);
|
||||
|
||||
Batiment bat1 = new Batiment("Usine à pizzas");
|
||||
bat1.ajouterSalle(salle1);
|
||||
bat1.ajouterSalle(amphi1);
|
||||
try {
|
||||
bat1.ajouterSalle(null);
|
||||
}catch(Exception e) {
|
||||
System.out.println("Exception : " + e.getMessage());
|
||||
System.out.println("... on choisir de continuer quand même...");
|
||||
}
|
||||
|
||||
|
||||
System.out.println("\n======= test salle 1 =======");
|
||||
salle1.afficherInfos();
|
||||
|
||||
System.out.println("\n======= test amphi 1 =======");
|
||||
amphi1.afficherInfos();
|
||||
|
||||
System.out.println("\n\n======= test batiment 1 =======");
|
||||
bat1.afficherInfos();
|
||||
|
||||
// Appel qui lève l'exception sans la traiter (plantage) :
|
||||
bat1.ajouterSalle(null);
|
||||
|
||||
//----------------------------------------------
|
||||
|
||||
System.out.println("\n\nFin du prog sans plantage ! Yeees !");
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
11
travaux/correction-ouvertures.iml
Normal file
11
travaux/correction-ouvertures.iml
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$" isTestSource="false" packagePrefix="travaux" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
Reference in New Issue
Block a user