Activité Convertion d'unité et héritage
Consigne
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 en respectant le code d’honneur.
Situation
On vous confie la tâche de réaliser une application de conversion d’unité.
Objectifs
À la fin de ce travail, vous devez :
- Connaître les deux formes de la relation généralisation/spécialisation
- Connaître le termes héritage ou héritage d’implémentation
- Connaître les mots clé «implements» et «extends» en Java
- Connaître la notion de classe abstraite
- Connaître les notions de méthode virtuelle pure, de méthode virtuelle et de méthode non-virtuelle
Résultat attendu
Un projet Maven contenant les classes décrites
Ressources
Logiciel :
- maven
- Visual Studio Code
Documents :
- Capsule de théorie : Classes et instances
- Capsule de théorie : Héritage et sous‑typage
- Capsule de théorie : Polymorphisme
Mise en route
Rendez-vous 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/simple-unit-converter.git --single-branch
Déplacez-vous dans le répertoire simple-unit-converter
et lancer la commande code .
pour ouvrir le projet dans VSC (Visual Studio Code).
À vous de jouer !
Tâches
- Réalisez toute les classes et les interfaces manquante en vous référant au diagramme ci-dessous. Il n'y a rien de nouveau, il s'agit simplement d'appliquer ce que vous connaissez déjà. Les classes
App
etUnitConverterImpl
sont fournies.
- Testez le programme en lançant l'application ou en utilisant le debugger.
- Lorsque l'application fonctionne, modifiez votre code pour éviter la duplication de code en utilisant l'héritage d'implémentation (voir capsule de thérorie). Cette tâche vous permet de découvrir les notions de classe abstraite et d'héritage d'implémentation.
- Enfin, pour respecter le principe de ségrégation des interfaces, modifiez votre code conformément au diagramme de la figure 3. Le client de la classe UnitConverter n'a pas besoin des méthodes `convertFromBaseUnit` et `convertToBaseUnit`. Cette tâche vous permet d'expérimenter l'utilisation du mot clé `extends` avec une interface.
Demandez de l’aide en cas de besoin, mais essayez d’abord par vous-même et respectez toujours le code d’honneur !