Exercice 117
Énoncé
On souhaite créer une classe nommée ens_heter permettant de manipuler des
ensembles dont le type des éléments est non seulement inconnu de la classe, mais
également susceptible de varier d’un élément à un autre. Pour que la chose soit
possible, on imposera simplement la contrainte suivante : tous les types concernés
devront dériver d’un même type de base nommé base. Le type base sera supposé connu
au moment où l’on définit la classe ens_heter.
La classe base disposera au moins d’une fonction virtuelle pure nommée affiche ; cette
fonction devra être redéfinie dans les classes dérivées pour afficher les
caractéristiques de l’objet concerné.
La classe ens_heter disposera des fonctions membre suivantes :
• ajoute pour ajouter un nouvel élément à l’ensemble (elle devra s’assurer qu’il
n’existe pas déjà)þ;
• appartient pour tester l’appartenance d’un élément à l’ensembleþ;
• cardinal qui fournira le nombre d’éléments de l’ensemble.
De plus, la classe devra être munie d’un « itérateur », c’est-à-dire d’un mécanisme
permettant de parcourir les différents éléments de l’ensemble. On prévoira 3
fonctions :
• init pour initialiser le mécanisme d’itérationþ;
• suivant qui fournira en retour le prochain élément (objet d’un type dérivé de
base)þ;
• existe pour préciser s’il existe encore un élément non examiné.
Enfin, une fonction nommée liste permettra d’afficher les caractéristiques de tous les
éléments de l’ensemble (elle fera, bien sûr, appel aux fonctions affiche des différents
objets concernés).
On réalisera ensuite un petit programme d’essai de la classe ens_heter, en créant un
ensemble comportant des objets de type point (deux coordonnées entières) et complexe
(une partie réelle et une partie imaginaire, toutes deux de type float). Naturellement,
point et complexe devront dériver de base.
280
Précédent

- 281/398

Suivant