Choisissez votre style : colorisé, impression

Exercice 0 : reprise de l'exemple du cours (Héritage multiple, niveau 0)

Introduction

Le but de cet exercice est de reprendre l'exemple du cours illustrant la notion d'héritage multiple et de classe virtuelle en approfondissant l'exemple des ovovivipares (vous auriez préférez les flots [streams] ?). 

[Essayez de le faire par vous même chaque étape avant de regarder la solution qui suit]


Dans le fichier zoo.cc, commencez par définir une classe Vivipare contenant un entier non signé représentant la durée de gestation (en jours) et un constructeur permettant d'initialiser cette valeur et pouvant servir de constructeur par défaut (avec une valeur de votre choix).

Solution :


Définissez maintenant une classe Ovipare ayant un attribut représentant le nombre d'oeufs par ponte et un constructeur adapté.

Solution :


Ajoutez à chacune des classe une méthode naissance affichant
"Après X jours de gestation, je viens de mettre au monde un nouveau bébé."
dans le cas d'un vivipare et
"Je viens de pondre environ X oeuf(s)."
dans le cas d'un ovipare, où X correspond à la valeur de l'attribut.

La solution est ici vraiment triviale, je continue donc...

Définissez maintenant la classe Ovovivipare comme héritant à la fois de Vivipare (en premier) et de Ovipare.

Ajoutez à cette classe un attribut de type booléen indiquant si l'espèce est rare ou non.

Ajoutez également un constructeur prenant une période de gestation, un nombre d'oeufs et un booléen (faux par défaut) indiquant la rareté de l'espèce.

Solution :


Pour terminer cette première exploration, faite afficher un message par les constructeurs des classes Vivipare et Ovipare afin d'observer l'ordre des appels, et créez un main() contenant une instance d'Ovovivipare.

Quel est l'ordre d'appel des constructeurs ?

Changez l'ordre des constructeurs dans le constructeur d'Ovovivipare. Recompilez et relancer votre programme.
Cela change-t-il l'ordre d'appel ?

Appelez maintenant la méthode naissance de votre instance.

Compilez et testez votre programme
Que se passe-t-il ?

Corriger le programme pour que ce soit la méthode naissance de Vivipare qui soit appelée.

Recompilez et relancer votre programme.

Modifiez finalement le programme pour que la méthode naissance d'Ovovivipare affiche
"Après X jours de gestation, je viens de mettre au monde Y nouveau(x) bébé(s)." où X correspond à la période de gestation et Y au nombre d'oeufs.

Solution :


Je voudrais finir par un exemple de classe virtuel en introduisant la classe Animal.

Ajoutez une classe Animal au programme, ne comprenant qu'un constructeur (par défaut) et un destructeur affichant chacun un message.

Faîtes hériter Vivipare et Ovipare de Animal.

Recompiler et exécuter votre programme.
Que se passe-t-il ?

Pour éviter cela faite que la classe Animal soit virtuelle.

Recompiler et exécuter votre programme.

Notez bien quand le constructeur de Animal est appelé.

Solution :

Vous pouvez trouver ici le code complet de l'exemple.


Dernière mise à jour : $Date: 2020/03/27 11:31:1§ $