Interfaces en Vb.Net y Vb2005

17/10/2006 - 12:16 por Master.Mind | Informe spam
Hola a todos , no llevo mucho tiempo en esto de la programacion , y me
gustaria resolver una duda que tengo practicamente desde el primer dia
No me aclaro con las interfaces , no se realmente para que sirven ,

por ejemplo, tengo esta interfaz simple con 2 metodos :

Public Interface Ejemplo
Sub Rutina1 (ByVal str As String)
Sub Rutina2 (ByVal num As integer)
End Interface


y la uso por ejemplo en esta clase :

Public Class Form1 Implements Ejemplo

Public Sub Metodo (ByVal str As String) Implements Ejemplo.Rutina1

End Sub

End Class


pues bien , ahi va la pregunta , yo siempre he entendido esto como que
al implementar la interfaz estamos obligandonos a usar sus metodos o
algo asi.

Por eso no entiendo su utilidad , asi que si alguien me lo supiera
explicar mejor se lo agradeceria.Un saludo

Master.Mind
 

Leer las respuestas

#1 floyd303
17/10/2006 - 13:53 | Informe spam
Hola!

La utilidad de los interfaces se entiende mejor cuando se conoce el
concepto del polimorfismo en programacion orientada a objetos.
Cuando uno o mas objetos cunplen un interfaz, no importa de que tipo
sean, sabes que se comportan de la manera definida por el contrato que
supone el interfaz.
A ver si con un ejemplo lo entiendes mejor:

Definimos un interfaz del comportamiento de un tipo monetario:

Public Interface IMoneda
Property ReadOnly Nombre as String
Property ReadOnly TipoCambio as Double ' Con respecto al euro, por
ejemplo
End Interface

Luego definimos una serie de clases (una para cada moneda que queramos
contemplar) que cumplen el Interface:

Public Class Peseta Implements IMoneda
Public ReadOnly Property Nombre as String
Get
Return "Peseta"
End Get
End Public

Public ReadOnly Property TipoCambio as Double
Get
Return 166,387
End Get
End Public
End Class

Public Class Euro Implements IMoneda
Public ReadOnly Property Nombre as String
Get
Return "Euro"
End Get
End Public

Public ReadOnly Property TipoCambio as Double
Get
Return 1
End Get
End Public
End Class

Public Class Dolar Implements IMoneda
Public ReadOnly Property Nombre as String
Get
Return "Dolar"
End Get
End Public

Public ReadOnly Property TipoCambio as Double
Get
Return 0,88 ' Por poner algo... ahora mismo no lo se
End Get
End Public
End Class

Gracias al interface y al polimorfismo... podemos crear una funcion de
cambio que nos sirva para estos tres tipos de moneda y cualquiera que
se nos ocurra en un futuro:

Public Function Cambio (IMoneda monedaOrigen, IMoneda monedaDestino,
Cantidad as Double) as Double
Return (Cantidad *
monedaOrigen.TipoCambio)/monedaDestino.TipoCambio
End Function

Por ejemplo:

Dim objMonedaPeseta as IMoneda = new Peseta();
Dim objMonedaEuro as IMoneda = new Euro();
Dim objMonedaDolar as IMoneda = new Euro();

Dim r1 as Double = Cambio (objMonedaPeseta, objMonedaEuro, 10) '
Convertimos 10 pesetas a euros
Dim r2 as Double = Cambio (objMonedaDolar, objMonedaEuro, 10) '
Convertimos 10 dolares a euros
Dim r3 as Double = Cambio (objMonedaPeseta, objMonedaDolar, 10) '
Convertimos 10 dolares a euros

Cuanto nos costaria añadir nuevos tipos monetarios a nuestro programa?
Pos muy poco: bastaria con añadir una nueva clase que implemente el
interfaz IMoneda y, lo mejor de todo: La funcion Cambio sequiria seindo
valida.

Vale, el ejemplo puede ser un poco chorra... y me he podido equivocar
en la sintaxis (normalmente no programo en VB.NET) o en los calculos
realizados... pero espero haber transmitido bien la idea.
Y este es solo un ejemplo de utilizacion del Interface ya que su
utilizacion, es la piedra angular del desarrollo orientado a objetos.

Un saludo
Roberto M. Oliva


Master.Mind ha escrito:

Hola a todos , no llevo mucho tiempo en esto de la programacion , y me
gustaria resolver una duda que tengo practicamente desde el primer dia
No me aclaro con las interfaces , no se realmente para que sirven ,

por ejemplo, tengo esta interfaz simple con 2 metodos :

Public Interface Ejemplo
Sub Rutina1 (ByVal str As String)
Sub Rutina2 (ByVal num As integer)
End Interface


y la uso por ejemplo en esta clase :

Public Class Form1 Implements Ejemplo

Public Sub Metodo (ByVal str As String) Implements Ejemplo.Rutina1

End Sub

End Class


pues bien , ahi va la pregunta , yo siempre he entendido esto como que
al implementar la interfaz estamos obligandonos a usar sus metodos o
algo asi.

Por eso no entiendo su utilidad , asi que si alguien me lo supiera
explicar mejor se lo agradeceria.Un saludo

Master.Mind

Preguntas similares