Mixin
Enprogrammation orientée objet,unmixinou uneclasse mixinest uneclassedestinée à être composée parhéritage multipleavec une autre classe pour lui apporter des fonctionnalités. C'est un cas de réutilisation d'implémentation. Chaque mixin représente un service qu'il est possible de greffer aux classes héritières.
Nature
[modifier|modifier le code]Différence avec une classe
[modifier|modifier le code]Contrairement à une classe, un mixin n'est pas destiné à être utilisé seul.
Sémantiquement, il n'y a pas de relation « est une sorte de » entre une instance et un mixin.
Les mixins sont parfois définis comme une « sous-classe abstraite », c'est-à-dire une classe sans superclasse concrète[1].
Différence avec une interface
[modifier|modifier le code]Uneinterface(en Java, C# ou Pascal) ou une classe virtuelle pure (en C++) ou un protocole (enObjective C) est uneclasse abstraitesans implémentation: toutes les méthodes sont abstraites.
A contrario,un mixin contient des méthodes concrètes.
Différence avec un trait
[modifier|modifier le code]Lestraitsproviennent du langageSelf.Ils sont similaires aux mixins sauf que leur composition n'est pas obligatoirement linéaire[2],grâce à un mécanisme de résolution des conflits d'héritage multiple,quand certains pos sắc dent des méthodes de mêmes noms[3].
Histoire
[modifier|modifier le code]Ils sont apparus en 1986 dansFlavors(en),un précurseur deCommon Lisp Object System[4].
Articles connexes
[modifier|modifier le code]Références
[modifier|modifier le code]- (en)GiladBrachaet WilliamCook,Mixin-based Inheritance,OOPSLA,
- FlorianMINJAT,«VERS UNE MODÉLISATION TRANSVERSE ET MODULAIRE DES COLLABORATIONS PAR COUPLAGE DES TRAITS ET DES CLASSBOXES»
- (en)RachidGuerraoui,ECOOP '99 - Object-Oriented Programming: 13th European Conference Lisbon, Portugal, June 14-18, 1999 Proceedings,Springer,(lire en ligne)
- (en)DavidA. Moon,Object-oriented programming with flavors,OOPSLA,