Bonjour,

Je vous propose un nouvel élément à utiliser : Exemple d'un devoir de licence 3 : Généricité, contraintes, exceptions

Voici une TODO-LIST de ce que je devais réaliser.

Très bon exercice de préparation avant contrôle et pour bien comprendre ces divers mécanismes.



TODO 1 :

- Ecrire une classe Ensemble qui contiendra un nombre fini d'éléments, que l'on précisera à la construction de l'ensemble.

- Le type des éléments de la classe est défini de façon générique.

- Le constructeur devra créer la structure de données correspondante.



TODO 2 :

- Proposez dans cette classe Ensemble une méthode init pour initialiser tous les éléments de l'ensemble.

- Cette méthode init n'a qu'un seul paramètre :

Une fonction à un argument de type entier et qui retourne un objet de type générique.

La méthode init appelle cette fonction pour chacun des indices de l'ensemble,

et affecte le composant correspondant à l'indice, à la valeur résultat de la fonction.



TODO 3 :

- On utilisera cette classe pour gérer un ensemble d'entiers.

- Initialiser l'ensemble en utilisant une fonction de calcul du carré d'un entier.



TODO 4 :

- Ecrire dans la classe ensemble, une fonction appartient qui renvoie vrai si son paramètre appartient à l'ensemble et faux sinon.

- Ecrire un indexeur sur la classe Ensemble qui permet un accès aux éléments en lecture et en écriture.

- Lorsqu'on l'utilise en écriture, on vérifiera que l'élément à affecter n'appartient pas déjà à l'ensemble.

- Si il appartient à l'ensemble, une exception ExisteException (classe à définir) est levée.



TODO 5 :

- On souhaite maintenant ajouter à la classe Ensemble une fonction Affiche qui parcourt

l'ensemble et affiche chaque élément en appelant sur cet élément une fonction Affiche.

- Pourra-t-on maintenant utiliser cette classe générique sur tout type d'élément ?

Oui car c'est le but de la généricité.

- Comment restraignez-vous l'utilisation à la classe générique

(au niveau de la définition de la classe générique et au niveau de la classe que l'utilisateur spécifie en paramètre) ?

Avec les contraintes (where Type ... class (pour type ref), struct (pour type struct), Ensemble (dériver de la classe)).



Bien cordialement.

Qu'en pensez-vous ?