Tutorial: Crear e implementar interfaces (Visual Basic)

Las interfaces describen las características de las propiedades, los métodos y los eventos, pero dejan los detalles de implementación a las estructuras o las clases.

En este tutorial se muestra cómo declarar e implementar una interfaz.

Nota

Este tutorial no proporciona información sobre cómo crear una interfaz de usuario.

Nota:

Es posible que tu equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio en las siguientes instrucciones. La edición de Visual Studio que se tenga y la configuración que se utilice determinan estos elementos. Para obtener más información, vea Personalizar el IDE.

Para definir una interfaz

  1. Abra un proyecto Aplicación Windows de Visual Basic nuevo.

  2. Agregue un nuevo módulo al proyecto;para ello, haga clic en Agregar módulo en el menú Proyecto.

  3. Asigne el nombre Module1.vb al nuevo módulo y haga clic en Agregar. Se muestra el código del nuevo módulo.

  4. Defina una interfaz de nombre TestInterface dentro de Module1 al escribir Interface TestInterface entre las instrucciones Module y End Module, y luego presione ENTRAR. El Editor de código aplica sangría a la palabra clave Interface y agrega una instrucción End Interface para formar un bloque de código.

  5. Defina una propiedad, un método y un evento para la interfaz al colocar el código siguiente entre las instrucciones Interface y End Interface:

    Property Prop1() As Integer
    Sub Method1(ByVal X As Integer)
    Event Event1()
    

Implementación

Es posible que observe que la sintaxis empleada para declarar miembros de interfaz es diferente a la sintaxis usada para declarar miembros de clase. Esta diferencia refleja el hecho de que las interfaces no pueden contener código de implementación.

Para implementar la interfaz

  1. Agregue una clase de nombre ImplementationClass mediante la incorporación de la siguiente instrucción a Module1, después de la instrucción End Interface, pero antes de la instrucción End Module, y luego presione ENTRAR:

    Class ImplementationClass
    

    Si está trabajando en el entorno de desarrollo integrado, el Editor de código proporciona una instrucción End Class coincidente al presionar ENTRAR.

  2. Agregue la siguiente instrucción Implements a ImplementationClass, lo que asigna un nombre a la interfaz que implementa la clase:

    Implements TestInterface
    

    Cuando se enumeran por separado de otros elementos en la parte superior de una clase o estructura, la instrucción Implements indica que la clase o estructura implementa una interfaz.

    Si está trabajando en el entorno de desarrollo integrado, el Editor de código implementa los miembros de clase que necesita TestInterface al presionar ENTRAR, y se puede omitir el paso siguiente.

  3. Si no está trabajando en el entorno de desarrollo integrado, debe implementar todos los miembros de la interfaz MyInterface. Agregue el código siguiente a ImplementationClass para implementar Event1, Method1 y Prop1:

    Event Event1() Implements TestInterface.Event1
    
    Public Sub Method1(ByVal X As Integer) Implements TestInterface.Method1
    End Sub
    
    Public Property Prop1() As Integer Implements TestInterface.Prop1
        Get
        End Get
        Set(ByVal value As Integer)
        End Set
    End Property
    

    La instrucción Implements asigna un nombre a la interfaz y al miembro de interfaz que se va a implementar.

  4. Complete la definición de Prop1 mediante la incorporación de un campo privado a la clase que almacenaba el valor de propiedad:

    ' Holds the value of the property.
    Private pval As Integer
    

    Devuelve el valor de pval desde el descriptor de acceso get de la propiedad.

    Return pval
    

    Establece el valor de pval en el descriptor de acceso set de la propiedad.

    pval = value
    
  5. Para completar la definición de Method1, agregue el código siguiente.

    MsgBox("The X parameter for Method1 is " & X)
    RaiseEvent Event1()
    

Para probar la implementación de la interfaz

  1. Haga clic con el botón derecho en el formulario de inicio del proyecto en el Explorador de soluciones y haga clic en Ver código. El editor muestra la clase del formulario de inicio. De manera predeterminada, el nombre del formulario de inicio es Form1.

  2. Agregue el campo testInstance siguiente a la clase Form1:

    Dim WithEvents testInstance As TestInterface
    

    Al declarar testInstance como WithEvents, la clase Form1 puede controlar sus eventos.

  3. Agregue el siguiente controlador de eventos a la clase Form1 para controlar los eventos generados por testInstance:

    Sub EventHandler() Handles testInstance.Event1
        MsgBox("The event handler caught the event.")
    End Sub
    
  4. Agregue una subrutina de nombre Test a la clase Form1 para probar la clase de implementación:

    Sub Test()
        '  Create an instance of the class.
        Dim T As New ImplementationClass
        ' Assign the class instance to the interface.
        ' Calls to the interface members are 
        ' executed through the class instance.
        testInstance = T
        ' Set a property.
        testInstance.Prop1 = 9
        ' Read the property.
        MsgBox("Prop1 was set to " & testInstance.Prop1)
        '  Test the method and raise an event.
        testInstance.Method1(5)
    End Sub
    

    El procedimiento Test crea una instancia de la clase que implementa MyInterface, asigna esa instancia al campo testInstance, establece una propiedad y ejecuta un método por medio de la interfaz.

  5. Agregue código para llamar al procedimiento Test desde el procedimiento Form1 Load del formulario de inicio:

    Private Sub Form1_Load(ByVal sender As System.Object,
                           ByVal e As System.EventArgs) Handles MyBase.Load
        Test() ' Test the class.
    End Sub
    
  6. Para ejecutar el procedimiento Test, presione F5. Se muestra el mensaje "Prop1 was set to 9" (Prop1 establecido en 9). Después de hacer clic en Aceptar, se muestra el mensaje "The X parameter for Method1 is 5" (El parámetro X de Method1 es 5). Haga clic en Aceptar y se muestra el mensaje "The event handler caught the event" (El controlador de eventos detectó el evento).

Consulte también