Programación Orientada
a Objetos
Unidad 3 - Herencia y Polimorfismo
Polimorfismo
El termino está referido a métodos que pueden actuar de diferente manera
teniendo el mismo identificador (nombre)
En el caso de la herencia se refiere a que las clases hijas pueden actuar de
diferentes formas en tiempo de ejecución usando un mismo método.
Ejemplo de Polimorfismo
Supongamos desarrollamos un software que me permita representar de
manera textual los sonidos de diferentes animales. Tengamos en cuenta que
todos los animales hacen un sonido pero todos lo hacen de manera diferente.
Esto quiere decir que tenemos que saber qué animal es para poder
representar el sonido correcto.
Solución Propuesta
En este caso podemos ver que para poder
generar el sonido adecuado tenemos que saber
qué tipo de animal es para que se pueda hacer
el sonido.
El problema es que si quiero que el programa me
permita mostrar el sonido de más animales
vamos a tener que hacer crecer la estructura
selectiva mucho más creando un problema de
mantenimiento y escalabilidad que aumentará
conforme hay más animales en el programa.
Solución Propuesta
En este caso podemos ver que en lugar de
hacer que un método haga el trabajo de
todos los animales usamos la herencia para
definir la jerarquía y el polimorfismo para
que cada clase se encargue de hacer el
sonido que le corresponde.
Esto permite que el crecimiento del software
sea mucho más limpio, menos complicado
respecto a las estructuras selectivas y de
mejor escalabilidad.
Solución Propuesta
A partir de este punto podemos definir en
la clase padre el funcionamiento del
método y luego podemos sobre escribirlo
creando nuevas funcionalidades agregadas
a la de la clase padre.
Hay que tomar que en este caso asumimos
que todos los animales comienza a
presentar su sonido con "Soy un animal y
hago... "
El uso de la palabra super permite que se
llame al método de la clase padre con el
mismo nombre (en este caso "sonido")
Solución Propuesta
Supongamos tenemos un animal que actúa de una
manera totalmente diferente.
En ese caso no hay problema porque podemos sobre
escribir el método con un resultado totalmente diferente
pero siempre con el mismo objetivo: mostrar el sonido
que hace el animal correspondiente.
Conclusiones
La jerarquía de la Herencia permite relacionar las clases de una mejor manera
al mismo tiempo que me permite extender las funcionalidades y estructuras de
las clases permitiendo reutilizar código.
El polimorfismo permite que un método determinado actúe de diferentes
maneras pero logrando el mismo objetivo.
Podemos sobre escribir los métodos con el objetivo de crear menos código o para
diferenciar comportamientos entre las clases.
La herencia junto con el polimorfismo es una poderosa herramienta para
determinar una jerarquía de clases y permitir un mejor desarrollo de software.
La herencia nunca debe ser forzada. La misma estructura del mundo real nos
debe dar la señal de su existencia.