• Aucun résultat trouvé

Td corrigé T.P. #2, inf-100 , hiver 94 pdf

N/A
N/A
Protected

Academic year: 2022

Partager "Td corrigé T.P. #2, inf-100 , hiver 94 pdf"

Copied!
4
0
0

Texte intégral

(1)

École de technologie supérieure

INF-111

T2 – Travail de laboratoire 2

Héritage, polymorphisme et interfaces avec utilisation de TDA

Version originale : Emmanuel Bruno Modifié par Francis Cardinal

1. OBJECTIF

Ce travail a pour principal objectif de mettre en pratique les différentes notions présentées jusqu’à présent l’héritage, les interfaces, le polymorphisme, la création de fonctions et la manipulation de tableaux et de TDA (liste chaînées). Vous devez respecter la philosophie orienté objet dans votre travail.

2. DESCRIPTION GÉNÉRALE :

Vous devez écrire un programme contenant plusieurs classes permettant à un utilisateur de pouvoir répertorier plusieurs types d’animaux qu’on retrouve dans la nature et de pouvoir ensuite en faire l’inventaire tout démontrant les spécifications propres à chaque animal.

Appel d'une méthode la super classe

Dans cet exercice nous allons modéliser des

plantes

, des

animaux

, des

mammifères

et des

oiseaux

mais aussi des

chiens

, des

aigles

, des

lapins

et des

hommes

.

Modélisation par héritage et Instanciation

 Modélisez cette hiérarchie (directement en Java) avec des classes. Ajoutez à chaque sous classe au moins une variable et une méthode nouvelle selon votre imagination (âge, nom, sexe, …). On devra pouvoir copier ces valeurs dans le constructeur par copie d’attributs.

 Ajoutez une classe exécutable Test et créez des instances de chacune des classes. Affichez avec la méthode System.out.println() chacun des objets.

 Redéfinissez la méthode toString() (héritée de Object, voir dans la documentation) de la super classe pour qu’elle affiche ”Je suis un animal” (ou ”Je suis une plante”).

Exécutez la classe Test.

INF-111 Introduction à la programmation orientée-objet T2 Page 1

(2)

Polymorphisme simple

 Dans la méthode main la classe Test, créez des tableaux qui permettent de voir certains des animaux crées dans la section précédente comme des collections (de taille fixe) d’animaux ou de mammifères (bref un tableau).

 Ajouter à chaque classe une méthode String getInfo() (qui appellera celle de la superclasse) pour que l’affichage du tableau suivant :

{new Animal(12), new Animal(), new Chien(5,"Fido"), new Homme(), new Homme(25,"Robert")}

soit de la forme :

Je suis un animal âgé de 12 an(s).

Je suis un animal.

Je suis un animal âgé de 5 an(s). Je suis un mammifère. Je suis un chien nommé Fido.

Je suis un animal. Je suis un mammifère. Je suis un homme.

Je suis un animal âgé de 25 an(s). Je suis un mammifère. Je suis un homme nommé Robert.

Classes abstraites

 Modifiez les classes pour s’assurer que tous les Animaux possèdent la méthode String moyenExpression qui retourne une phrase du type ”Je parle”, ”J’aboie”, ou ”Je fais des bulles” (l’aigle trompette, glapit ou glatit ; le lapin clapit).

 Écrivez une sous-programme afficherAnimaux() dans la classe Test qui prend en

paramètre un tableau d’animaux et qui affiche leur types et leur cri. Testez-la sur le tableau de la question précédente.

 Créez une méthode description() qui affiche la description complète de tous les animaux crées.

Héritage multiple et Interface

 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. Créez deux interfaces pour décrire ces comportements

 Modifiez vos classes pour qu’elles implantent ces interfaces :

o Les carnivores InterfaceCarnivore: quand ils mangent, les chiens affichent ”Je mord X”, et les aigles affichent ”Je déchire X”.

o Les herbivores : les vaches affichent ”Je broute X”, et les lapins ”Je grignotte X”.

 Les hommes sont à les fois carnivores et herbivores, proposez deux solutions pour le représenter:

o Dans un premier temps, sans créer de nouvelle interface.

