..
A veces se desea crear una clase de objetos que tienen "esta" característica, sino también "esto" y "otros esta", que quizás ya se ha escrito en otra parte de nuestro código fuente.
En otras palabras, queremos crear una clase que toma prestados métodos y propiedades definidas en otras partes del código fuente o en alguna biblioteca.
Por el contrario, nos reuníamos alrededor de las mismas características que el código fuente en un lugar accesible para todos. ¿Cómo?
Los puristas se horrorizan programación orientada a objetos y el apoyo - en mi opinión no del todo sin razón - que todas las necesidades de este tipo se puede resolver con el uso adecuado de polimorfismo.
Otros, sobre todo si proceden de la experiencia con otros lenguajes como C + +, argumentan que precisamente a causa de estos requisitos con la herencia múltiple.
Lenguajes como Ruby pragmática, sin embargo, abordar el tema mediante una técnica llamada "mixin", el nombre - lo que parece! - Un heladero le dio la Massuchussets compuesto de varios sabores de helado (crema, chocolate ...)
El mixins Rubí
Técnicamente, mixins Rubí se implementan utilizando dentro de las clases, el código se define en los diferentes módulos (módulo).
Para tomar un ejemplo trivial, supongamos que yo quería implementar un procesador de texto que automáticamente imprimir mi amistad de una carta de negocios. Puesto que usted desea introducir únicamente los datos necesarios, es decir, el destinatario y el mensaje. El programa que los diferentes amigable como "Sir" y "Atentamente".
Vamos a comenzar por definir en una forma amigable:
módulo CordialitaLettera
definición de inicio (dirección)
return "Estimado Sr.". + receptor + "\ n"
final
la firma final (carta)
retorno carta + "\ n" + "Sinceramente, \ nCarlo Smith"
final
final
Nada en particular, entonces, sólo dos métodos que puede cambiar el texto recibido como entrada.
Vamos a escribir una clase de "mixtos" a estos métodos, sólo un mixin:
Cartas de clase
incluye CordialitaLettera
finales stampaLettera (receptor, mensaje)
= Punto de inicio (receptor)
= Carta + mensaje
pone la firma (carta)
final
final
Cartas encima de la clase tiene un método que toma como entrada sólo las partes variables de la carta, con formato amigable definidos en el módulo.
Como se puede ver la sintaxis es muy similar a la herencia en Ruby, sin embargo, a diferencia de éste, en una clase puede implementar cualquier número de formas - y como es sabido, una clase puede derivarse de una y sólo uno de los padres de clase (Ruby no soporta la herencia múltiple!)
Por ejemplo, podemos escribir:
def main ()
Lengin = Lettere.new
lEngine.stampaLettera ('Alessio Saltarini,
"Yo sólo procedió a la transferencia
que ha solicitado.)
pone
lEngine.stampaLettera (Matthew Pisconi,
"Puedo enviar el fax a nr.038283873. ')
final
que devuelve:
Estimado sig.Alessio Saltarini, Acabo de hacer la transferencia solicitada. Atentamente, Carlo Rossi
Estimado sig.Matteo Pisconi, Puedo enviar el fax a nr.038283873. Atentamente, Carlo RossiEsta técnica, entre otras cosas, nos permite asimilar el uso de mixins de las interfaces de Java: de hecho, si una clase es la "mezcla" con una forma, de hecho, se compromete a aplicar los métodos (y por lo tanto cumple una determinada interfaz) .
| |
Ruby y Ruby on Rails (Curso)
Crear aplicaciones de software y la Web con Ruby y RoR. A partir de 39 €. |