martes, 26 de abril de 2011

Interfaces en PHP

Entonces, ¿qué es Polimorfismo?

En sí la palabra solo refiere a “muchas formas” y aplicado a la POO es la capacidad de poder tomar varias clases que tiene operaciones iguales y poder invocar a cualquier instancia el mismo método común.

Ventajas: Poder hacer un diseño genérico que se apliquen a varios objetos que tienen operaciones comunes.

Las interfaces son similares a la herencia: la herencia “agrupa” clases que “son lo mismo” (relación de parentesco) y la interface “agrupa” clases que “que realizan las mismas operaciones” (pero no necesariamente son iguales).

Las interfaces son un sistema bastante común, utilizado en programación orientada a objetos. Son algo así como declaraciones de funcionalidades que tienen que cubrir las clases que implementan las interfaces.

En una interfaz se definen habitualmente un juego de funciones que deben codificar las clases que implementan dicha interfaz. De modo que, cuando una clase implementa una interfaz, podremos estar seguros que en su código están definidas las funciones que incluía esa interfaz.

Las interfaces permiten el tratamiento de objetos sin necesidad de conocer las características internas de ese objeto y sin importar de qué tipo son... simplemente tenemos que saber que el objeto implementa una interfaz.

Vemos que tanto interfaces como clases abstractas son muy parecidos, los dos muestran declaraciones que debemos implementar más adelante, pero veamos algunas diferencias:
Una interfaz no puede contener atributos ni métodos implementados, mientras que una clase abstracta sí que puede contenerlos

Una clase sólo puede heredas una clase abstracta, mientras que en una misma clase se pueden implementar varias interfaces.

Las clases abstractas pueden declarar los métodos con diferente visibilidad (public, protected, internal, etc; private no, esto indicaría que una clase derivada no podría ver el método, por tanto no tendría sentido; final tampoco, porque no admitiría implementaciones futuras, aunque una clase derivada sí podría contener un método como final), mientras que en los interfaces todos los métodos deben ser públicos (también static)

Los métodos que no implementamos en una clase abstracta, deben ser abstract, en un interface, todos los métodos son abstract, y ninguno debe ser implementado.

Ejemplo :

Bien el ejemplo usaremos una clase abstracta y una interfaz para que nos comprometa a implementar metodos que son indispensables en un proyecto como el metodo para conectarse a la base de datos o cualquier fuente de datos Luego utilizaremos una clases que herede de la abstracta e implemente la interfaz creada .

Clase abstracta

Interfaz

Clase que que hereda e implementa

Clase que ejecuta


resultado en el navegador

Bien algunos se preguntaran porque tanta vuelta solo para un metodo si lo podemos hacer en un archivo de php con una llamada al metodo , pues si es cierto se puede hacer asi pero la programacion orientada a objetos nos da una creatividad para moldear nuestras aplicaciones porque de una clase abstracta , porque yo quiero que solo sea para heredar que no se pueda instanciar , luego para que una interfaz , la ocupo para que me obligue a implementar ese metodo y algunos diran si por logica tendria que ir ese metodo de conectar a la base pero ya en una aplicacion grande solo bastara ver que todas nuestras clases implementen esa interfaz y sabremos que ese metodo va ahi , y tambien para que cuando programemos en grupo los demas esten obligados a implementar esos metodos, asi nos ahorramos muchos errores.

Descargar

comenten no sean bayuncos...

No hay comentarios:

Publicar un comentario