o Dans un second temps en créant une nouvelle interface InterfaceOmnivore.

INF-111 Introduction à la programmation orientée-objet T2 Page 2

(3)

 Le polymorphisme est aussi utilisable avec les interfaces :

o Appliquez la méthode manger(unePlante sur la Vache que avez déjà créée en la voyant à travers une référence de type InterfaceHerbivore.

 Créez deux tableaux lesCarnivores et lesHerbivores pour manipuler les animaux existants. Créez un lapin, et faites le manger par tous les carnivores, créez une plante et faites la manger par les herbivores.

Une fois le travail ci-haut terminé, faites une nouvelle version qui utilise des listes chaînées au lieu d’utiliser des tableaux. Vous devrez expérimenter les deux solutions suivantes :

 Utiliser la version de liste qu’on vous a donné en exemple de code (voir exemples de codes donnés au cours sur les TDA)

 Utiliser la liste chaînée provenant de l’api de java (LinkedList) contenue dans le package java.util. (faire le bon import, utiliser l’api comme il le faut). Voir les détails à cette adresse

http://docs.oracle.com/javase/6/docs/api/java/util/LinkedList.html

INF-111 Introduction à la programmation orientée-objet T2 Page 3

(4)

4. CONSEILS, EXIGENCES PARTICULIÈRES ET REMISE

Contraintes :

 Vous devez impérativement respecter les normes de programmation fournies.

 Un programme contenant des erreurs de syntaxe et qui ne s’exécute pas se voit automatiquement attribuer la note zéro pour la partie exécution.

 La politique du 10% pour la qualité du français sera respectée.

 Votre programme devra être objet sauf la partie de test qui pourra être implémentée dans le main().

Barème de correction

:

Qualité de la programmation (respect des normes) 55%

 Commentaires ;

 Indentation ;

 Aération ;

 Identificateurs de variables et constantes significatives ;

 Découpage en fonctions et fichiers ;

 Respect des exigences du problème décrit dans l’énoncé;

Exécution et tests 45 %

Procédure de remise

Vous devez remettre électroniquement, dans un fichier ZIP, la copie électronique de votre code source (tous les fichiers .java, build.xml, etc.).

Envoyez votre fichier ZIP par courriel à l'adresse de remise ( [email protected] ) à la date de remise (ou avant) annoncée par les enseignants. Envoyez-vous aussi une copie de la remise (en cas de pépins, on pourra s’en servir).

Attention aux détails suivants:

 N’utilisez pas le format .7z pour votre fichier de remise

 Remettez les fichiers .java, .project et .classpath

 Ne remettez pas les fichiers .class

 Nommez votre fichier de remise INF111-02_T2_ABCD12345678.zip (avec votre code permanent)

INF-111 Introduction à la programmation orientée-objet T2 Page 4

Références

Documents relatifs

Mais si la baisse relative de la mortalité masculine est comparable à tous les âges, chez les femmes, la chute de la mortalité est nettement plus prononcée au-dessus de 65 ans.. Ainsi,

Ces produits de l’industrie des années 1970-1980 et jusqu’au début des années 1990 dans l’automobile, ne sont pas seulement préférés aux produits contemporains pour des

o écrire, en respectant les critères d’évaluation, un texte court expliquant l’expression « Voir loin, c’est voir dans le passé », texte qui sera à rendre sur feuille pour

(Ivanovo, Russia) Solvation and Thermodynamic Characteristics and Intermolecular Interactions in Aqueous Solutions of Amides of Carboxylic Acids.. 9 Аминджанов А.А

Une pile saline, de type Leclanché, est constituée par deux couples oxydo-réducteur reliés par un pont permettant leur contact. A la borne négative, le zinc Zn(s) est oxydé en ions

Il y a 40 items (dominos) régis par des règles logiques que le sujet doit identifier pour pouvoir résoudre les différents exercices proposés.. Le raisonnement que doit avoir le

Pour compléter, certains exercices sont intéressants mais

Cette action fournit dans Caract le caractère en tête de la file circulaire associée au port Numéroport (et la file circulaire est mise à jour). A utiliser lorsque la file est