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

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Tutoriel : Créer ses propres classes génériques
Par Benjamin De Vuyst

Le , par Louis-Guillaume Morand

4PARTAGES

1  0 

Le framework .NET propose toute une panoplie de classes dites génériques.
L'exemple le plus connu est probablement les List<type> qui permet de créer des listes fortement typées.
Ce mécanisme est puissant, et nous pouvons nous aussi définir des classes génériques dans nos développements applicatifs.
Mais qu'est ce qu'une classe générique ?

http://bdevuyst.developpez.com/tutor...es-generiques/

donnez votre avis sur l'article

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de roster
Membre averti https://www.developpez.com
Le 14/05/2009 à 1:56
Très pratique les sources pour bien assimiler le tout.
Un grand merci!
0  0 
Avatar de Philippe Vialatte
Expert éminent sénior https://www.developpez.com
Le 18/05/2009 à 14:38
Pas mal comme article, pour montrer les bases des classes generiques.

Seul petit bemol, je ne trouve pas l'exemple super realiste (en fait, il serait peut-etre plus judicieux de faire une classe avec un contructeur acceptant les 3 interfaces, plutot que de faire un new sur les classes en question...mais c'est mon avis a moi que j'ai moi-meme ), et j'aimerais bien voir l'exemple du framework de DAL

Vivement l'article sur ton framework de DAL
0  0 
Avatar de Bluedeep
Inactif https://www.developpez.com
Le 18/05/2009 à 15:36
L'article est pas mal, il renseigne bien sur les bases.

Je mettrais un bémol toutefois : tant qu'à faire un article qui fournit les bases de l'utilisation de la généricité, il est un peu dommage que seul le cas des classes soit abordé, pas celui des méthodes, interfaces et delegate génériques (toutes choses qui sont largement aussi utiles que les classes, au moins pour les deux premières).
0  0 
Avatar de benji_dv
Rédacteur https://www.developpez.com
Le 19/05/2009 à 9:31
Effectivement, les remarques me semblent appropriées, concernant un exemple d'utilisation sur les delegates, ou interfaces, cela pourrait faire également l'objet d'un complément au tuto.
Je ne voulais pas "brouiller" les pistes des personnes abordant ces concepts.

Mais effectivement, remarques pertinentes, j'en tiendrai compte pour la suite.
Merci bcp
0  0 
Avatar de Alp
Expert éminent sénior https://www.developpez.com
Le 22/05/2009 à 12:30
Tiens, c'est agréable de découvrir ce genre de choess en .NET.

Est-ce qu'on peut "jouer" comme en C++ pour découper les classes selon ce que l'on appelle le "Policy Based Design" : http://alp.developpez.com/tutoriels/...raitspolicies/ ?

Ca assouplirait pas mal les designs et ça donnerait un énorme +.
0  0 
Avatar de SpiceGuid
Membre émérite https://www.developpez.com
Le 22/05/2009 à 16:57
J'ai vaguement survolé tous ces tutoriels sur les génériques, en m'attardant surtout sur celui de sjrd (Les génériques avec Delphi 2009 Win32).

J'imagine que chaque tutoriel a ses propres objectifs et il est fort possible que mes commentaires qui suivent soient partiellement ou totalement hors-sujet.
Disons qu'il s'agit plus d'un éclairage sur les génériques en général, de la façon de les comprendre et de les présenter, que d'une critique du présent tutoriel.

Selon moi la notion de type générique est souvent introduite d'une façon trop indépendante des notions déjà acquises :
  • la généricité c'est avant tout paramétrer les types par des types
  • du coup on a des types arguments formels et des types arguments réels
  • la généricité se comporte d'une façon très similaire à l'application de fonction quant au nombre et à la compatibilité des types arguments


Citation Envoyé par Créer ses propres classes génériques
public class Vehicule <ClassChassis, ClassMoteur, ClassRoues>
Cette syntaxe définit trois types manipulés au sein de ma classe (ClassChassis, ClassMoteur, ClassRoues)
Ce sont 3 types formels.
À mon avis le but d'un tutoriel sur la généricité c'est d'expliquer la différence entre types paramétrés, types concrêts, types formels et types réels. Ne pas expliquer cette différence c'est laisser le lecteur dans son ignorance du mécanisme de la généricité.

C'est tout simple :
  1. List<T> est un type paramétré où T est le type argument formel
  2. List<Int32> est un type concrêt où Int32 est le type argument réel

(ceux qui liront mon tutoriel sur les modules d'ordre supérieur pourront constater que ça marche aussi avec les modules, modules paramétrés, modules concrêts, modules formels et modules réels. en fait on a tout dit quand on a dit qu'un type générique est un type d'ordre supérieur)

On a tout intérêt à réutiliser le vocabulaire connu surtout quand il est simple, clair et systématique.
Une fois qu'on a introduit ces notion basiques on peut passer plus sereinement aux notions avancées (généricité contrainte, covariance/contravariance, traits,...) qui sont plus spécifiques à chaque langage. À la limite on devrait avoir un template de tutoriel sur les génériques, valable pour tous les langages majeurs du forum et qu'on spécialiserait pour chacun d'eux. En l'absence d'un tel tutoriel générique je suis d'avis que celui de sjrd est un modèle à imiter sans modération.
0  0