IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez .NET Discussion :

Exemple d'un devoir de licence 3 : Généricité, contraintes, exceptions


Sujet :

Contribuez .NET

  1. #1
    Robot Forum
    Avatar de forum
    Inscrit en
    Novembre 1999
    Messages
    2 776
    Détails du profil
    Informations forums :
    Inscription : Novembre 1999
    Messages : 2 776
    Points : 2 549
    Points
    2 549
    Par défaut Exemple d'un devoir de licence 3 : Généricité, contraintes, exceptions
    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 ?

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Quelques petites remarques :

    • les delegates Generateur<T> et Afficheur<T> peuvent être supprimés, vu que tu utilises Func<int, T> et Action<T> à la place
    • la méthode Init ne vérifie pas l'unicité des éléments ; c'est vrai que ce n'est pas précisé dans l'énoncé, mais ça fait que la classe ne garantit plus son invariant...
    • dans la méthode Appartient, il vaudrait mieux utiliser EqualityComparer<T>.Default.Equals(...) pour vérifier l'égalité des éléments : en utilisant Object.Equals comme tu fais, si T est un type valeur (comme dans l'exemple avec l'ensemble d'entiers), les valeurs sont boxées à chaque appel, ce qui peut avoir un impact relativement important sur les performances si l'ensemble contient beaucoup d'éléments. Une pratique courante est de passer un comparateur en paramètre du constructeur pour indiquer une comparaison plus spécifique.
    • dans le set de l'indexeur, tu déclenches une exception même si la valeur affectée est la même que la valeur actuelle ; dans ce cas là il faudrait ne rien faire


    Après je trouve que le design de la classe est un peu bancal, mais tu n'y es pas pour grand chose, vu que tu as correctement suivi l'énoncé...

Discussions similaires

  1. [LVL] Adapter le code de l'exemple de la licence
    Par huberte dans le forum Android
    Réponses: 13
    Dernier message: 31/05/2012, 08h46
  2. Exemple GPS du SDK Windows Mobile 5 et Licence EULA Microsoft
    Par pscheven dans le forum Windows Mobile
    Réponses: 1
    Dernier message: 27/03/2008, 17h44
  3. Protection Logicielle via Licences, par exemple
    Par davcha dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 31/01/2008, 12h02
  4. recherche exemple simple pour corba en c++
    Par Pinggui dans le forum CORBA
    Réponses: 4
    Dernier message: 06/05/2002, 11h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo