Ver Mensaje Individual
  #6 (permalink)  
Antiguo 05/07/2006, 21:53
Avatar de enriqueplace
enriqueplace
 
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años, 7 meses
Puntos: 32
La interfaz es un "contrato de implementación" entre clases, donde a diferencia de la herencia que "agrupa" clases por "lo que son", "agrupa" las clases por lo "que hacen".

Por ejemplo, en la herencia tu puedes tener una clase "padre" que se llama "Persona" y existirán clases "hijos" (por ej. Cliente, Vendedor, etc) que heredarán sus características (por eso la palabra "herencia"), manteniéndose una "relación de parentesco" ("Perro" no puede ser "hijo" de "Persona").

Nota al margen: En inglés es "interface", pero todavía no me saqué la duda si existe castellanización y si se puede decir "interfases". Hasta donde sé, solo existe "interfaz", pero si alguien lo tiene resuelto, que me avise

Para el caso de las "interfases" tu "agrupas" clases que "hacen lo mismo", y no tienen por qué mantener una relación de parentesco.

Por ejemplo, tu puedes tener una interfaz (que es similar a hacer una clase abstracta, pues solo se define "firmas" de métodos y no implementación) que se llame "ElementoPelable" y con un método "pelar". Las clases implementarán la interfaz, lo que les obliga a implementar en cada clase el método "pelar".

Y puedes "agrupar" clases que "hagan lo mismo", por ejemplo: Manzana, Pera, Banana y Multiprocesadora (un electrodoméstico que tiene la capacidad de pelar frutas).

Queda claro que entre las frutas no hay una relación directa y necesaria de parentesco (aunque podrían descender de una clase "Fruta"), pero donde rompe el esquema es la "Multiprocesadora", que es imposible desde el punto de vista de la herencia asociarla con una "Fruta".

Y bueno, ahora, la pregunta natural "y para que sirve esto?"

Para hacer polimorfismo: el patrón estratégico más importante de la POO.

Brevemente, tu puedes hacer polimorfismo apoyándote en la herencia, donde una función podrá recibir cualquier cosa que sea de tipo "Persona" (ej. pagarSueldos), pero si haces polimorfismo apoyándote en la interfaz, podrás crear una función que "pele" cualquier cosa que pueda implementar la interfaz "Pelable".

Es un concepto más abierto que hacer polimorfismo de herencia.

Se entendió? explique
__________________
Blog phpsenior.com Cursos a Distancia surforce.com