Mixin

Nella programmazione orientata agli oggetti , una classe mixin o mixin è una classe concepita per essere composta da ereditarietà multipla con un'altra classe per fornirle funzionalità. Questo è un caso di riutilizzo dell'implementazione. Ogni mixin rappresenta un servizio che può essere innestato nelle classi eredi.

Natura

Differenza con una classe

A differenza di una classe, un mixin non è pensato per essere utilizzato da solo.

Semanticamente, non esiste una relazione "è tipo" tra un'istanza e un mixin.

I mixin sono talvolta definiti come una "sottoclasse astratta", cioè una classe senza una superclasse concreta.

Differenza con un'interfaccia

Un interfaccia (in Java, C # o Pascal) o di una classe virtuale pura (in C ++) o di un protocollo (in Objective C ) è una classe astratta , senza applicazione: tutti i metodi sono astratti.
Al contrario , un mixin contiene metodi concreti.

Differenza con una linea

Le linee provengono dal linguaggio del . Sono simili ai mixin tranne per il fatto che la loro composizione non è necessariamente lineare, grazie a un meccanismo per risolvere più conflitti di ereditarietà , quando alcuni hanno metodi con lo stesso nome.

Storia

Sono apparsi nel 1986 in Flavours  (in) , un precursore del Common Lisp Object System .

Articoli Correlati

Riferimenti

  1. (en) Gilad Bracha e William Cook , Mixin-based Inheritance , OOPSLA,1990
  2. Florian MINJAT , "  VERSO UNA MODELLAZIONE TRASVERSA E MODULARE DI COLLABORAZIONI ATTRAVERSO LINEE DI ACCOPPIAMENTO E CLASSBOX  "
  3. (in) Rachid Guerraoui , ECOOP '99 - Object-Oriented Programming: 13th European Conference Lisbon, Portugal, June 14-18, 1999 Proceedings , Springer,31 luglio 2003( leggi online )
  4. (in) David A. Moon , Programmazione orientata agli oggetti con sapori , OOPSLA,1986