Mixin

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 bien un medio de obtener funcionalidad. Una subclase puede incluso escoger heredar gran parte o el total de su funcionalidad heredando de uno o más mixins mediante herencia múltiple.

Un mixin puede aplazar la definición y la vinculación de métodos hasta el tiempo de ejecución, aunque los atributos y los parámetros de instanciación siguen siendo definidos en tiempo de compilación. Esto se diferencia del enfoque más comúnmente utilizado, originario del lenguaje de programación Simula, en el que se definen todos los atributos, métodos e inicialización en tiempo de compilación.

Los mixins fueron utilizados por primera vez en Flavors, que era un enfoque a la orientación a objetos utilizado en Lisp Machine Lisp. La ventaja de los mixins es que fomentan la reutilización de código y evitan problemas típicos asociados con la herencia múltiple. Sin embargo, los mixins tienen sus propias limitaciones.

Contenido

Definición e implementación

En Simula, las clases son definidas en un bloque en que los atributos, métodos e inicialización de clase están definidas todos juntos; por lo que todos los métodos que pueden ser invocados en una clase están definidos juntos, y la definición de la clase es completa.

Con mixins, la definición de clase define sólo los atributos y los parámetros asociados con esa clase; se deja que los métodos se definan en otro sitio, como en Flavors y CLOS, y son llamados "funciones genéricas". Estas funciones genéricas son funciones que están definidas en muchos casos por type dispatch.

Además de Flavors y CLOS, otros lenguajes que usan mixins son:

Ejemplo

En Python, el módulo SocketServer tiene las clases UDPServer y TCPServer que actúan como servidor de servidores socket UDP y TCP. Normalmente, todas las nuevas conexiones son manejadas dentro del mismo proceso. Además, hay dos clases mixin: ForkingMixIn y ThreadingMixIn. Extendiendo TCPServer con ThreadingMixIn de la siguiente forma,

class ThreadingTCPServer(ThreadingMixIn, TCPServer):
  pass

la clase ThreadingMixIn añade funcionalidad al servidor TCP de forma que cada nueva conexión crea un nuevo hilo. Análogamente, el uso de ForkingMixIn haría que el proceso hiciese un fork para cada nueva conexión. Evidentemente, la funcionalidad de crear un nuevo hilo o un nuevo fork no es de gran utilidad como clase autónoma.

En este ejemplo de uso, los mixins ofrecen una funcionalidad esencial sin afectar la funcionalidad como servidor socket.

Comentario

Parte de la funcionalidad de los mixins es ofrecida por interfaces en lenguajes populares como Java y C#. Sin embargo, puesto que una interfaz sólo especifica a qué debe soportar la clase y no puede ofrecer una implementación, sólo es útil para ofrecer polimorfismo. Otra clase, ofreciendo una implementación y dependiente de la interfaz, sería útil para reprogramar un comportamiento común en un solo sitio.

Las interfaces, combinadas con programación orientada a aspectos, pueden crear mixins completos en lenguajes que soporten estas características, como C# o Java.

Los mixins aparecieron por primera vez en el sistema orientado a objetos simbólicos Flavors, y el nombre fue inspirado por la heladería Steve (Steve's Ice Cream Parlor), en Massachusetts. [1] El propietario de la heladería ofrecía un sabor básico de helado (vainilla, chocolate, etc.) mezclado con una combinación de elementos (frutos secos, galletas, dulce de azúcar, etc.) y lo llamó "Mix-In", su propia marca registrada entonces. [2]

Enlaces externos


Wikimedia foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Mira otros diccionarios:

  • 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 — 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 — 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

Compartir el artículo y extractos

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