Hoy durante clases, revisabamos el concepto de polimorfismo. En pocas palabras polimorfismo es cuando un objeto se comporta diferente dependiendo de su contexto. Dicho de otra forma, es cuando hace algo diferente si esta en un sitio u otro.
Los ejemplos clasicos son:
tienes la funcion N() que recibe como parametros dos cosas
N( int )
N( String )
dependiendo de lo que reciba, hara una accion diferente.
Lo interesante es lo que se comento en clase el dia de hoy, veiamos un ejemplo donde un objeto se transformaba tal cual, de un objeto clase guitarra a un objeto clase flauta, esta transformacion cambio la funcion tocar() de la guitarra al de la flauta y fue un cambio tan directo y rapido que solo costo tres lineas:
Instrumento Guitarra = new Guitarra ();
Flauta FL = new Flauta ();
Guitarra = FL;
Al tener estas tres lineas, creamos la guitarra como si fuera un instrumento, es decir, la clase padre de Guitarra, sin embargo creamos una guitarra. Al hacer la asignacion (Guitarra = FL) lo que hacemos enrealidad es transformar de la clase Guitarra a la clase Flauta el objeto, todo gracias a que creamos la guitarra como si fuera de la clase instrumento.
Independientemente de que haya entendido esto como esta escrito, lo que vale la pena aqui es notar lo siguiente:
Imaginemos un videojuego de aventuras en el que empezamos siendo un ciudadano. Acorde al trabajo que consigamos, nuestro "CLASS ciudadano" cambiara a algun otro, digamos, bombero "CLASS: bombero". Debido a que nos contrataron como bombero, ahora podremos hacer cosas diferentes, como apagar incendios, usar un hacha, o ser mas resistentes al fuego. En fin, todas estas cosas se pueden hacer gracias a que nuestro personaje del videojuego hizo un cambio de su clase. es decir, lo que paso en el juego fue mas o menos lo siguiente:
personaje miPersonaje = new Ciudadano();
//mi personaje va y consigue trabajo, luego pasa lo siguiente.
miPersonaje = Bombero;
En este momento, miPersonaje, que anteriormente era un ciudadano se transforma en un bombero, cambiando su funcionalidad a otras muy distintas.
Este cambio, me parecio mas que sorprendente, increiblemente util. Si nosotros pensamos por ejemplo en el caso de los videojuegos, en el cambio de profesiones, el cambio en la programacion es tan simple como la sentencia "fulanita = fulanito".
Creo que el polimorfismo es una herramienta muy poderosa para la programacion, por que, usado adecuadamente, podemos lograr una codificacion mas dinamica y ligera, nos podremos ahorrar muchos objetos si logramos dominar bien esta cualidad de la orientacion a objetos.
No hay comentarios:
Publicar un comentario