Author: Albeiro N. Chamorro - Wilmer L. Mora Paz
Polimorfismo:
En el desarrollo de software, este concepto se relaciona a la creación de un servicio u operación con un nombre en específico y asociarlo con objetos de diferentes tipos.
De esta forma, se podría decir que este paradigma está pensado para crear clases genéricas, permitiendo así un futuro cambio en la implementación. Aunque se puede incidir en la práctica de realizar todo de forma genérica aun cuando exista una alta probabilidad de que no se produzca un cambio en el futuro.
Por ejemplo, se podría tener una clase padre llamada Figura y tener como clases hijos a: Cuadrado, Triángulo, Rectángulo, entre otras figuras que puedan representar una clase. Para crear el polimorfismo, se podría crear en cada una de las clases hijos un método "obtenerArea()", esto permite que cada objeto Figura pueda enviar un mensaje utilizando el servicio obtenerArea() a cualquier ítem de su lista, con la seguridad de que (independientemente de la clase que sea) va a saber responder a dicho mensaje.
En el siguiente ejemplo, de un sistema que desea calcular los impuestos, se puede observar una interface con el método getImpuestos() y diferentes sistemas o adaptadores que se van a conectar y procesar la información a como estén programados pero al final estos sistemas saben calcular y devolver el valor de los impuestos para cada uno de los casos.
(Craig larman, UML y patrones, 2 Edicion, Madrid 2003, P. 306)