TD 4: Gestion d`un zoo spectaculaire

Transcription

TD 4: Gestion d`un zoo spectaculaire
Programmation Orientée Objets
TD 4: Gestion d’un zoo spectaculaire
notions : collection, interface, généricité
Le directeur du zoo souhaite des améliorations au système gestion du zoo fait lors du TP précédent.
Voici la liste de ses exigences.
Question 1 Reprogrammer le zoo pour gérer l’ensemble des animaux par une collection. Modifier les
méthodes ajouteAnimal et enleveAnimal en conséquence.
Dans un zoo, il peut y avoir des naissances. On doit donc ajouter une liste d’enfants à un animal. De
plus, le constructeur doit prendre le père et la mère de cet animal en paramètres.
Question 2
– Dans quelle classe peut on définir cette liste d’enfants ?
– Modifier les classes et écrire le constructeur créant un animal avec un père et une mère.
– Écrire une méthode qui retourne le nombre de descendants (enfants, petits enfants, etc...) d’un
animal.
Question 3 Tester les classes, en utilisant le main suivant :
– Création du zoo Manotec – Ajout du tigre du Bengale Fantôme , de poids 120kg, 40 rayures
– Ajout de l’autruche Ann , de poids 50kg.
– Ajout du chimpanzé Chita de poids 30kg
– Ajout de l’aigle Roquette , d’envergure 200cm, de poids 5kg
– Ajout de l’orque Azog , de poids 9000kg
– Ajout du tigre du Bengale Fantômette , de poids 100kg, 20 rayures
– Ajout du tigre du Bengale Fantômas , de poids 80kg, 20 rayures, fils de Fantômette et Fantôme
– Ajout du tigre du Bengale Fantômime , de poids 60kg, 15 rayures, fille de Fantômas
– Vérifier que l’orque Vaisseau Fantôme , de poids 8000kg ne peut avoir Fantômas comme parent
Le directeur du Zoo souhaite monter un spectacle pour attirer des visiteurs. Dans son spectacle, des
animaux capables de faire des tours et des clowns feront leur numéro.
Veuillez noter que des classes et des fichiers images sont fournit pour ce TD. Il faut aller les récupérer
sur le site. Les images doivent être placées à la racine du projet et les classes dans le package tools.
Question 4
– Définir une interface Divertissant qui ajoute la propriété faitNumero() aux classes qui la mettent
en œuvre. On pourra s’inspirer du schéma de la figure 1
– Créer la classe Clown qui hérite de la classe Employe dans le package zoo.personnel, ajouter un
champ collection personnel à la classe Zoo.
1
– Implémenter cette interface dans les classes Tigre, Orque et Clown. La méthode faitNumero()
doit utiliser la méthode affiche(String fichier) de la classe AfficheurImage pour afficher à
l’écran le gif animé de l’objet.
– Faire une méthode Collection<Divertissant> getSaltimbanques() qui utilise la méthode générique
Collection<E> filtreCollectionSelonLaClasse(Collection<?> collection, Class<E> c) de
la classe générique FiltreCollection<E> et qui récupère la liste de tous saltimbanques (c.-à-d.,
les divertissants) à partir des champs animaux et personnel de la classe Zoo.
– Ajouter une méthode spectacle() dans la classe zoo qui appelle toutes les méthodes faitNumero()
des saltimbanques et la tester dans le main.
interface Divertissant
+faitNumero()
Classe Employe
Classe Veterinaire
Classe Animal
Classe Tigre
Classe Clown
Classe Autruche
Figure 1 – Diagramme UML des classes Employe et Animal.
2