Abordando un problema mediante programación procedural

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.

Programación con Visual Basic .NET © Grupo EIDOS

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 201.

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 ' ......

© Grupo EIDOS 17. Programación orientada a objeto (OOP)

' ...... 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 201

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.

Dejemos por el momento, a nuestro atribulado programador, pensando en cómo resolver este problema; posteriormente volveremos a él para aportarle una solución, que vendrá naturalmente, de mano de la OOP.