0% ont trouvé ce document utile (0 vote)
13 vues4 pages

Java Page29

Le document analyse les relations d'héritage entre les classes Animal et Chat, en évaluant plusieurs propositions de code pour déterminer leur validité. Les propositions 2 et 4 sont correctes, respectant la hiérarchie d'héritage, tandis que les autres entraînent des erreurs de compilation. Il propose également un exercice de gestion d'êtres vivants, incluant des méthodes pour les faire évoluer et des corrections de compilation à réaliser.

Transféré par

Hassan Hachicha
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
13 vues4 pages

Java Page29

Le document analyse les relations d'héritage entre les classes Animal et Chat, en évaluant plusieurs propositions de code pour déterminer leur validité. Les propositions 2 et 4 sont correctes, respectant la hiérarchie d'héritage, tandis que les autres entraînent des erreurs de compilation. Il propose également un exercice de gestion d'êtres vivants, incluant des méthodes pour les faire évoluer et des corrections de compilation à réaliser.

Transféré par

Hassan Hachicha
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Analyse des propositions et réponse à la question

Compréhension du diagramme de classe

Le diagramme de classe présente une relation d'héritage : la classe Chat hérite de la classe
Animal. Cela signifie qu'un objet de type Chat est également un objet de type Animal.

Analyse des propositions de code

1. Animal y =new Animal(); Chat x= (Chat)y; Animal z=x;


o Erreur de compilation : On tente de caster un objet Animal en Chat alors que
tous les Animal ne sont pas forcément des Chat. Cela peut entraîner une
ClassCastException.
2. Chat x= new Chat(); Animal y = x; Chat z=(Chat)y;
o Correct. Un objet Chat peut être assigné à une variable de type Animal car il y
a une relation d'héritage. Le cast de y en Chat est valide car y référence bien
un objet de type Chat.
3. Chat x= new Chat(); Animal y = x; Chat z=y;
o Erreur de compilation : On ne peut pas assigner directement un objet de type
Animal à une variable de type Chat. Cela nécessiterait un cast explicite, mais il
n'y a pas de garantie que y référence un objet Chat.
4. Chat y =new Chat(); Chat x= y; Chat z=(Animal)x;
o Correct. Toutes les variables référencent des objets de type Chat, les casts
sont donc valides.

Donc, les propositions 2 et 4 sont correctes.

Ajout de la méthode main() dans la classe Chat


Explication:

 La méthode main est le point d'entrée d'une application Java.


 On peut y placer les instructions pour tester notre code.
 Les deux lignes de code à l'intérieur de la méthode main correspondent aux
propositions correctes trouvées précédemment.

Conclusion

Les propositions 2 et 4 sont correctes car elles respectent la hiérarchie d'héritage entre les
classes Animal et Chat. En exécutant ces instructions dans la méthode main de la classe Chat,
on peut vérifier leur fonctionnement.

Points clés à retenir:

 Héritage: Un objet d'une classe enfant peut être assigné à une variable de la classe
parent.
 Cast: On peut caster un objet d'une classe enfant en un objet de la classe parent sans
problème. Le cast inverse nécessite une vérification pour éviter une
ClassCastException.

En résumé, la compréhension de l'héritage et des casts est fondamentale en programmation


orientée objet.

Exercice N°2 :

Nous voulons gérer des êtres vivants qui peuvent être de l’herbe, des souris et des

fennecs. En effet, l’herbe peut pousser (méthode pousser() qui affiche "Je pousse").
Les souris et les fennecs peuvent manger (méthode manger() qui affiche "Je mange

de l’herbe" pour les souris et "Je mange une souris" pour les fennecs) et dormir

(méthode dormir() qui affiche "Je dors").

Une Herbe, une Souris ou un Fennec peut évoluer (méthode evoluer() qui lance les

méthodes pousser() pour l’herbe, et manger() puis dormir() pour les souris et les

fennecs). La figure ci-après montre la hiérarchie des classes.

Figure 1. Hiérarchie des classes des êtres vivants.

Travail à faire :

1. Créez un nouveau projet que vous nommez « ACT112 », puis importez le fichier

[Link] à partir de la plateforme d’UVT.

2. Ajouter le nécessaire pour corriger les erreurs de compilation.

3. Exécutez le fichier [Link]. Expliquez l’origine des erreurs que vous

obtenez, puis corrigez-les.

4. Définissez dans la méthode principale un tableau lesEtresVivants de sept êtres

vivants :

Souris(taille=10, poids=0.5), Herbe(taille=10.2),

Fennec(taille=11, poids=0.3), Fennec(taille=12,

poids=0.3), Herbe(taille=13), Souris(taille=8.2,

poids=0.8) et Souris(taille=7, poids=0.1)

5. Faites évoluer tous les êtres vivants du tableau lesEtresVivants.


6. Affichez la classe d’appartenance de chaque objet du tableau lesEtresVivants à

l’aide de l’instruction [Link]().getName().

7. Transformez les méthodes evoluer() dans la classe EtreVivant et manger() dans la

classe Animal en des méthodes abstraites et corrigiez les erreurs de compilation qui

en découlent.

8. Est-il possible de remplacer la classe abstraite EtreVivant par une interface ? Si

oui, comment procéder ?

Vous aimerez peut-être aussi