07 mayo, 2007

Interfaces

Cuando empecé a explorar las posibilidades que nos brindan las interfaces, se me complicó entender su utilidad, por eso quiere dedicar este espacio a escribir sobre interfaces (en .net Framework por supuesto)

¿Qué es una interface?

Usualmente la interface es como un contrato. Este contrato lo que tiene es una lista de propiedades, funciones, métodos y eventos incluso clases, estructuras o interfaces anidadas. Cualquier clase que desee implementar una interface debe por obligación de proveer todos los miembros listados en la interface.

Características:

  • La interface no contiene lógica de programación
  • Minimizan los problemas de compatibilidad
  • Facilita el desarrollo, cuando se trabajan con grupos de desarrolladores.
  • El .Net Framework utiliza interfaces

Ejemplo 1:

La forma más sencilla de entender este concepto es mediante un ejemplo, veamos la siguiente interface

Interface IfiguraGeometrica

Function Area() As Int32

Function Perimetro() As Int32

Property Color() As colores

Enum colores

Rojo

Verde

Azul

End Enum

End Interface

Esta interface define que toda clase que la tenga que implementar debe desarrollar dos funciones Área y Perímetro además de la propiedad color. Esto nos permite implementar el siguiente código:

Sub Despliega_area(ByVal _figura As IfiguraGeometrica)

Console.WriteLine("Área de la figura = {0}", _figura.Area)

Console.ReadKey()

End Sub

El código anterior despliega en la consola el área de una figura geométrica, lo interesante es que aún no hemos implementado las clases correspondientes a las figuras geométricas, de hecho podría ser que no conozcamos todas las figuras geométricas, pero mientras implementen la interface nuestro código funcionará sin problemas. Veamos la implementación de la interface en una clase "Cuadrado":

Class Cuadrado

Implements IfiguraGeometrica

Private i_lado As Integer Private _color As IfiguraGeometrica.colores

Public Function Area() As Integer Implements IfiguraGeometrica.Area

Return i_lado * i_lado

End Function

Public Property Color() As IfiguraGeometrica.colores

Implements IfiguraGeometrica.Color

Get

Return _color

End Get

Set(ByVal value As IfiguraGeometrica.colores)

_color = value

End Set

End Property Public Function Perimetro() As Integer

Implements IfiguraGeometrica.Perimetro

Return i_lado * 4

End Function

Public Property Lado() As Integer

Get

Return i_lado

End Get

Set(ByVal value As Integer)

i_lado = value

End Set

End Property

End Class

Interfaces del .Net Framework

Como comenté anteriormente el .Net Framework utiliza una serie de interfaces que facilitan que nuestras propias clases puedan hacer uso de algunas funciones ya implementadas, las más comunes son las siguientes:

  • IComparable (Utilizada cuando se requiere ordenar )
  • IDisposable (Cuando se necesitan liberar recursos manualmente)
  • IConvertible (Cuando se necesita convertir la implementación a una clase base)
  • ICloneable (Cuando se requiere clonar el objeto)
  • IEquatable (Habilita la comparación entre dos instancias)
  • IFormattable (Permite convertir el valor del objeto en un string con un formato específico)

1 comentario:

Anónimo dijo...

Hola Alejandro, te comento que con esta explicación me abristes mucho más el panorama de lo que me han explicado en la facultad.
Te lo agradezco!.
Saludos y suerte!