fbpx
Wikipedia

Mixin

En los 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.

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 solo 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#.[notas 1]​ 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.

Notas

  1. En la versión 8 de Java el concepto de interfaz varía.

Referencias

  1. Mixins

Enlaces externos

  • en ActionScript (en inglés)
  • - un ejemplo paso a pasao en Scala (en inglés)
  • The Common Lisp Object System: Visión general de Richard P. Gabriel y Linda DeMichiel ofrece una buena introducción a la motivación para definir clases por medio de funciones genéricas. (en inglés)
  •   Datos: Q775794

mixin, lenguajes, programación, orientada, objetos, mixin, clase, ofrece, cierta, funcionalidad, para, heredada, subclase, pero, está, ideada, para, autónoma, heredar, mixin, forma, especialización, sino, más, bien, medio, obtener, funcionalidad, subclase, pue. En los lenguajes de programacion orientada a objetos un mixin es una clase que ofrece cierta funcionalidad para ser heredada por una subclase pero no esta ideada para ser autonoma Heredar de un mixin no es una forma de especializacion sino mas bien un medio de obtener funcionalidad Una subclase puede incluso escoger heredar gran parte o el total de su funcionalidad heredando de uno o mas mixins mediante herencia multiple Un mixin puede aplazar la definicion y la vinculacion de metodos hasta el tiempo de ejecucion aunque los atributos y los parametros de instanciacion siguen siendo definidos en tiempo de compilacion Esto se diferencia del enfoque mas comunmente utilizado originario del lenguaje de programacion Simula en el que se definen todos los atributos metodos e inicializacion en tiempo de compilacion Los mixins fueron utilizados por primera vez en Flavors que era un enfoque a la orientacion a objetos utilizado en Lisp Machine Lisp La ventaja de los mixins es que fomentan la reutilizacion de codigo y evitan problemas tipicos asociados con la herencia multiple Sin embargo los mixins tienen sus propias limitaciones Indice 1 Definicion e implementacion 2 Ejemplo 3 Comentario 4 Notas 5 Referencias 6 Enlaces externosDefinicion e implementacion EditarEn Simula las clases son definidas en un bloque en que los atributos metodos e inicializacion de clase estan definidas todos juntos por lo que todos los metodos que pueden ser invocados en una clase estan definidos juntos y la definicion de la clase es completa Con mixins la definicion de clase define solo los atributos y los parametros asociados con esa clase se deja que los metodos se definan en otro sitio como en Flavors y CLOS y son llamados funciones genericas Estas funciones genericas son funciones que estan definidas en muchos casos por type dispatch Ademas de Flavors y CLOS otros lenguajes que usan mixins son D llamados template mixins 1 Dart Dylan Javascript Ember js Perl Python Racket una implementacion de Scheme Ruby Scala Smalltalk Vala XOTcl un sistema de objetos para Tcl Ejemplo EditarEn Python el modulo SocketServer tiene las clases UDPServer y TCPServer que actuan como servidor de servidores socket UDP y TCP Normalmente todas las nuevas conexiones son manejadas dentro del mismo proceso Ademas hay dos clases mixin ForkingMixIn y ThreadingMixIn Extendiendo TCPServer con ThreadingMixIn de la siguiente forma class ThreadingTCPServer ThreadingMixIn TCPServer pass la clase ThreadingMixIn anade funcionalidad al servidor TCP de forma que cada nueva conexion crea un nuevo hilo Analogamente el uso de ForkingMixIn haria que el proceso hiciese un fork para cada nueva conexion Evidentemente la funcionalidad de crear un nuevo hilo o un nuevo fork no es de gran utilidad como clase autonoma En este ejemplo de uso los mixins ofrecen una funcionalidad esencial sin afectar la funcionalidad como servidor socket Comentario EditarParte de la funcionalidad de los mixins es ofrecida por interfaces en lenguajes populares como Java y C notas 1 Sin embargo puesto que una interfaz solo especifica a que debe soportar la clase y no puede ofrecer una implementacion solo es util para ofrecer polimorfismo Otra clase ofreciendo una implementacion y dependiente de la interfaz seria util para reprogramar un comportamiento comun en un solo sitio Las interfaces combinadas con programacion orientada a aspectos pueden crear mixins completos en lenguajes que soporten estas caracteristicas como C o Java Los mixins aparecieron por primera vez en el sistema orientado a objetos simbolicos Flavors y el nombre fue inspirado por la heladeria Steve Steve s Ice Cream Parlor en Massachusetts 1 El propietario de la heladeria ofrecia un sabor basico de helado vainilla chocolate etc mezclado con una combinacion de elementos frutos secos galletas dulce de azucar etc y lo llamo Mix In su propia marca registrada entonces 2 Notas Editar En la version 8 de Java el concepto de interfaz varia Referencias Editar MixinsEnlaces externos EditarMixins en ActionScript en ingles Vision general de Scala Composicion de clases mixin un ejemplo paso a pasao en Scala en ingles The Common Lisp Object System Vision general de Richard P Gabriel y Linda DeMichiel ofrece una buena introduccion a la motivacion para definir clases por medio de funciones genericas en ingles Datos Q775794 Obtenido de https es wikipedia org w index php title Mixin amp oldid 120656955, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos