sio:bloc2:2a:td0

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
sio:bloc2:2a:td0 [2026/08/25 15:44] – [Héritage] jcheronsio:bloc2:2a:td0 [2026/08/26 10:31] (Version actuelle) – jcheron
Ligne 349: Ligne 349:
 <html></div></html> <html></div></html>
  
 +===== Evolutions =====
  
 +==== Encapsulation ====
 +
 +  * Ajoutez à Pompier un attribut privé dateEmbauche: LocalDate, avec un getter getAnciennete(): int qui calcule le nombre d'années depuis dateEmbauche (pas de setter pour anciennete — elle ne doit jamais être stockée directement).
 +  * Ajoutez une méthode distanceVers(autre: Location): double dans Location, utilisant la formule de distance euclidienne simplifiée sur latitude/longitude. Utilisez-la dans Caserne pour écrire une méthode casernePlusProche(sinistre: Sinistre): boolean (nécessite que Caserne ait elle-même une Location — à ajouter).
 +
 +==== Héritage ====
 +Ajoutez à PompierProfessionnel une redéfinition de méthode manquante : une méthode calculerSalaireMensuel(): double dans Pompier (retournant 0 par défaut ou étant abstraite), redéfinie dans :
 +
 +  * PompierProfessionnel → salaireBase + prime d'ancienneté (2% par année de service)
 +  * PompierVolontaire → heuresEffectueesMoisCourant * tauxHoraire (il faudra ajouter tauxHoraire)
 +
 +Créer une classe Officier héritant de PompierProfessionnel avec :
 +  * un attribut primeCommandement: double
 +  * 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'officier
 +
 +
 +Ajoutez à Pompier une méthode abstraite peutIntervenirSur(type: TypeSinistre): boolean. Chaque sous-classe la redéfinit :
 +
 +  * 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'ajout d'un pompier incompétent sur ce type de sinistre.
  • sio/bloc2/2a/td0.1787665483.txt.gz
  • Dernière modification : il y a 8 semaines
  • de jcheron