Buscador

Propiedades virtuales

Otra de las ventajas del uso de propiedades reside en la posibilidad de definir propiedades virtuales; es decir, una propiedad que no tenga una correspondencia directa con una variable de propiedad, ya que podemos crear un procedimiento Property que no esté obligatoriamente asociado con una variable. Siguiendo con la clase Empleado, en esta ocasión creamos una propiedad para almacenar la fecha en la que el empleado ha sido incorporado a la empresa; esto no entraña ninguna novedad. Sin embargo, seguidamente necesitamos disponer de una propiedad que nos permita mostrar el nombre del mes en el que se ha dado de alta al empleado. 
Podemos resolver esta cuestión creando una variable de propiedad, guardando en ella una cadena con el nombre del mes; pero si disponemos de la fecha de alta, que ya contiene el mes, nos ahorraremos ese trabajo extra creando una propiedad, en este caso de sólo lectura, en la que extraigamos el nombre del mes de la fecha de alta y lo devolvamos como resultado. Veamos como hacerlo en el Código fuente 228.

Module General
Sub Main()
Dim loEmpleado As Empleado
loEmpleado = New Empleado()
loEmpleado.psNombre = "Antonio"
loEmpleado.FechaAlta = "12/6/2002"
' mostramos el mes de alta, que corresponde
' a una propiedad virtual del objeto
Console.WriteLine("El empleado {0} se ha dado de alta en el mes de {1}", _
loEmpleado.psNombre, loEmpleado.MesAlta)
Console.ReadLine()
End Sub
End Module
Public Class Empleado
' campo de clase
Public psNombre As String
' variables de propiedad
Private mdtFechaAlta As Date
' propiedad para manejar la fecha
' de alta del empleado
Public Property FechaAlta() As Date
Get
Return mdtFechaAlta
End Get
Set(ByVal Value As Date)
mdtFechaAlta = Value
End Set
End Property
' propiedad virtual
' en ella devolvemos el nombre del mes en el que se ha dado
' de alta al empleado, utilizando la variable de otra propiedad
Public ReadOnly Property MesAlta() As String
Get
Return Format(mdtFechaAlta, "MMMM")
End Get
End Property
End Class
Código fuente 228

No hay comentarios:

Publicar un comentario