C# raffinement de classes, méthodes d’extension

23 04 2010

Bonjour,

En ce moment à Montréal pour cours et stage, je suis un cours de langage objet avancé.

Dernièrement, on nous a introduit la notion de raffinement de classes et hiérarchie de module (grossièrement dit comme ça)

Le raffinement de classe en théorie c’est génial, mais en pratique, très très peu de langages l’on implémenté. Alors j’ai quand même fait un petit tour du côté de C# pour voir si un petit quelque chose avait été fait. Eh bien oui, certes à un niveau encore très basique, mais qui est déjà très intéressant.

Pour faire simple, le raffinement de classe :

On parle de raffinement de classes
– Ajout/redéfinition de propriétés
– Ajout de super-classes

Comme dit un peu plus tôt, C# n’a introduit qu’un léger, très léger aspect de ce concept. Car implémentation difficile dans les langages à typage statique.

Ce dernier permet l’ajout de méthode par extension d’une classe. Si vous avez connu le .Net avant l’apparition de Linq, vous vous êtes peut-être posé une question, d’où viennent ces nouvelles méthodes présentes dans mon objet String ??

Allez hop un exemple :

namespace MyFwk.StringExtensions

{

public static class StringExtensions

{

public static string RemoveDiacritics(this String inputString)

{

// TODO : Implement method

return stringBuilder.ToString();

}

}

}

Dans le projet :

using MyFwk.StringExtensions

namespace myProject.Toto{

public class Titi{

public Titi(string x){

string root = x;

x.RemoveDiacritics();

}

}

}

Et voilà, fini la création de classes pour compléter par une ou deux méthodes une classe existante du framework ou d’une dll managé (ou autre mais je n’ai pas testé).

Biensur, comme dis plut tôt, on est encore loin du vrai raffinement, car en plus, on ne peut override une méthode existante.

Aussi, le raffinement de classes doit être utilisé à bon escient, car c’est pas forcément plus facile à maintenir dans des processus de réutilisation.

Source du cours : Jean Privat, Uqam


Actions

Information

Répondre

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Twitter picture

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Connexion à %s




Suivre

Get every new post delivered to your Inbox.