Académique Documents
Professionnel Documents
Culture Documents
Informatique
ENSA Agadir Année 2013/2014
Prof. R. EZZAHIR
Objectif
L’objectif ce TP est de présenter l’héritage, le polymorphisme, l’utilisation des interfaces, et les E/S. Les collections et la
généricité en Java vont être traitées dans la série de révision N°. Ce pendant les programme que vous allez développer dans
cette série seront utilisés en série N°. Vous devez écrire la javadoc http://java.sun.com/j2se/javadoc/writingdoccomments/ au
fur et à mesure de l’avancement et il est fortement conseillé d’avoir le documentation de java sous les yeux
:http://java.sun.com/j2se/1.5.0/docs/api/index.html
classe Cheval Vache Chevre Mouton Coq Chien Loup Aigle Lapin
attributs Couleur (java.awt.Color) race race race origine race
Race (String)
13. Ajoutez la classe exécutable Ferme et créez des instances de 2 classes Cheval et Fleur. Affichez les avec la
méthode System.out.println(). Qu’est ce qu’est affiché? Expliquer le résultat en étudiant la classe Object ?
………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………..
…………………………………………………………………………………………………………………………………………..
…………………………………………………………………………………………………………………………………………..
…………………………………………………………………………………………………………………………………………..
…………………………………………………………………………………………………………………………………………..
14. Redéfinissez la méthode toString() (héritée de Object, voir la documentation) de la super classe pour qu’elle affiche
”Je suis un animal” (ou ”Je suis une plante”). Exécutez la classe Ferme. Quel est le résultat d’affichage de
l’instance cheval
…………………………………………………………………………………………………………………………………………..
…………………………………………………………………………………………………………………………………………..
15. Modifiez la méthode précédente pour qu’elle affiche pour l’instance Cheval(Jawhar, "male", Color.DARK_GRAY)
”Animal : Cheval, Identifiant : Jawhar, Sexe : Male, Couleur : darkGray, Age : xxxx"
17. Dans la méthode main la classe Ferme, créez deux tableaux qui contient les animaux et les plantes crées dans la section
précédente comme des collections (de taille fixe) d’animaux.
18. Afficher ces deux tableaux en utilisant la méthode static toString de la classe java.util.Arrays ? Comment faire pour afficher
instance par ligne ?...................................................................................................................................................................
19. Écrivez une méthode crisAnimaux(Animal[] t) dans la classe Animal qui prend en paramètre un tableau d’animaux et
qui affiche leur référence (Cheval, Vache,…) et leur cri. Testez-la sur le tableau de la question précédente.
20. Supposons que l’on souhaite connaitre le nombre d’animaux et de plantes qui vivent dans la ferme que faut-il ajouter aux
Classes Animal et Plante………………………………………………………………………………………………………………
21. Modifiez la classe Animal pour que l’on garde automatiquement des références (dans un tableau) vers tous les animaux
créés (Vous vérifierez aussi que l’on ne crée pas plus de NB_MAX_ANIMAUX=20). Comment peut-on faire cela ?.....................
.......................................................................................................................................................................................................
.....................................................................................................................................................................................................
.....................................................................................................................................................................................................
22. Faire la même chose avec la classe Plante.
23. Commenter les tableaux de la classe Ferme, vous allez utiliser ceux créer dans les classes Animal et Plantes. Exécuter
votre code pour afficher la description complète de tous les animaux et plantes crées, ensuite les cris de chaque animal.
24. Créer un fichier .jar exécutable de votre projet, exécuter ce jar par la commande : java ferme.jar (optionnelle).
25. Créer un fichier .bat qui permet d’exécuter ce fichier (modifier la variable d’environnement path pour faire connaitre votre
commande .bat (optionnelle).
II. Polymorphisme encore
1. On souhaite maintenant considérer que certains animaux (pas forcément tous) sont des carnivores (ils comportent la
méthode void manger() avec comme paramètre un autre animal) ou des herbivores (ils comportent la méthode void
manger() avec comme paramètre une plante) ou les deux. En général, il y a deux façons pour décrire ces
comportements : utiliser des classes et les faire héritées par les sous classes d’Animal ou de créez deux interfaces et les
faire implantées par les sous classe d’Animal. Quelle est la solution possible en JAVA ? et pour quoi ?
…………………………………………………………………………………………………………………………………….
…………………………………………………………………………………………………………………………………….
…………………………………………………………………………………………………………………………………….
2. Modifiez vos classes pour qu’elles implantent les interfaces IHerbivore et ICarnivore :
Les carnivores : quand ils mangent, les chiens affichent ”Je mord X”, et les aigles affichent ”Je déchire X”.
Les herbivores : les vaches affichent ”Je broute X”, et les lapins ”Je grignotte X”.
3. Les hommes sont à les fois carnivores et herbivores, proposez deux solutions pour le représenter :
Dans un premier temps, sans créer de nouvelle interface (aucune implantation n’est demandée).
…………………………………………………………………………………………………………………………………….
Dans un second temps en créant une nouvelle interface IOmnivore (aucune implantation n’est demandée).
……………………………………………………………………………………………………………………………………..
2. Ecrire une méthode main dans la classe ReservoirDeau pour la tester (générer les situations d’exceptions).
3. Modifier l’interface EtreVivant en rajoutant les méthodes : void setReservoirDeau(), getReservoireDeau() et void boire().
Sauvegarder et compiler. Qu’est ce que vous remarquez ?.................................................................................................