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 11:55] – jcheron | sio:bloc2:2a:td0 [2026/08/26 10:31] (Version actuelle) – jcheron | ||
|---|---|---|---|
| Ligne 206: | Ligne 206: | ||
| </ | </ | ||
| < | < | ||
| + | |||
| + | ===== Descriptif des méthodes - Location, Sinistre, Intervention ===== | ||
| + | |||
| + | ==== Location ==== | ||
| + | |||
| + | === Constructeurs === | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | === Getters === | ||
| + | |||
| + | Un par attribut ('' | ||
| + | |||
| + | === toString() === | ||
| + | |||
| + | Retourne une chaîne lisible, ex : "12 rue des Lilas, 75001 Paris" | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ==== Sinistre ==== | ||
| + | |||
| + | === Constructeur === | ||
| + | |||
| + | * '' | ||
| + | |||
| + | === Getters === | ||
| + | |||
| + | * '' | ||
| + | |||
| + | Pas de setters : un sinistre déclaré ne change pas de nature. | ||
| + | |||
| + | === toString() === | ||
| + | |||
| + | Doit afficher une synthèse : type, gravité, date, localisation. Ex : | ||
| + | |||
| + | [INCENDIE] Gravité : ELEVE - déclaré le 21/08/2026 à 10:32 - 12 rue des Lilas, Paris | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ==== Intervention ==== | ||
| + | |||
| + | === Constructeur === | ||
| + | |||
| + | * '' | ||
| + | |||
| + | === ajouterPompier(Pompier p): void === | ||
| + | |||
| + | Ajoute un pompier à la liste '' | ||
| + | |||
| + | === terminerIntervention(): | ||
| + | |||
| + | * Fixe '' | ||
| + | * Repasse chaque pompier de '' | ||
| + | * Éventuellement afficher un message de confirmation. | ||
| + | |||
| + | === dureeIntervention(): | ||
| + | |||
| + | Calcule la durée en minutes entre '' | ||
| + | |||
| + | === afficherRapport(): | ||
| + | |||
| + | Affiche une synthèse complète de l' | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ==== 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' | ||