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 :

  1. Connaître les notions de type simple et de type composé.
  2. Connaître la notion de variable membre.
  3. Connaître la notion d’instanciation (création d’un objet).
  4. Connaître la syntaxe de l’opération d’instanciation en Java (opérateur new).
  5. Connaître la notion de référence à un objet.
  6. Ê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

  1. Créez la classe Book dans le même répertoire que la classe App. Déclarez les variables membres nécessaires (Attention : les variables sont seulement public, elles ne sont pas static) et définissez le constructeur en vous inspirant de la classe Customer de la capsule de théorie. Ne passez au point suivant que lorsque le test unitaire de la classe BookTest s’exécute avec succès.

  2. Créez la classe BookOperations dans le même répertoire que la classe App. 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 exception throw new UnsupportedOperationException();.

  3. 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.

  4. 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 !