Mixin

Mixin

Als Mixin wird in der objektorientierten Programmierung ein zusammengehöriges, mehrfach verwendbares Bündel von Funktionalität bezeichnet, das zu einer Klasse hinzugefügt werden kann. Von manchen Programmiersprachen werden Mixins direkt unterstützt, beispielsweise von Ruby oder Scala. In anderen Sprachen wird dieses Entwurfsmuster abhängig von den Möglichkeiten der jeweiligen Programmiersprache beispielsweise mittels Mixin-Klassen in Verbindung mit Mehrfachvererbung oder mittels generischer Programmierung umgesetzt.

Ein Trait ist eine besondere Form eines Mixins mit einer flexibleren Integration in Klassen.

Inhaltsverzeichnis

Beispiel

Modellierung eines Schachspiels (UML) und Mixin für Persistenz

Das folgende Beispiel stellt einen Anwendungsfall des Mixin-Entwurfsmusters dar. Es enthält eine Klassenhierarchie, die ein Schachspiel modelliert. In diesem Modell ist für die Klassen Zugfolge und Spielstellung angebracht, diese persistent machen zu können. Das bedeutet, dass Objekte dieser Klassen in einem nicht-flüchtigem Speichermedium – beispielsweise einer Datenbank – gespeichert und aus diesem wieder rekonstruiert werden können. Für andere Klassen dieses Modells ist die Unterstützung einer Persistenz dagegen nicht sinnvoll.

Das Mixin Persistenz könnte die Methoden StoreInDatabase und RestoreFromDatabase enthalten und mittels diesen ein Objekt der Klassen, bei denen dieses Mixin eingebunden wird, in der Datenbank speichern beziehungsweise aus dieser rekonstruieren. Im Unterschied zu Schnittstellen (Interface), wie sie beispielsweise in Java und C# üblich sind, enthält ein Mixin aber typischerweise bereits Funktionalität, die verwendet werden kann.

Mixins und Vererbung

Während in Sprachen wie C++ und Eiffel Mixins als Klassen unter Verwendung von Mehrfachvererbung abgebildet werden, gibt es auch die Sichtweise, eine Mixin-basierte Vererbung als Verallgemeinerung des in klassischen objektorientierten Sprachen wie Smalltalk oder Simula implementierten Vererbungmechanismus zu sehen. Wenn man Vererbung als inkrementellen Mechanismus betrachtet, der eine Basisklasse (B) modifiziert, ist das Ergebnis (E) eine Art Kombination der Basisklasse mit einer Modifikation (M). Dies lässt sich folgendermaßen formulieren:

E = B \, \triangle \, M = B + M(B)

Bei der Vererbung in konventioneller Form hat die Modifikation (M) keine unabhängige Existenz, sie ist Teil des Ergebnisses (E). Im Gegensatz dazu geht man bei der Mixin-basierenden Vererbung vom Standpunkt aus, dass die Modifikation eine Abstraktion ist, die unabhängig von der Basisklasse (B) und dem Ergebnis ist. Diese Modifikation ist das Mixin, das Symbol \trianglesteht für die Mixin Application, also die Anwendung des Mixins.

Programmiersprachen, die Mixins verwenden

In einzelnen Programmiersprachen sind Mixins Teil der Programmiersprache selbst. Ein Beispiel hierfür ist die Programmiersprache Ruby [1][2]. Andere Programmiersprachen benötigen externe Bibliotheken, um Mixins verwenden zu können. Ein Beispiel hierfür sind die Sprachen der Microsoft .NET Familie[3].

Eine umfangreiche Liste von Programmiersprachen, die Mixins unterstützen kann im englischsprachigen Wikipedia-Artikel zu Mixins nachgelesen werden.

Literatur

  • Iain D. Craig: Object-Oriented Programming Languages: Interpretation. Springer Verlag, London 2007, ISBN 1-84628-773-1

Weblinks

Quellen

  1. Ruby und Mixins: Webseite des Herstellers
  2. Objektorientierung_mit_Mixins bei Ruby: Wikipedia Artikel
  3. re-mix: mixin Bibliothek für .NET Sprachen auf CodePlex: Die Open Source re-mix Bibliothek auf CodePlex

Wikimedia Foundation.

Игры ⚽ Поможем решить контрольную работу

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Mixin’ It Up — Kompilationsalbum von Dan Reed Network Veröffentlichung 1993 Aufnahme 1989 bis 1993 Label …   Deutsch Wikipedia

  • Mixin — This article is about the programming concept. For the ice cream, see Mix in. In object oriented programming languages, a mixin is a class that provides a certain functionality to be inherited or just reused by a subclass, while not meant for… …   Wikipedia

  • Mixin — En lenguajes de programación orientada a objetos, un mixin es una clase que ofrece cierta funcionalidad para ser heredada por una subclase, pero no está ideada para ser autónoma. Heredar de un mixin no es una forma de especialización sino más… …   Wikipedia Español

  • Mixin — Un mixin, est une classe abstraite. 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. Par exemple, considérons une classe Maison . À cette classe nous pouvons… …   Wikipédia en Français

  • Mixin — Original name in latin Mixin Name in other language Mixin, Mixin Zhen, mi xin, mi xin zhen State code CN Continent/City Asia/Chongqing longitude 30.37985 latitude 105.76781 altitude 266 Population 0 Date 2012 11 10 …   Cities with a population over 1000 database

  • Mixin to Thrill — EP by Dragonette Released 3 August 2010 …   Wikipedia

  • Mixin-Klasse — Als Mixin wird in der objektorientierten Programmierung ein zusammengehöriges, mehrfach verwendbares Bündel von Funktionalität bezeichnet, das zu einer Klasse hinzugefügt werden kann. Von manchen Programmiersprachen werden Mixins direkt… …   Deutsch Wikipedia

  • Mixin — …   Википедия

  • mixin — noun In object oriented programming, an uninstantiable class that provides functionality to be inherited by a subclass …   Wiktionary

  • mixin' — n British fighting, from black speech. Synonyms are tanglin , startin …   Contemporary slang

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”