¿Qué es una mezcla?

En la programación de computadoras, una mezcla es una clase que está heredada por otra clase pero no está destinada a ser instanciada. Una sola clase puede heredar muchas mezclas, por lo que muchas colecciones de funciones se pueden consolidar fácilmente. Aunque muchos lenguajes de programación comunes usan la metodología de mezcla, hay muchos más que no, incluidos C ++ y Java. En general, las mezclas se encuentran en los idiomas de secuencias de comandos o en aquellos idiomas que tienen la capacidad de crear scripts, como JavaScript y Perl.

Las mezclas son únicas en que se convierten en parte de una subclase durante la compilación. Sus métodos y constantes se incluyen en la subclase. Otro rasgo único de clases de mezcla es que los métodos pueden definirse y vincularse a objetos en tiempo de ejecución. La mayoría de los idiomas utilizan un enfoque diferente, vinculación y definición de métodos en el tiempo de compilación en lugar del tiempo de ejecución. Esta encuadernación de tiempo de ejecución permite que las mezclas sean muy flexibles.

un tipo comúnEM en la herencia múltiple es la ambigüedad en la llamada del método, y las mezclas pueden resolver este problema porque no siguen precisamente las mismas reglas que la herencia múltiple. Por ejemplo, la herencia múltiple puede crear un llamado "diamante de la muerte", donde una clase matriz A tiene subclases B y C, y una clase D hereda de ambas clases B y C. El problema en este escenario es que los métodos que tienen el mismo nombre en las clases A, B y C pueden ser inevitados en la Clase D, lo que hace múltiples versiones del mismo método sin claras distinciones. Mixins resuelve este problema manteniendo cada versión del método distinto, en lugar de intentar sobrescribirlos como en la herencia múltiple estándar.

Mixins no anule los métodos en las clases en las que se heredan. Por ejemplo, si una clase A definiera un método "mymethod" y heredó una mezcla B que también definió el método "mymethod", ambos métodos aún podrían llamarse sin ambigüedad y la implementación de "mymethod" en la clase ATodavía sería completamente accesible. Exactamente cómo se llamarían estos métodos depende del idioma en el que se implementa la mezcla.

Algunos lenguajes de programación que no usan Mixins, como Java, usan interfaces para imitarlas. Las interfaces en estos idiomas no emulan la funcionalidad completa de las mezclas, porque las interfaces pueden contener solo constantes y declaraciones de métodos. Mixins, por otro lado, puede contener implementaciones completas de métodos. Esos idiomas que no admiten mixins a menudo tienen alternativas viables que pueden ser persuadidas para hacer aproximadamente lo mismo.

OTROS IDIOMAS