Atelier 04
Dans ce laboratoire, vous reverrez l’extraction de hiérarchies de classes à partir de descriptions informelles, ainsi que leur syntaxe Java associée. Cette unité de laboratoire est plus courte, car elle comprend une évaluation notée.
Carnivores et herbivores
Lisez attentivement la description des exigences suivantes :
- Contractuellement, tous les animaux doivent être capables de consommer de l’eau et de la nourriture. Tous les animaux doivent avoir :
- une méthode
drink(commune à tous les animaux, affiche « Glou, glou, glou »); - une méthode
eat(dont l’implémentation varie);
- une méthode
- Les animaux se divisent en deux sous-catégories. Ils peuvent être soit herbivores, soit carnivores (on suppose qu’ils ne peuvent jamais être les deux).
- Les herbivores et les carnivores partagent une même implémentation pour la consommation d’eau.
- Les herbivores et les carnivores n’ont pas la même implémentation pour manger :
- Les herbivores affichent « Miam, délicieuse salade ! »
- Les carnivores affichent « Rooar, steak juteux ! »
- Seuls certains types d’animaux doivent pouvoir être instanciés (avec
new). Ce sont :Lion(Carnivore)Tigre(Carnivore)Zèbre(Herbivore)Gazelle(Herbivore)
Extraction conceptuelle
- Traduisez les exigences techniques suivantes en code Java conceptuel, en vous basant sur les notions vues en classe.
- L’objectif est d’éviter toute duplication de code (aucun copier-coller de méthodes entre classes).
- Utilisez la notation UML vue en classe :
Récapitulatif des exigences
Pour chaque fichier de classe, déterminez :
1. Le type de classe : standard / abstraite / interface
2. Les méthodes qui doivent être spécifiées dans la classe
3. Si la classe hérite d’une autre : mot-clé approprié
Implémentation d’une interface
Exemple de notation :
classDiagram
class Interface {
+foo()
}
class Class {
+foo()
}
Interface <|.. Class : implements
Extension d’une classe
Exemple de notation :
classDiagram
class BaseClass {
+bar()
}
class ChildClass {
+foo()
}
BaseClass <|-- ChildClass : extends
Implémentation
Après avoir établi une hiérarchie de classes appropriée sur papier, traduisez votre solution conceptuelle en une implémentation.
- Créez la hiérarchie requise de classes Java.
- Assurez-vous qu’il n’y a aucune duplication de code entre les méthodes.