Aller au contenu

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);
  • 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.