Tomemos el ejemplo de un programador al que le encargan el desarrollo de una aplicación para la
gestión de una empresa. Entre los diferentes cometidos a resolver, se encuentra el control de los
empleados en lo que respecta a su alta, pago de sueldos, cálculo de vacaciones, etc.El programador se pone manos a la obra, desarrollando una aplicación basada en un enfoque
procedural. Al llegar a los procesos relativos al empleado, va escribiendo las diferentes rutinas,
distribuyéndolas a lo largo de los diferentes módulos que componen el programa. Ver el Código fuente
217.
Module General
Public psNombre As String
Public Sub Main()
' procedimiento de inicio del programa,
' aquí mostramos por ejemplo un menú
' para seleccionar alguno de los procesos
' del programa: altas de empleados,
' cálculo de nómina, periodos vacacionales, etc.
' ......
' ......
' ......
End Sub
Public Sub CalcularVacaciones(ByVal liIDEmpleado As Integer, _
ByVal ldtFechaInicio As Date, ByVal liNumDias As Integer)
' en este procedimiento calculamos
' el periodo de vacaciones del empleado
' pasado como parámetro
Dim ldtFechaFinal As Date
' ......
' obtener el nombre del empleado en función de su identificador
psNombre = "Juan"
psApellidos = "Plaza"
' ......
' ......
' calcular la fecha final y mostrar
' el periodo vacacional
ldtFechaFinal = DateAdd(DateInterval.Day, liNumDias, ldtFechaInicio)
Console.WriteLine("Empleado: {0} {1}", psNombre, psApellidos)
Console.WriteLine("Vacaciones desde {0} hasta {1}", _
Format(ldtFechaInicio, "dd/MMM/yy"), _
Format(ldtFechaFinal, "d/MMMM/yyyy"))
Console.ReadLine()
End Sub
' otros procedimientos del módulo
' ......
' ......
End Module
Module Varios
Public psApellidos As String
Public Sub CrearEmpleado(ByVal liIDEmpleado As Integer, _
ByVal lsNombre As String, ByVal lsApellidos As String, _
ByVal lsDNI As String, ByVal ldtFechaAlta As Date)
' grabamos los datos de un nuevo empleado en la
' base de datos que utiliza el programa
' ......
Console.WriteLine("Se ha grabado el empleado: {0} - {1} {2}", _
liIDEmpleado, lsNombre, lsApellidos)
Console.ReadLine()
End Sub
' otros procedimientos del módulo
' ......
' ......
End Module
Module Pagos
Public Sub TransfNomina(ByVal liIDEmpleado As Integer, ByVal ldbImporte As
Double)
' realizamos la transferencia de nómina
' a un empleado, utilizando su identificador
' ......
' obtenemos los datos del empleado
psNombre = "Ana"
psApellidos = "Roca"
' ......
' visualizamos el resultado
Console.WriteLine("Pago de nómina")
Console.WriteLine("Empleado: {0} {1}", psNombre, psApellidos)
Console.WriteLine("Ingresado: {0}", ldbImporte)
Console.ReadLine()
End Sub
Public Sub MostrarEmpleado(ByVal liIDEmpleado As Integer)
' buscar la información del empleado por su identificador
Dim lsDatosEmpleado As String
' ......
psNombre = "isabel"
psApellidos = "casillas"
lsDatosEmpleado = StrConv(psNombre & " " & psApellidos,
VbStrConv.ProperCase)
Console.WriteLine("El empleado seleccionado es: {0}", lsDatosEmpleado)
Console.ReadLine()
End Sub
' otros procedimientos del módulo
' ......
' ......
End Module
Código fuente 217
En el ejemplo anterior se declaran variables públicas en diferentes módulos del proyecto, y se crean
procedimientos para las tareas relacionadas con el alta, visualización de datos, pagos, etc., del
empleado. Todo este código se encuentra disperso a lo largo del programa, por lo que su
mantenimiento, según crezca la aplicación, se hará progresivamente más difícil. Para solucionar este
problema, necesitamos realizar un enfoque OOP de los procesos a desarrollar.