Buscador

¿Cuándo crear una propiedad y cuándo un método?

Debido a que una propiedad, a través de su procedimiento Property asociado, puede ejecutar código, la decisión de escribir cierta operación en una clase empleando una propiedad o un método, es en algunas ocasiones difícil, ya que existen procesos que pueden ser resueltos utilizando ambos modos. 
Sin ir más lejos, el método CalcularVacaciones( ), visto en el ejemplo del apartado anterior, bien podría haberse resuelto a través de una propiedad, como muestra el Código fuente 234. En él hemos incluido sólo las partes modificadas de la clase Empleado para solucionar este problema

Module General
Sub Main()
' crear objeto Empleado
Dim loEmpleado As Empleado
loEmpleado = New Empleado()
' asignar valores a propiedades
loEmpleado.Identificador = 78
loEmpleado.Nombre = "Antonio"
loEmpleado.Apellidos = "Iglesias"
' esta sería la parte nueva en el código cliente:
' asignar la fecha de inicio y número de días
' de vacaciones, y obtener de la propiedad FinVacaciones
' el día en que termina las vacaciones, aplicando
' en este caso, un formato a la fecha obtenida
loEmpleado.InicioVacaciones = "20/07/2002"
loEmpleado.DiasVacaciones = 15
Console.WriteLine("El empleado {0} - {1} {2}" & ControlChars.CrLf & _
"finaliza sus vacaciones el día {3}", _
loEmpleado.Identificador, loEmpleado.Nombre, _
loEmpleado.Apellidos, _
Format(loEmpleado.FinVacaciones, "d-MMMM-yy"))
Console.ReadLine()
End Sub
End Module
Public Class Empleado
' en esta clase creamos 3 propiedades nuevas,
' para guardar la fecha de inicio de vacaciones,
' los días y la fecha de fin
' variables de propiedad
' .....
' .....
Private mdtInicioVacaciones As Date
Private mdtFinVacaciones As Date
Private miDiasVacaciones As Integer
' procedimientos de propiedad
' .....
' .....
Public Property InicioVacaciones() As Date
Get
Return mdtInicioVacaciones
End Get
Set(ByVal Value As Date)
mdtInicioVacaciones = Value
End Set
End Property
Public Property DiasVacaciones() As Integer
Get
Return miDiasVacaciones
End Get
Set(ByVal Value As Integer)
miDiasVacaciones = Value
End Set
End Property
' en este procedimiento de propiedad
' realizamos el cálculo para obtener
' la fecha de fin de vacaciones y
' devolvemos dicha fecha al código cliente
Public ReadOnly Property FinVacaciones() As Date
Get
' calcular la fecha de fin de vacaciones
Return DateAdd(DateInterval.Day, _
DiasVacaciones, InicioVacaciones)
End Get
End Property
' .....
' .....
End Class
Código fuente 234
Queda por lo tanto, en manos del programador, determinar el criterio por el cuál un proceso se resolverá mediante una propiedad o un método, debiendo ser una decisión flexible y no basarse en unas normas rígidas.

No hay comentarios:

Publicar un comentario