ES

www.codigo-facil.com > POO PHP, Polimorfismo

Programacion orientada a objetos en PHP


Parte 4 : Polimorfismo


Capitulos

Programacion orientada a objetos en PHP, creacion de clases

Comentaremos las mejoras introducidas a partir de la version 5 del famoso lenguaje en lo que a la programacion orientada a objetos se refiere. Veremos como crear una clase en PHP y en que consiste un metodo estatico.

Programacion orientada a objetos en PHP, encapsulacion

En este articulo hablaremos con profundidad de los modificadores : public, private y protected.

Programacion orientada a objetos en PHP, herencia

En este capitulo hablaremos de la herencia en PHP, uno de los pilares fundamentales de la programacion orientada a objetos.

Programacion orientada a objetos en PHP, polimorfismo

En este capitulo vamos a hablar de otra de las principales caracteristicas dentro de la programacion orientada a objetos, el polimorfismo.

Programacion orientada a objetos en PHP, interfaces

En este capitulo veremos las interfaces en PHP, un mecanismo bastante utilizado en diferentes lenguajes de programacion para la implementacion del polimorfismo.

Programacion orientada a objetos en PHP, clases abstractas

En este capitulo veremos en que consiste y como crear una clase abstracta en PHP, ademas de sus principales diferencias respecto a las interfaces.

Introduccion


El polimorfismo, junto con la encapsulacion y la herencia, forman parte de los pilares basicos de la programacion orientada a objetos.

El polimorfismo, como su nombre indica, sugiere multiples formas. En programacion cuando hablamos de polimorfismo nos referimos a la capacidad de acceder a multiples funciones a traves del mismo interfaz. Es decir que un mismo identificador, o funcion puede tener diferentes comportamientos en funcion del contexto en el que sea ejecutado.

El polimorfismo es un concepto dificil de entender en un primer momento y en mi opinion PHP no nos ayuda demasiado en este aspecto, al no ser este un lenguaje de programacion fuertemente tipado.

Su implementacion varia en funcion del lenguaje de programacion. En algunos casos para establecer una relacion poliformica es necesario que cada uno de los objetos implicados compartan una misma raiz, siendo entonces necesario establecer una jerarquia de clases. Este es el caso de los lenguajes de programacion fuertemente tipados como Java.

Para el caso que nos ocupa vamos a estudiar el polimorfimo en PHP estableciendo una jerarquia de clases, ya que nos resultara mas facil portar el mismo ejemplo a otros lenguajes.

Como se implementa el polimorfismo?


A continuacion veremos un ejemplo de como implementar una llamada polimorfica al metodo de un objeto.

Para ello vamos a crear una sencilla jerarquia de clases donde tendremos una clase base llamada "classPoligono" y sus respectivas clases extendidas : "classTriangulo" , "classCuadrado" , "classRectangulo" . Cada una de estas clases tendra un metodo en comun que se llamara "calculo" y cuya funcion sera la de mostrar la formula matematica para el calculo del area de la figura geometrica en cuestion.

Una vez que hemos definido nuestras clases crearemos la funcion que se encargara de hacer la llamada polimorfica al metodo "calculo" cuya ejecucion variara dependiendo del objeto que lo implementa.
  1. <?php
  2. /*
  3. Empezaremos definiendo la jerarquia de clases
  4. */
  5. class classPoligono
  6. {
  7.   function calculo()
  8.   {
  9.   echo 'El area depende del tipo de poligono';
  10.   }
  11. }

  12. class classCuadrado extends classPoligono
  13. {
  14.   function calculo()
  15.   {
  16.   echo 'area de un cuadrado : a=l*l<br>';
  17.   }
  18. }

  19. class classRectangulo extends classPoligono
  20. {
  21.   function calculo()
  22.   {
  23.   echo 'area de un rectangulo : a=b*h<br>';
  24.   }
  25. }

  26. class classTriangulo extends classPoligono
  27. {
  28.   function calculo()
  29.   {
  30.   echo 'area de un triangulo : a=(b*h)/2<br>';
  31.   }
  32. }
  33. /* fin definicion de la jerarquia de clases */

  34. /*
  35. definicion de la funcion encargada de realizar las llamada
  36. polimorfica al metodo "calculo"
  37. A destacar que en la definicion de la funcion definimos el tipo
  38. parametro que pasamos por referencia, esto no es obligatorio
  39. en PHP, pero nos ayuda a entender el concepto y asi poder aplicarlo
  40. en otros lenguajes mas estrictos.
  41.  */
  42. function area(classPoligono $obj)
  43. {
  44.   $obj->calculo();
  45. }

  46. /*
  47. Creamos los objetos necesarios
  48. */
  49. $cuadrado = new classCuadrado;
  50. $rectangulo = new classRectangulo;
  51. $triangulo = new classTriangulo;

  52. /*
  53. Ejecutamos la funcion encargada
  54. de realizar la llamada polimorfica
  55. */
  56. area($cuadrado);
  57. area($rectangulo);
  58. area($triangulo);
  59. ?>
Conclusiones finales :

Al ejecutar el ejemplo anterior vemos que la funcion "area" nos muestra la formula correcta en cada una de sus ejecuciones para cada tipo de figura geometrica, pese a que en su definicion inicial hayamos especificado que el objeto es del tipo "classPoligono" , haciendo referencia a la clase base de cada objeto. Esto seria necesario en algunos lenguajes en los cuales nos hace falta un nexo comun a cada uno de los objetos, y la unica forma es de utilizar la clase base comun a cada uno de ellos.

Como he comentado anteriormente en PHP esta definicion no seria necesario, ya que no es un lenguaje en el que sea obligatorio especificar el tipo de una variable en su definicion, por lo que en este aspecto es muchos menos estricto que otros lenguajes de programacion. Sin embargo si que seria necesario en otros lenguajes como Java mucho mas estrictos. Por lo que encontre mas interesante explicarlo de esta manera para asi poder adaptar este ejemplo a otros lenguajes de programacion.

Ultimas noticias

Crea tu propio framework en javascript

Recopilacion de articulos donde mostrare paso a paso como podemos crear nuestro propio framework en javascript, totalmente funcional y listo para ser utilizado en nuestros futuros proyectos.

Para mas informacion :

Tutorial para crear tu propio FrameWork en JavaSript

Más información
13/12/2013 11:42:57

Como crear una DLL en delphi?

En esta serie de 2 capitulos veremos como crear y utilizar una DLL en Delphi.

Abajo os dejo los enlaces a estos 2 capitulos que componen este mini tutorial, espero que sea de vuestro agrado :

Capitulo 1 : Creacion y utilizacion de una DLL

Capitulo 2 : Creacion de un formulario dinamico utilizando una DLL
Más información
19/09/2013 17:35:59

Ya puedes publicar tu opinion

A partir de ahora ya puedes comentar todas las publicaciones que encuentres en el portal.

Podras opinar tanto si algo te gusta como si no, o si crees que es conveniente completar alguna publicacion, ya que la encuentras incompleta o erronea.

O simplemente por si nos quieres felictar por algo bien hecho :-).

Valoraremos cualquier critica que nos puedas hacer.
Más información
20/05/2013 15:30:10

Tutorial PHP5

Fundamentos de la programacion orientada a objetos
Un interesante tutorial repartido en una serie de capitulos donde se tratan los conocimientos basicos de la programacion orientada a objetos (POO) en PHP5.

Para mayor informacion siga el siguiente enlace :

Tutorial POO en PHP

Más información
04/09/2013 15:44:29
2