Mixin

En programmation orientée objet, 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.

Nature

Différence avec une classe

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

Une interface (en Java, C# 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

Les traits proviennent du langage Self. 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 possèdent des méthodes de mêmes noms[3].

Histoire

Ils sont apparus en 1986 dans Flavors (en), un précurseur de Common Lisp Object System[4].

Articles connexes

Références

  1. (en) Gilad Bracha et William Cook, Mixin-based Inheritance, OOPSLA,
  2. Florian MINJAT, « VERS UNE MODÉLISATION TRANSVERSE ET MODULAIRE DES COLLABORATIONS PAR COUPLAGE DES TRAITS ET DES CLASSBOXES »
  3. (en) Rachid Guerraoui, ECOOP '99 - Object-Oriented Programming: 13th European Conference Lisbon, Portugal, June 14-18, 1999 Proceedings, Springer, (lire en ligne)
  4. (en) David A. Moon, Object-oriented programming with flavors, OOPSLA,
  • Portail de la programmation informatique
  • Portail de l’informatique
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.