Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| sio:bloc2:2a:td0 [2026/08/21 12:04] – [Points de vigilance] jcheron | sio:bloc2:2a:td0 [2026/08/26 10:31] (Version actuelle) – jcheron | ||
|---|---|---|---|
| Ligne 272: | Ligne 272: | ||
| ---- | ---- | ||
| + | ==== Héritage ==== | ||
| + | < | ||
| + | <uml> | ||
| + | @startuml | ||
| + | |||
| + | title Diagramme de classes - Gestion de caserne de pompiers (V3) | ||
| + | |||
| + | abstract class Pompier { | ||
| + | - matricule: String | ||
| + | - nom: String | ||
| + | - prenom: String | ||
| + | - grade: String | ||
| + | - disponible: boolean | ||
| + | -- | ||
| + | + Pompier(matricule: | ||
| + | -- | ||
| + | + isDisponible(): | ||
| + | + setDisponible(disponible: | ||
| + | + getMatricule(): | ||
| + | + getNom(): String | ||
| + | + getPrenom(): | ||
| + | + getGrade(): String | ||
| + | + toString(): String | ||
| + | } | ||
| + | |||
| + | class PompierProfessionnel { | ||
| + | - salaireBase: | ||
| + | -- | ||
| + | + PompierProfessionnel(matricule: | ||
| + | -- | ||
| + | + getSalaireBase(): | ||
| + | } | ||
| + | |||
| + | class PompierVolontaire { | ||
| + | - employeur: String | ||
| + | - heureDebutTravail: | ||
| + | - heureFinTravail: | ||
| + | - quotaHeuresMensuel: | ||
| + | - heuresEffectueesMoisCourant: | ||
| + | -- | ||
| + | + PompierVolontaire(matricule: | ||
| + | -- | ||
| + | + isDisponible(): | ||
| + | + ajouterHeuresIntervention(heures: | ||
| + | - estEnHorairesTravail(): | ||
| + | + getEmployeur(): | ||
| + | + getHeuresEffectueesMoisCourant(): | ||
| + | } | ||
| + | |||
| + | Pompier <|-- PompierProfessionnel | ||
| + | Pompier <|-- PompierVolontaire | ||
| + | |||
| + | class Caserne { | ||
| + | - nomCaserne: String | ||
| + | - pompiers: List< | ||
| + | -- | ||
| + | + Caserne(nomCaserne: | ||
| + | -- | ||
| + | + ajouterPompier(p: | ||
| + | + nombrePompiersDisponibles(): | ||
| + | + afficherEffectif(): | ||
| + | + rechercherParMatricule(matricule: | ||
| + | } | ||
| + | |||
| + | Caserne " | ||
| + | |||
| + | note on link | ||
| + | Agrégation : le Pompier existe indépendamment de la Caserne | ||
| + | (pas de dépendance dans le constructeur). | ||
| + | end note | ||
| + | |||
| + | @enduml | ||
| + | |||
| + | </ | ||
| + | < | ||
| + | |||
| + | ===== Evolutions ===== | ||
| + | |||
| + | ==== Encapsulation ==== | ||
| + | |||
| + | * Ajoutez à Pompier un attribut privé dateEmbauche: | ||
| + | * Ajoutez une méthode distanceVers(autre: | ||
| + | |||
| + | ==== Héritage ==== | ||
| + | Ajoutez à PompierProfessionnel une redéfinition de méthode manquante : une méthode calculerSalaireMensuel(): | ||
| + | |||
| + | * PompierProfessionnel → salaireBase + prime d' | ||
| + | * PompierVolontaire → heuresEffectueesMoisCourant * tauxHoraire (il faudra ajouter tauxHoraire) | ||
| + | |||
| + | Créer une classe Officier héritant de PompierProfessionnel avec : | ||
| + | * un attribut primeCommandement: | ||
| + | * une redéfinition de calculerSalaireMensuel() qui appelle super.calculerSalaireMensuel() et ajoute la prime | ||
| + | * une redéfinition de toString() qui appelle super.toString() et ajoute la mention du grade d' | ||
| + | |||
| + | |||
| + | Ajoutez à Pompier une méthode abstraite peutIntervenirSur(type: | ||
| + | |||
| + | * PompierProfessionnel → toujours true | ||
| + | * PompierVolontaire → true sauf pour FUITE_GAZ (compétence non acquise, à simuler par une contrainte simple) | ||
| + | * Officier → toujours true, et en plus logue dans la console qu'un officier prend le commandement | ||
| + | |||
| + | Utilisez cette méthode dans Intervention.ajouterPompier() pour refuser l' | ||