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 ?
Partager