Buscador

Abordando un problema mediante programación procedural

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.

No hay comentarios:

Publicar un comentario