ES

www.codigo-facil.com > POO PHP, clases abstractas

Programacion orientada a objetos en PHP


Parte 6 : Clases abstractas

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


Las clases abstractas son similares a las clases normales en su construccion y concepto aunque se diferencian de estas en 2 aspectos fundamentales :
  • Una clase abstracta no puede ser instanciada, no podremos crear objetos a partir de ellas.
  • Una clase abstracta puede incorporar metodos abstractos. Los metodos abstractos son aquellos que solo existe su declaracion, dejando su implementacion a las futuras clases extendidas o derivadas.

Importante:

Todos los metodos declarados como abstractos, deberan pertenecer necesariamente a una clase abstracta. Es decir que una clase normal no podremos definir un metodo como abstracto.

Una clase abstracta tiene la misma estructura que una clase normal, solo es necesario añadir la palabra clave abstract al inicio de su declaracion. Nada mejor que un sencillo ejemplo para comprobarlo :
  1.  <?php
  2. /*
  3. Definimos la clase abstracta
  4. */
  5. abstract class Poligono
  6. {
  7.   //A continuacion declaramos el metodo abstracto a implementar en las clases derivadas
  8.   abstract function calculo();
  9. }

  10. /*
  11. A continuacion defino las clases dereivadas que van a extender
  12. el funcionamiento de la clase base Poligono (abstracta)
  13. */
  14. class classCuadrado extends Poligono
  15. {
  16.   function calculo()
  17.   {
  18.   echo 'area de un cuadrado : a=l*l<br>';
  19.   }
  20. }

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

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

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

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

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

Clases abstractas vs Interfaces


Analizando este ejemplo con el del capitulo anterior, podriamos no tener muy claro donde esta la diferencia entre una clase abstracta y una interfaz, y cuando utilizar un recurso u otro, ya que aparentemente tienen la misma funcionalidad.

La pricipal diferencia entre ambas reside en el concepto para el que fueron concebidos. Una interfaz no es ni mas ni menos que un conjunto de declaraciones a codificar en  las diferentes clases que las implementan. Mientras que una clase abstracta es creada como primer paso a la creacion de una jerarquia de clases. La interfaz es utilizada como punto de union entre objetos de diferente naturaleza, mientras que la clase abstracta sirve como punto de partida para la definicion de un objeto a traves de una jerarquia de clases.

Existen tambien las correspondientes diferencias tecnicas, derivadas de su concepcion :
  • Una interfaz no puede contener metodos o atributos implementados, mientras que en las clases abstractas si que es posible incluirlos.
  • Una clase solo puede heredar de una clase abstracta, mientras que una misma clase puede implementar varias interfaces.
  • El encapsulamiento es posible en las clases abstractas (public, private, protected, final, etc), mientras que en una interfaz dada su naturaleza todos los metodos son declarados como public.
Pues con las diferencias entre una clase abstracta y una interfaz llegamos al final del capitulo, como siempre os invito a que dejeis vuestro comentario o valoracion. Un saludo a tod@s y nos vemos en futuras publicaciones.

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
3