Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/07284.jsonl.gz/101

Activité : Gérons nos livres, responsabilité unique (rev. 1)
Consigne
Le but de cette activité est de vous familiariser avec le principe de responsabilité unique qui est l’un des principes essentiels de la programmation orientée objet. Afin de respecter ce principe, vous allez être amené à modifier la classe
Copy et à créer une nouvelle classe.
Pour ce travail on vous demande de prendre connaissance de la situation et de réaliser les tâches proposées. Si vous ne parvenez pas à terminer le travail en classe, il vous appartient de prendre sur votre temps pour l’achever.
Le code des tests unitaires doit être utilisé tel quel et ne doit pas être modifié. Le code des classes doit être conforme à la spécification fournie sous forme de tests unitaires et de diagramme UML.
Le travail est individuel. Vous pouvez communiquer, mais en respectant le code d’honneur.
Situation
Vous êtes développeur dans un projet de logiciel de gestion de bibliothèque. Après avoir modifié la classe
Copy pour gérer les emprunts, vous vous rendez compte que l’implémentation de l’historique des emprunts est difficile et les solutions envisagées ne sont pas élégantes. Vous vous tournez donc vers l’architecte logiciel pour avoir son avis.
Après avoir passé votre code en revue, il vous dit que la difficulté vient du fait que la classe
Copy ne respecte pas le principe de responsabilité unique (single responsibility principle). Il vous explique que Robert C. Martin, l’homme à l’origine de ce principe, définit une responsabilité comme étant une raison de changer. Une classe ne devrait donc avoir qu’une seule et unique raison de changer. Or, la classe
Copy contient à la fois des attributs et des méthodes liés à la gestion des documents de la bibliothèque et à la gestion des emprunts. On pourrait donc avoir à modifier cette classe à cause d’un changement dans la gestion des documents ou à cause d’un changement dans la gestion des emprunts, ce qui fait au moins deux raisons. La solution consiste donc à diviser la classe
Copy en autant de classes qu’elle a de responsabilités.
Avant de vous laisser à votre tâche, il vous indique encore que le principe de responsabilité unique est l’un des cinq principes essentiels de la programmation orientée objet référencés par l’acronyme SOLID.
Résultat attendu
Un projet Maven contenant les classes suivantes :
- Book, Author, Copy, FormatCopy, LoanManager et Loan
- BookTest, AuthorTest, CopyTest, LoanManagerTest et LoanTest
Objectifs
À la fin de ce travail, vous devez :
- Connaître le principe de responsabilité unique
Ressources
Logiciel :
- maven
- Visual Studio Code
Documents :
- Capsule de théorie : Opération et méthode
- Caspule : Notion de classe
- SOLID
- Support de cours pages 61 à 63
Mise en route
Pour commencer, vous devez télécharger le projet de cette activité depuis le dépôt git. Si vous n’avez encore jamais utilisé le gestionnaire de dépôt GitLab de l’EPAI, vous devez d’abord vous y connecter pour initialiser votre compte utilisateur. Pour cela, cliquez sur le lien ci-dessous et connectez-vous en utilisant votre nom d’utilisateur et votre mot de passe I-FR.
Rendez-vous ensuite dans le répertoire de vos projets, lancez la commande ci-après et lorsque le système vous le demande, saisissez votre nom et votre mot de passe I-FR.
1 git clone https://gitlab.epai-ict.ch/m226/gerons-nos-livres-responsabilite-unique.git --single-branch
Déplacez-vous dans le répertoire
gerons-nos-livres-responsabilite-unique et lancer la commande
code . pour ouvrir le projet dans VSC (Visual Studio Code).
À vous de jouer !
Tâche
On vous demande de modifier la classe
Copy qui représente les exemplaires physiques des livres de la bibliothèque, de compléter la classe
Loan qui représente les emprunts et, pour finir, de créer la classe
LoanManager qui va nous permettre de gérer les emprunts conformément à la spécification ainsi qu’au diagramme de classes de la figure 1.
Chaque classe et chaque méthode doit être documentée à l’aide de commentaires javadoc.
Attention :
- Commencez par créer les classes et les méthodes sans les implémenter de telle manière à ce qu’il n’y ai plus d’erreur de syntaxe dans les tests.
- Implémentez ensuite la classe
Loan. Pour cette classe, on vous demande d’appeler votre enseignant lorsque vous l’avez terminé afin qu’il puisse vérifier qu’elle fonctionne correctement.
- Implémentez enfin la classe la classe
LoanManager. Les méthodes de cette classe sont un peu plus compliquées à réaliser. On vous demande donc d’appeler votre enseignant pour chacune d’elle.
Demandez de l’aide en cas de besoin, mais essayez d’abord par vous-même et respectez toujours le code d’honneur !