Mixin
|
|
Cet article est une ébauche concernant l’informatique.
Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants.
|
Un mixin ou une classe mixin est une classe destinée à être composée par héritage multiple avec 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.
Sommaire |
Nature [modifier]
Différence avec une classe [modifier]
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]
Une interface (en Java ou Pascal) ou une classe virtuelle pure (en C++) ou un protocole (en Objective C) est une classe abstraite sans implémentation : toutes les méthodes sont abstraites. A contrario un mixin contient des méthodes concrètes.
Différence avec un trait [modifier]
Les traits proviennent du langage Self. Ils sont assez proches des mixins mais offrent d'autres techniques que l'héritage multiple pour enrichir la classe de base.
Histoire [modifier]
Ils sont apparus en 1986 dans Flavors (en), un précurseur de Common Lisp Object System[2]
Références [modifier]
- Mixin-based inheritance, Gilad Bracha et William Cook, OOPSLA 1990
- Object-oriented programming with flavors, David A. Moon, OOPSLA 1986