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 :
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