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

Preguntas similare

Leer las respuestas

#6 Roberto M. Oliva
18/10/2006 - 18:20 | Informe spam
Hola!

La pega claro es que si implementas una interfaz tienes que usar
metodos , propiedades , todo lo que contenga esa interfaz por lo que
hay que pensar muy bien lo que vamos a necesitar y no a la hora de
diseñar las interfaces.




jejeje... siempre hay que pensar muy bien todo lo que hacemos.

Por cierto yo creo que las interfaces son verdaderamente utiles cuando
hay que implementar varias , ya que por lo que veo no hay herencia
multiple en .net , no?




Si te refieres a que una clase pueda implementar varias interfaces ya
que no hay herencia multiple: por supuesto.
Efectivamente no hay herencia multiple en .NET, a dfierencia de C++.
Pero si una clase implementa diferentes interfaces se puede comportar
de distintas maneras segun el Interface de dicha clase que estes
utilizando. Otra gran utilidad de los interfaces y del polimorfismo de
la orientacion a objetos.

Un saludo
Roberto M. Oliva

Master.Mind ha escrito:

On 17 Oct 2006 04:53:25 -0700, ""
wrote:

>
>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
>
>
Muchas gracias Roberto , por ahi he podido tirar y me ha servido mucho
el ejemplo que has puesto , en principio pensaba que las interfaces no
tenian mucha utilidad , pero la tienen y mucho.

La pega claro es que si implementas una interfaz tienes que usar
metodos , propiedades , todo lo que contenga esa interfaz por lo que
hay que pensar muy bien lo que vamos a necesitar y no a la hora de
diseñar las interfaces.

Por cierto yo creo que las interfaces son verdaderamente utiles cuando
hay que implementar varias , ya que por lo que veo no hay herencia
multiple en .net , no?

Saludos.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida