N'oubliez pas de déposer ce TP sur votre archive gitlab. Déposez-le régulièrement (commit puis push) durant cette séance. La version qui sera notée sera celle que vous aurez déposée à 17h15. Aucun code déposé ou rendu par la suite ne sera autorisé. Votre travail doit être personnel. La copie sera sanctionnée.
Votre but est de réaliser un système de réservation et de gestion de l'hôtel pour pouvoir calculer le montant des factures dûes par les clients.
Dans cet exercice, on utilisera les collections (en particulier les maps), ainsi que la classe
LocalDate
introduite en java 8 pour représenter de manière
propre des dates.
of()
: cette méthode sert
à créer une nouvelle date ; elle fonctionne un peu comme un constructeur, mais sans new devant.
Exemple d'utilisation :
LocalDate date1 = LocalDate.of(2019, Month.DECEMBER, 31);
if (d1.compareTo(d2) < 0) {...}
unJour
est une LocalDate, alors, étant donné le code :
LocalDate suivant = unJour.plusDays(1);
suivant
est un objet qui représente le lendemain de unJour.
equals.
Les LocalDate ont une sémantique de valeur.Un intervalleDate est défini par une date de début et une date de fin, et représente tous les jours compris entre la date de début (inclusivement) et la date de fin (exclusivement). Un effet secondaire de cette définition est que si je veux définir deux intervalles qui se suivent, la date de fin du premier est la date de début du second.
Implémentez les méthodes de la classe IntervalleDate pour faire tourner les tests.Implémentez les méthodes de la classe CalendrierTarif pour faire tourner les tests.
Une categorie a un nom, indique la taille de chambre à laquelle elle correspond, et est associée à un calendrier de tarifs.
La classe CategorieChambre est déjà écrite... Vous n'avez rien à faire.
La classe Chambre est déjà écrite... Vous n'avez rien à faire.
HotelFrontOffice
.
La classe Sejour est déjà écrite... Vous n'avez rien à faire.
Implémentez la méthode getChambres de la classe HotelBackOffice pour faire tourner les tests.
HotelFrontOffice
représente le système de réservation et de facturation de l'hôtel.
Un objet HotelFrontOffice
connaît les chambres et leurs catégories grâce à la classe HotelBackOffice
;
il a cependant aussi besoin de représenter les réservations de chambre, pour savoir quelles sont les chambres
libres,
et qui occupe telle ou telle chambre à un moment donné.
Je vous laisse le soin de décider de la manière dont vous allez représenter cela. À vous de décider des structures de données que vous allez utiliser en interne. Vous pouvez éventuellement modifier d'autres classes (par exemple Chambre, mais ça n'est pas la seule solution), mais les tests fournis doivent continuer à passer sans modification.