martes, 27 de junio de 2017

INTERFAZ PHP:

Las interfaz es el recurso ideal para la implementacion del polimorfismo, ya que las interfaz es un conjunto de declaraciones de funciones o métodos sin incluir su codificación, dejando a la clase que implementa la interfaz esta tarea.

A continuación modificaremos el ejemplo visto en el capitulo anterior para adaptarlo a la utilización de interfaces.

<?php
/*
Empezaremos definiendo la interface
*/
interface Poligono
{
  function calculo();
}

/*
A continuacion defino las clases que implementan 
la interface
*/
class classCuadrado implements Poligono
{
  function calculo()
  {
  echo 'area de un cuadrado : a=l*l<br>';
  }
}

class classRectangulo implements Poligono
{
  function calculo()
  {
  echo 'area de un rectangulo : a=b*h<br>';
  }
}

class classTriangulo implements Poligono
{
  function calculo()
  {
  echo 'area de un triangulo : a=(b*h)/2<br>';
  }
}

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

/*
Creamos los objetos necesarios
*/
$cuadrado = new classCuadrado;
$rectangulo = new classRectangulo;
$triangulo = new classTriangulo;

/*
Ejecutamos la funcion encargada 
de realizar la llamada polimorfica
*/
area($cuadrado);
area($rectangulo);
area($triangulo);
?>

Al probar el ejemplo comprobamos el comportamiento polimorfico de la función "área", mostrando diferentes resultados en función del contexto en el que se esta ejecutando dicha función.

Por lo tanto hemos logrado establecer una relación polimorfica con objetos de distinta naturaleza gracias a la utilización de interfaces, sin la necesidad de establecer una jerarquía de clases.

Otras características

Voy a concluir comentando otras características propias de las interfaces a tener en cuenta :
Todos los métodos definidos en una interfaz, deben ser codificados en la clase que implementa dicha interfaz.
La clase que implemente la interfaz debe utilizar exactamente las mismas estructuras de métodos que fueron definidos en la interfaz.
Las interfaces se pueden extender al igual que las clases mediante el operador extends.
Una clase puede implementar diferente interfaces.
Una interfaz no se puede instanciar y todos sus métodos son públicos dada la propia naturaleza de la interfaz.
Una interfaz no puede contener ni atributos, ni métodos implementados, solo declaraciones de métodos y constantes.


No hay comentarios:

Publicar un comentario