domingo, 21 de noviembre de 2010

Característica POO. Poliformismo

Lenguajes de Programación- PUNTOS EXTRA

Hola a todos, ahora hablaré de otra característica de la Programación orientada a objetos, el poliformismo.

La palabra poliformismo significa que posee varias formas diferentes. En programación orientada a objetos se refiere a la capacidad de que varias clases derivadas de una clase anterior utilicen un mismo método de diferentes formas. 

Por ejemplo, podemos crear clases distintas: Padre y Madre que heredan de la superclase Familia. 

Existen tres tipos de poliformismo.

Poliformismo de sobrecarga

Este tipo de poliformismo ocurre cuando tenemos funciones con el mismo nombre, con funcionalidad similar, en cuanto a clases son independientes una de otra (no tienen que ser clases secundarias de la clase objeto). 

Este poliformismo nos permite definir operadores, de los cuales sus comportamientos varían de acuerdo a los parámetros que tienen. Con esto es posible, por ejemplo agregar el operador + y hacer que se comporte de forma distinta cuando está haciendo referencia a una operación entre dos números enteros o bien cuando se encuentra entre dos cadenas de caracteres.


Poliformismo paramétrico

El poliformismo paramétrico también es llamado poliformismo de plantillas, tiene la capacidad para definir varias funciones utilizando el mismo nombre pero con parámetros diferentes en nombre o tipo. El poliformismo selecciona automáticamente el método correcto que se aplicará en función del tipo de datos que tenía en sus parametros.

Gracias a esto, podemos definir por ejemplo varios métodos homónimos de adicion() efectuando una suma de valores.

  • El método int adicion(int,int) devolvería la suma de dos números enteros
  • El método float adicion(float, float) devolvería la suma de dos números tipo flotante, o sea decimales
  • El método char adicion(char, char) daría de resultado la suma de dos caracteres definidos por el autor.

Una signature (firma) es el nombre y tipo que se le da a los argumentos de una función.
Poliformismo de inclusión

También es llamado poliformismo de subtipado, tiene la habilidad para volver a definir un método en clases que se hereda de una clase base que se llama especialización. Por lo tanto, se puede llamar un método de un objeto sin necesidad de conocer su tipo, esto es poliformismo subtipado. Te permite no tomar en cuenta detalles de las clases especializadas de una familia de objetos, envolviendolos con una interfaz común (siendo la clase base).


Diferencias entre poliformismo y sobrecarga

  • El polimorfismo puede ser  muchas ventajas aplicado desde las interfaces, ya que permite crear nuevos tipos sin la necesidad de tocar las clases ya existentes, basta con volver a compilar todo el código que incluye los nuevos tipos añadidos. Si se hubiera hecho con la sobrecarga durante el diseño exigiría volver a la clase anteriormente creada al añadir una nueva operación, por lo que también se tendría revisar todo el código donde se instancia a la clase.
  • La sobrecarga se da siempre dentro de una sola clase, en cuanto el polimorfismo se da entre clases distintas.
  • Un método está sobrecargado si dentro de una clase existen dos o más declaraciones de este método con el mismo nombre pero con parámetros diferentes, por lo que no hay que confundirlo con polimorfismo.
  • La sobrecarga se resuelve en el tiempo de compilación utilizando los nombres de los métodos y los tipos de sus parámetros, mientras que el polimorfismo se resuelve en tiempo de ejecución del programa, o sea, mientras se ejecuta, en función de que clase pertenece un objeto.

Esto es todo compañeros, espero que les haya servido :) saludos!

1 comentario: