Creación de métodos para la clase

Creación de métodos para la clase

Para crear un método en una clase debemos escribir un procedimiento de tipo Sub o Function, en función de si necesitamos devolver o no, un valor desde el método. Por este motivo, podemos deducir que un método es lo mismo que un procedimiento, siendo las diferencias existentes entre ambos tan sólo a nivel conceptual: mientras que a una rutina de código dentro de un módulo se le denomina procedimiento, si la escribimos dentro de una clase se le denomina método.

Los métodos, tal y como explicamos en los primeros apartados teóricos sobre OOP de este tema, son aquellos miembros de una clase que definen el comportamiento de los objetos, como consecuencia de las acciones que llevan a cabo al ser ejecutados. Veamos a continuación, un ejemplo concreto de creación de método.

En la clase Empleado necesitamos realizar un cálculo del día en que va a finalizar un empleado sus vacaciones; para ello precisamos conocer la fecha de comienzo y la cantidad de días que va a estar de vacaciones, por lo que escribiremos un método en nuestra clase al que llamaremos CalcularVacaciones( ); a este método le pasaremos los parámetros de la fecha de inicio y el número de días, devolviendo, al ser de tipo Function, la fecha de finalización del periodo vacacional.

Module General Sub Main() ' instanciar objeto Empleado Dim loEmpleado As Empleado loEmpleado = New Empleado()

Programación con Visual Basic .NET © Grupo EIDOS

' asignar valores a propiedades loEmpleado.Identificador = 78 loEmpleado.Nombre = "Antonio" loEmpleado.Apellidos = "Iglesias"

' llamar a método loEmpleado.CalcularVacaciones("20/07/2002", 15)

End Sub End Module

Public Class Empleado ' variables de propiedad Private miID As Integer Private msNombre As String Private msApellidos As String

' procedimientos de propiedad Public Property Identificador() As Integer

' ...... End Property

Public Property Nombre() As String ' ...... End Property

Public Property Apellidos() As String ' ...... End Property

' métodos Public Sub CalcularVacaciones(ByVal ldtInicio As Date, _

ByVal liDias As Integer) ' en este método calculamos el periodo ' de vacaciones del empleado, ' mostrando los resultados en consola Dim ldtFinal As Date ldtFinal = DateAdd(DateInterval.Day, liDias, ldtInicio) Console.WriteLine("Empleado {0} - {1} {2}", _

Identificador, Nombre, Apellidos) Console.WriteLine("Vacaciones desde {0} hasta {1}", _ Format(ldtInicio, "dd/MMM/yy"), _ Format(ldtFinal, "d/MMMM/yyyy"))

Console.ReadLine() End Sub

End Class

Código fuente 217

Llegados a este punto, hemos completado todos los pasos elementales en cuanto a la creación de una clase. Retomemos pues, el caso del ejemplo expuesto al comienzo del tema, de manera que si sustituimos el enfoque procedural de los procesos del empleado, por uno orientado a objeto, la clase Empleado resultante podría ser algo similar a la mostrada en el Código fuente 218.

Public Class Empleado ' variables de propiedad Private miID As Integer Private msNombre As String Private msApellidos As String Private msDNI As String Private mdtFechaAlta As Date Private mdbSueldo As Double

© Grupo EIDOS 18. Métodos y espacios de nombre

Private mdtInicioVacaciones As Date Private miDiasVacaciones As Integer

' procedimientos de propiedad Public Property Identificador() As Integer

Get Return miID End Get Set(ByVal Value As Integer)

miID = Value End Set End Property

Public Property Nombre() As String Get Return msNombre End Get Set(ByVal Value As String)

msNombre = Value End Set End Property

Public Property Apellidos() As String Get Return msApellidos End Get Set(ByVal Value As String)

msApellidos = Value End Set End Property

Public Property DNI() As String Get Return msDNI End Get Set(ByVal Value As String)

msDNI = Value End Set End Property

Public Property FechaAlta() As Date Get Return mdtFechaAlta End Get Set(ByVal Value As Date)

mdtFechaAlta = Value End Set End Property

Public Property Sueldo() As Double Get Return mdbSueldo End Get Set(ByVal Value As Double)

mdbSueldo = Value End Set End Property

Public Property InicioVacaciones() As Date Get Return mdtInicioVacaciones End Get Set(ByVal Value As Date)

mdtInicioVacaciones = Value End Set End Property

Programación con Visual Basic .NET © Grupo EIDOS

Public Property DiasVacaciones() As Integer Get Return miDiasVacaciones End Get Set(ByVal Value As Integer)

miDiasVacaciones = Value End Set End Property

Public Sub CalcularVacaciones() ' en este método calculamos el periodo ' de vacaciones del empleado, ' mostrando los resultados en consola Dim ldtFinal As Date ldtFinal = DateAdd(DateInterval.Day, miDiasVacaciones, mdtInicioVacaciones) Console.WriteLine("Empleado {0} - {1} {2}", _

miID, msNombre, msApellidos) Console.WriteLine("Vacaciones desde {0} hasta {1}", _ Format(mdtInicioVacaciones, "dd/MMM/yy"), _ Format(ldtFinal, "d/MMMM/yyyy"))

Console.ReadLine() End Sub

Public Sub CrearEmpleado() ' crear un nuevo registro en la base de datos, ' grabar los valores que debe haber ' en las propiedades ' ....... Console.WriteLine("Se ha grabado el empleado: {0} - {1} {2}", _

miID, msNombre, msApellidos) Console.ReadLine() End Sub

Public Sub TransfNomina() ' realizamos la transferencia de nómina ' a un empleado, utilizando su identificador ' ...... ' obtener los datos del empleado de la base de datos ' y traspasarlos a las propiedades ' ...... ' visualizamos el resultado Console.WriteLine("Pago de nómina") Console.WriteLine("Empleado: {0} {1}", msNombre, msApellidos) Console.WriteLine("Ingresado: {0}", mdbSueldo) Console.ReadLine()

End Sub

Public Sub MostrarEmpleado() ' buscar la información del empleado en la base de datos ' usando el valor de la propiedad identificador Dim lsDatosEmpleado As String ' ...... Console.WriteLine("El empleado seleccionado es: {0}", msNombre,

msApellidos) Console.ReadLine() End Sub End Class

Código fuente 218

Gracias a que la codificación de todos los procesos reside ahora en la clase, el código cliente que tenga que tratar ahora con el empleado, quedaría simplificado y reducido a lo que se muestra en el Código fuente 219.

© Grupo EIDOS 18. Métodos y espacios de nombre

Module General Sub Main() ' instanciar objeto Dim loEmpleado As New Empleado() loEmpleado.Identificador = 850 loEmpleado.Nombre = "Juan" loEmpleado.Apellidos = "García" ' asignar resto de propiedades ' ..... ' ..... ' llamar a sus métodos loEmpleado.MostrarEmpleado() loEmpleado.TransfNomina() ' ..... ' .....

End Sub End Module

Código fuente 219

Hemos podido comprobar lo sencillo e intuitivo que resulta trabajar con determinados procesos a través de técnicas OOP, ya que una vez codificada la clase, tan sólo hemos de hacer uso de ella instanciando el correspondiente objeto; con la ventaja añadida de que podemos tener varios objetos de la misma clase funcionando al mismo tiempo.