Antes de comenzar con la explicación y ejercicio de 2015 y 2015 yo les recomendaría que ustedes miren
en el material adjunto este enlace que les estoy dejando esta explicación a mí me gustó mucho y vamos
a recrear este ejercicio.
Para resumirlo es un poco lo que es un mixing es una forma de darle a las clases o de sólo asignar lo
que nosotros necesitamos para ciertas clases.
Por ejemplo nosotros vamos a tener nuestra clase Animal de la cual se van a extender tres clases como
los mamíferos los pájaros o las aves y los peces.
Ahora hay diferentes tipos de cada uno de ellos.
Por ejemplo el delfín es un mamífero pero sólo puede nadar.
Luego tenemos un murciélago que sólo puede caminar y puede volar.
él no puede nadar y por eso solo salen estas dos opciones y el gato sólo puede caminar.
Si vemos las aves que las aves también existen de los animales tenemos que la paloma puede caminar y
puede volar y el pato es de los pocos que pueden hacer todo puede volar puede nadar y puede volar.
Y por último tenemos los peces en este caso tenemos un tiburón que si es un pez es un animal pero él
sólo puede nadar.
Luego tenemos el pez volador que puede nadar y puede volar.
Vamos a integrar este ejercicio y yo los invito a que si ustedes quieren saber más sobre los mixing
que vamos a usar cuando hagamos validaciones y trabajemos con el patrón Blok.
Así que yo los invito a que ustedes lean este artículo.
Lástima que no está en español pero la verdad es que es bastante ilustrativo lo que ustedes pueden hacer
con los mixing y los invito a que la lean así que vamos a implementar este ejercicio.
Nosotros simplemente vamos a ser un ejemplo global utilizando los mixing como se miran en ese documento.
Empecemos creando la clase animal ahora ojales aquí los animales serían que son seres vivos tienen sangre
etc. Todas las propiedades y métodos que podemos agrupar en un animal pero yo no quiero que eventualmente
nosotros vayamos a crear directamente clases o instancias de al animal por eso la voy a poner abstracta
abstracta para que no se puedan crear clases de esta instancia.
Ok ahora empecemos con los mamíferos la clase mamífero va a extender extensión de animal.
Qué quiere decir esto.
Bueno que los mamíferos tienen todas las características y propiedades y métodos que hacen a un animal.
Pero aquí lo tengo como los mamíferos.
Adicionalmente yo no voy a querer crear clases de tipo mamífero.
Entonces va a ser abstracta.
O sea solo quiero que me sirva esto para heredar todas las características que tiene un mamífero como
por ejemplo que tienen sangre caliente que dan de amamantar a las crías etc. que todo lo que hace a
un mamífero voy a copiar esto y voy a pegarle tres veces.
Necesitamos también trabajar con las aves oponerle.
Y también voy a trabajar con los peces y les voy a poner pez todas se extienden de animales porque obviamente
cada uno es animal pero hay características especiales en cada uno de ellos por ejemplo que las aves
nacen de huevos que los peces son de sangre fría etcétera etcétera.
Yo no soy experto en biología y si digo alguna brutal y me disculpan por favor especialmente las personas
que están muy metidas en ese área ahora yo voy a definir clases que me van a permitir a mí extenderlo
o en este caso mezclarlo.
Cómo se miran acá.
Voy a crearme la clase que me permite volar que me permite caminar y que me permite volar.
Entonces hagámoslo acá abstract clase porque yo no quiero crear clases de esta instancia simplemente
va a ser volador a orillero llaves y voy a crearme un método hoy que se llame volar parentesis y lo
único que va a hacer es imprimir.
Estoy volando puntico.
Voy a hacer esto mismo otras dos veces.
Esta va a ser caminante aquí estoy caminando y la última va a ser esto va a ser nadador.
Estoy nadando o que noten que como son todas todas abstractas yo no puedo crear instancias de cada una
de ellas van va a ser clases principales y esas van a ser mis mixing.
Como ustedes pueden notar no hay ninguna diferencia directa aunque también podríamos definirlo como
mixing pero ya en estas alturas podemos utilizar la palabra Class perfectamente para hacer un mixing.
Ya van a ver cómo lo mezclamos.
Ok entonces voy a empezar a crearme un par de animales como se encuentran acá.
Voy a empezar a trabajar con esos ñaca.
Empecemos con el delfín el delfín es un mamífero obviamente extimidad animal y sólo puede nadar.
Entonces creednos esa clase clase Delfín extent o extiende de mamífero mamífero pero va a tener las
propiedades de un nadador entonces Wiz.
Esa es la palabra para hacer el mixing nadador.
Abren y cierran llaves.
Ya tengo mi clase definida.
No hace falta puntico Macky.
Entonces ya está mi clase definida.
Ahora vamos a hacer lo mismo con otro animal vamos un murciélago el murcielago sin acento porque no
se pueden usar acentos o caracteres especiales para nombrar las variables o clases.
El murciélago también es un mamífero.
No es un nadador pero sí es un caminante.
Si puede caminar y también puede volar cuando ustedes quieren usar dos o más mixing entonces eso separan
por comas.
Pero bola volador ahora sí vamos a bajar un poco más.
Luego tenemos un gato la clase gato extent de un mamífero porque es un mamífero y el mixing que yo voy
a utilizar con este gato pues básicamente lo único que puede hacer es un caminante caminante orillero
Rojas gerente perfectamente ustedes pueden seguir esto e inventarse cualquier cantidad de mezclas y
animales que ustedes se les ocurra.
No voy a hacer otra clase llamada Paloma sea un ave extensa de los de las aves un ave y el mixing que
va a usar las palomas pueden volar entonces y también pueden caminar entonces va a ser caminante y volador
los Vixen que estaban ahí.
Sigamos ahora vamos con el pato el pato extiende un ave y va a tener los métodos de un caminante puede
caminar el pato es un volador también volador y a su vez también es un nadador nada nadador.
Perdón.
Ok sigamos.
Vamos con un tiburón clase tiburón extremes de qué de un pez.
Y él es un solo nadador sólo puede nadar un nadador abren cierran Jaures y por último hagamos el pez
volador entonces Pez Volador extent de un pez y los métodos que va a tener son los de un nadador y un
volador aunque realmente no vuela pero sale y planea su rato y después vuelve al agua.
Pero ustedes me entienden.
Ok entonces qué hicimos con todo este montón de código.
Bueno hemos creado clases de FIH murciélago gato o Paloma y si quisiéramos manejarlos cada uno de ellos
entonces ya tenemos centralizado cada una de la lógica que puede hacer un animal.
Por ejemplo aquí serían todas las características que pueden hacer los mamíferos todas las aves y todos
los peces y aquí dentro todo lo que puedan hacer los buenos los animales que puedan volar.
Todos los animales que puedan caminar y aquí esto está mal sería caminar y aquí sería nadar perdón.
Y de esta manera yo puedo centralizar y hacer esto bien específico pero siempre centralizando toda la
lógica para poder tener todas las demás clases o características en común de una manera un poco más
sencillas para utilizarlo.
Digamos que hagamos un ejercicio rápido hagamos un void main y serán parentesis abren cierran llaves.
Empecemos con el pato por ejemplo.
Entonces voy a poner fin al Pato es igual a un pato parentesis Póntico.
Y el pato.
Si lo vemos acá va a tener la opción de caminar nadar y volar.
Digamos que puede volar y lo dejamos.
Hoy sigo ejecutó el programa.
Entonces va a decir que aquí estoy volando perfecto.
Y ahora probemos con el pez volador final Pez Volador va a ser igual a New Boys volador parentesis punto
y coma.
Y ahora preguntemos si el pez volador que pueda ser bueno aquí tenemos que puede nadar y puede volar
perfectamente.
Esa es una idea general de los micosis que me sirvan a mí para asignar los métodos o propiedades que
yo necesite.
Vamos a dejar esta clase así y los invito a que se tomen la molestia de revisar todo este ejercicio
porque este es un documento bastante interesante.
Como les dije Lástima que sólo está en inglés pero las personas que lo entienden traten de darle una
lectura.
Esto nos va a servir bastante.
Lo dejamos así continuamos con la siguiente clase.