-
Cours :
- Premiers pas en Java (pdf)
- Classes et objets (pdf)
- Penser objet et encapsulation (pdf)
- Tests et enum (pdf)
- Égalité, final, static, surcharge et documentation (pdf)
- Types paramétrés et interfaces (pdf)
- Agrégation, composition, délégation et extension (pdf)
- Paquetage, accessibilité et exceptions (pdf)
- Final et notions avancées (pdf)
- Documents :
- TP :
Gestion d’un hôtel
Introduction
Gestion d’un hôtel
Le but de ce TP est de permettre la gestion des chambres d’un hôtel. Vous allez compléter le code de trois types :
- une énumération
RoomType
représentant le type de chambre d’hôtel - une classe
Room
représentant une chambre d’hôtel - une classe
Hotel
représentant un hôtel
Consignes pour le TP
- Toutes les variables de type
List
seront à initialiser avec des objets de typeArrayList
. Vous pouvez vous référer à l’annexe en fin du sujet pour avoir une documentation des méthodes deList
. - Suivez les commentaires
// TODO
pour effectuer les changements sur le code et la documentation. Une fois un changement effectué, vous devez enlever le commentaire correspondant. - Votre code doit passer les tests déjà écrits (il ne faut pas les modifier). Pour les lancer, il faut passer par
Gradle -> verification -> test
Comme pour le TP 2, on va utiliser git pour la gestion de versions. Il vous faut donc vous reporter aux consignes du TP 2. Le lien vers le projet à forker est le suivant : https://etulab.univ-amu.fr/alaboure/hotel-template.
Une fois le dépôt téléchargé, vous pouvez compiler et exécuter le programme en cliquant deux fois sur hotel
-> application
-> run
.
Pour exécuter les tests, il faut passer par l’onglet gradle à droite et cliquer deux fois sur hotel
-> Tasks
-> verification
-> test
. Pour le moment, les tests ne passeront pas car certaines classes sont incomplètes.
Type de chambre d’hôtel : énumération RoomType
On va considérer 4 types de chambres : simple (single), double (double), double-double (double-double) et suite (suite). Chaque type de chambre a un prix (price) et une capacité d’accueil (maximum occupancy), c’est-à-dire un nombre maximal de personnes pouvant dormir dans la chambre. On utilisera les valeurs du tableau ci-dessous pour ces quatre types de chambres.
type de chambre | prix | capacité d’accueil |
---|---|---|
simple | 60$ | 1 personne |
double | 90$ | 2 personnes |
double-double | 150$ | 4 personnes |
suite | 300$ | 4 personnes |
Tâche 1 : Compléter l’énumération
RoomType
dans le fichiersrc/main/java/RoomType.java
qui respecte le diagramme ci-dessous.
Classes de test RoomType
Tâche 2 : Compléter la classe de test
RoomTypeTest
dans le fichiersrc/test/java/RoomTypeTest.java
pour qu’elle contienne des tests pour vérifier le bon fonctionnement de la valeurDOUBLE_DOUBLE
deRoomType
.
Vous pouvez vous inspirer pour écrire ces tests sur la valeur DOUBLE_DOUBLE
des tests existants de la valeur SINGLE
de RoomType
.
Chambre d’hôtel : classe Room
Une chambre d’hôtel sera représentée par une instance de la classe Room
.
Tâche 3 : Complétez la classe
Room
dans le fichiersrc/main/java/Room.java
qui respecte le diagramme ci-dessous.
Classes de test RoomTest
Tâche 4 : Compléter la classe de test
RoomTest
dans le fichiersrc/test/java/RoomTest.java
pour qu’elle contienne des tests pour vérifier le bon fonctionnement des méthodesequals
,leave
etrent
de la classeRoom
.
Hôtel : classe Hotel
Une chambre d’hôtel sera représentée par une instance de la classe Room
.
Tâche 5 : Complétez la classe
Hotel
dans le fichiersrc/main/java/Hotel.java
qui respecte le diagramme ci-dessous.
Vous trouverez ci-dessous quelques indications sur les méthodes pour lesquelles vous devez rajouter une documentation :
getTotalOccupancy
: calcule le nombre de personnes total que peut accueillir l’hôtel (somme des capacités des chambres).getFreeRoom
: renvoie une chambre libre correspondant au type de chambre spécifié. S’il n’y a pas de chambre libre du type demandé, la méthode renvoienull
.print
: affiche le nom de l’hôtel sur une ligne suivie de l’affichage de chacune des chambres sur une ligne obtenu à partir dutoString
deRoom
.
Hôtel : classe HotelTest
Tâche 6 : Compléter la classe de test
HotelTest
dans le fichiersrc/test/java/HotelTest.java
pour qu’elle contienne des tests pour vérifier le bon fonctionnement des méthodes de la classeHotel
.
Application : classe App
(tâche optionelle)
Changer le code de la classe App
pour permettre à un utilisateur de louer des chambres dans un hôtel à l’aide d’un menu dans une console.