Interfaces

22/07/2005 - 16:00 por Javier | Informe spam
Hola,
a ver si alguien me puede explicar.
Supongo que debe ser por desconocimiento, pero todavía no encuentro el
sentido a crear una interface.
No entiendo porque se declaran si despues los objetos que la implementan
redefinen el funcionamiento de acuerdo a su propia implementación.
Cual sería el beneficio concreto ? alguien me puede dar un ejemplo simple ?
Que diferencia tiene con la herencia ?
Alguien podria por favor sacarme estas dudas ? muchas gracias de ante mano.
Saludos a toda la comunidad
 

Leer las respuestas

#1 Pedro Luna Montalvo, [MVP VB.NET]
22/07/2005 - 16:12 | Informe spam
Te pongo dos ejemplos de su utilidad:

1. Resolucion de casos de herencia multiple por interfaces:

Como bien has de saber, .NET Framework no permite la herencia multiple, por
los diferentes problemas a los cuales se deben enfrentar los compiladores de
lenguajes que si lo permiten. Asi si por ejemplo tienes tres objetos:
Persona, Automovil, Caballo; y se quiere implementar un metodo que permita
desplazar estos elementos de un punto a otro punto, como resolverlo?

Por herencia? Muy probablemente cada uno ya proviene de su propia jerarquia
independiente de herencia.
Una version del metodo para cada uno? Demasiado complicado de extender
cuando nuevos elementos participan de esto

La solucion viene por interfaces, asi:
a. Creamos una interfaz, por ejemplo: IElementoMovil
b. Hacemos que todos estos lo implementen
c. Creamos el metodo:
void MoverElemento(IElementoMovil elemento) {
// desplazarlo en termino de los miembros de la interfaz
}

Ejemplos de la vida real?. El metodo Array.Sort() ordena los elementos del
arreglo utilizando el metodo QuickSort. Pero si es un arreglo de objetos
Persona? Como los ordena?. Pues hacemos que el objeto persona implemente
IComparable y en el mismo se implementa si quieres que se ordene por
nombres, numero de identificacion, edad, etc...



2. Exposicion de clases privadas a otros proyectos.

Este caso lo uso muy frecuentemente.

a. En un proyecto CommonLib.dll se implementa la interfaz IOperador, que
implementa ciertas operaciones del entorno de la aplicacion.

b. Las clases de logica reciben en su constructor un objeto del tiempo
IOperador, con el cual se podran comunicar con el entorno.

c. Un proyecto Principal.exe (ojo, de tipo EXE) implementa un objeto
internal, el cual sera ofuscado con todos los tramites del caso, ya que
expone miembros de uso interno del proyecto. Pero a su vez esta clase
implementa IOperador, por lo que este objeto interno, podra ser pasado como
parametro a los constructores de las clases de logica.



Estos son los casos en que mas a menudo me encuentro. Seguro que muchos mas
te pueden comentar otros escenarios.

Saludos,
Pedro Luna, [MVP VB.NET]
Gye, Ecu



"Javier" escribió en el mensaje
news:
Hola,
a ver si alguien me puede explicar.
Supongo que debe ser por desconocimiento, pero todavía no encuentro el
sentido a crear una interface.
No entiendo porque se declaran si despues los objetos que la implementan
redefinen el funcionamiento de acuerdo a su propia implementación.
Cual sería el beneficio concreto ? alguien me puede dar un ejemplo simple
?
Que diferencia tiene con la herencia ?
Alguien podria por favor sacarme estas dudas ? muchas gracias de ante
mano.
Saludos a toda la comunidad

Preguntas similares