Activité : Réaliser un type enregistrement
Consigne
Lire la capsule de théorie et prendre connaissance de l’activité avant de réaliser la mise en route et de réaliser les tâches demandées.
Le code des tests unitaires doit être utilisé tel quel et ne doit pas être modifié. Le travail est individuel. Vous pouvez communiquer, mais en respectant le code d’honneur.
Situation
Vous êtes affecté à un projet de développement d’un logiciel de gestion de bibliothèque. On vous charge de réaliser un type Book
et un module BookOperation
avec des sous‑programmes pour la manipulation de ce type. Vous recevez des tests unitaires en guise de spécification pour le type et pour les sous‑programmes à réaliser. Le code de la figure 1 contient les tests pour le constructeur de classe Book
et le code de la figure 2 contient les tests pour les sous‑programmes de la classe BookOperations
.
En observant le test du constructeur de la classe Book
dans la classe BootTest
, vous apprenez que le constructeur de la classe à deux paramètres : un identifiant de type long
et le titre du livre de type String
. Le test vous renseigne également sur le nom et le type de toutes les variables membres (champs) de ce type composé ainsi que sur les valeurs que celles-ci doivent avoir après l’exécution du constructeur.
De même, en observant les tests de la classe BookOperations
dans BookOperationsTest
, vous apprenez ce que doit faire chacune des méthodes (notamment grâce au commentaire) et quelle est sa signature (grâce à l’appel de la méthode). Par exemple, la signature de la méthode getId
est public static int getId(Book b)
. Pour le déterminer, il suffit d’observer l’instruction qui contient l’appel de la méthode : String actual = BookOperations.getId(b);
. Cette instruction vous apprend que la méthode prend un paramètre de type Book
et qu’elle renvoie une valeur de type String
.
Résultat attendu
Un projet Maven avec contenant les classes suivantes :
- Book
- BookOperations
- BookTest
- BookOperationsTest
Objectifs
À la fin de ce travail, vous devez :
- Connaître les notions de type simple et de type composé.
- Connaître la notion de variable membre.
- Connaître la notion d’instanciation (création d’un objet).
- Connaître la syntaxe de l’opération d’instanciation en Java (opérateur
new
). - Connaître la notion de référence à un objet.
- Être capable de repérer les informations utiles dans les tests unitaires.
Ressources
Logiciel :
- Maven
- Visual Studio Code
- Machine virtuelle de développement
Documents :
Mise en route
Pour commencer, vous devez récupérer le projet Maven pour cette activité. Lancez VSCode, connectez-vous à la machine virtuel dev-vm
et ouvrez une fenêtre de terminal intégré. Rendez-vous dans le répertoire de projets (cd ~/projects
) et lancez la commande suivante :
1
git clone https://gitlab.epai-ict.ch/m404/book.git
Déplacez-vous dans le répertoire book
et ouvrez le projet avec la commande code -r .
.
À vous de jouer !
Tâche
-
Créez la classe
Book
dans le même répertoire que la classeApp
. Déclarez les variables membres nécessaires (Attention : les variables sont seulementpublic
, elles ne sont passtatic
) et définissez le constructeur en vous inspirant de la classeCustomer
de la capsule de théorie. Ne passez au point suivant que lorsque le test unitaire de la classeBookTest
s’exécute avec succès. -
Créez la classe
BookOperations
dans le même répertoire que la classeApp
. Définissez toutes les méthodes spécifiées plus haut en indiquant qu’elles ne sont pas encore implémentées en jetant une exceptionthrow new UnsupportedOperationException();
. -
Vérifier qu’il n’y a plus d’erreur de syntaxe dans
BookOperationsTest
et exécuter les tests de cette classe pour s’assurer qu’ils échouent tous. -
Implémenter les sous-programmes l’un après l’autre, dans l’ordre et en s’assurant que les tests correspondants passent avec succès avant de passer au suivant.
Demandez de l’aide en cas de besoin, mais essayez d’abord par vous-même et respectez toujours le code d’honneur !