La programación modular es una técnica de diseño de software que enfatiza la separación de la funcionalidad de un programa en módulos independientes y reutilizables. Cada módulo contiene todo lo necesario para ejecutar una funcionalidad específica y puede ser desarrollado, probado y mantenido de manera independiente.

Conceptos Clave

  1. Modularidad: La capacidad de dividir un programa en partes más pequeñas y manejables.
  2. Encapsulamiento: Cada módulo oculta su implementación interna y expone solo lo necesario para interactuar con otros módulos.
  3. Reutilización: Los módulos pueden ser reutilizados en diferentes partes del programa o en otros programas.
  4. Mantenibilidad: Los cambios en un módulo no afectan a otros módulos, lo que facilita el mantenimiento y la actualización del software.

Ventajas de la Programación Modular

  • Facilidad de Mantenimiento: Los módulos pueden ser actualizados o corregidos sin afectar al resto del sistema.
  • Reutilización de Código: Los módulos pueden ser reutilizados en diferentes proyectos.
  • Mejor Organización: El código está mejor organizado y es más fácil de entender.
  • Facilidad de Pruebas: Los módulos pueden ser probados de manera independiente.

Implementación de la Programación Modular en MUMPS

En MUMPS, la programación modular se puede lograr mediante el uso de rutinas y funciones. A continuación, se muestra cómo se puede estructurar un programa modular en MUMPS.

Ejemplo Práctico

Supongamos que queremos crear un programa que gestione una lista de tareas. Dividiremos el programa en varios módulos:

  1. Módulo de Entrada y Salida: Maneja la entrada y salida de datos.
  2. Módulo de Gestión de Tareas: Maneja la creación, actualización y eliminación de tareas.
  3. Módulo Principal: Coordina la interacción entre los módulos.

Módulo de Entrada y Salida

; Módulo de Entrada y Salida
InputOutput
    ; Función para leer una línea de entrada del usuario
    ReadLine(prompt)
    Write prompt, " "
    Read input
    Quit input

    ; Procedimiento para mostrar un mensaje
    DisplayMessage(message)
    Write message, !
    Quit

Módulo de Gestión de Tareas

; Módulo de Gestión de Tareas
TaskManager
    ; Procedimiento para agregar una tarea
    AddTask(taskList, task)
    Set taskList($Order(taskList(""), -1) + 1) = task
    Quit

    ; Procedimiento para mostrar todas las tareas
    ShowTasks(taskList)
    New i
    Set i = 0
    For  Set i = $Order(taskList(i)) Quit:i=""  Do
    . Write i, ". ", taskList(i), !
    Quit

Módulo Principal

; Módulo Principal
Main
    New taskList, choice, task
    Set taskList = ""

    For  Do  Quit:choice="3"
    . Set choice = $$ReadLine^InputOutput("1. Agregar Tarea 2. Mostrar Tareas 3. Salir")
    . If choice = "1" Do
    . . Set task = $$ReadLine^InputOutput("Ingrese la tarea:")
    . . Do AddTask^TaskManager(.taskList, task)
    . Else  If choice = "2" Do
    . . Do ShowTasks^TaskManager(.taskList)
    . Else  If choice = "3" Do
    . . Do DisplayMessage^InputOutput("Saliendo del programa...")
    . Else  Do
    . . Do DisplayMessage^InputOutput("Opción no válida. Intente de nuevo.")
    Quit

Explicación del Código

  1. Módulo de Entrada y Salida:

    • ReadLine(prompt): Lee una línea de entrada del usuario.
    • DisplayMessage(message): Muestra un mensaje en la pantalla.
  2. Módulo de Gestión de Tareas:

    • AddTask(taskList, task): Agrega una tarea a la lista de tareas.
    • ShowTasks(taskList): Muestra todas las tareas en la lista.
  3. Módulo Principal:

    • Coordina la interacción entre los módulos de entrada/salida y gestión de tareas.
    • Permite al usuario agregar tareas, mostrar tareas o salir del programa.

Ejercicio Práctico

Ejercicio: Extiende el programa anterior para incluir la funcionalidad de eliminar una tarea.

  1. Agregar una opción en el menú principal para eliminar una tarea.
  2. Crear una función en el módulo de gestión de tareas para eliminar una tarea.
  3. Actualizar el módulo principal para manejar la eliminación de tareas.

Solución:

Módulo de Gestión de Tareas (Actualizado)

; Módulo de Gestión de Tareas
TaskManager
    ; Procedimiento para agregar una tarea
    AddTask(taskList, task)
    Set taskList($Order(taskList(""), -1) + 1) = task
    Quit

    ; Procedimiento para mostrar todas las tareas
    ShowTasks(taskList)
    New i
    Set i = 0
    For  Set i = $Order(taskList(i)) Quit:i=""  Do
    . Write i, ". ", taskList(i), !
    Quit

    ; Procedimiento para eliminar una tarea
    DeleteTask(taskList, taskNumber)
    Kill taskList(taskNumber)
    Quit

Módulo Principal (Actualizado)

; Módulo Principal
Main
    New taskList, choice, task, taskNumber
    Set taskList = ""

    For  Do  Quit:choice="4"
    . Set choice = $$ReadLine^InputOutput("1. Agregar Tarea 2. Mostrar Tareas 3. Eliminar Tarea 4. Salir")
    . If choice = "1" Do
    . . Set task = $$ReadLine^InputOutput("Ingrese la tarea:")
    . . Do AddTask^TaskManager(.taskList, task)
    . Else  If choice = "2" Do
    . . Do ShowTasks^TaskManager(.taskList)
    . Else  If choice = "3" Do
    . . Set taskNumber = $$ReadLine^InputOutput("Ingrese el número de la tarea a eliminar:")
    . . Do DeleteTask^TaskManager(.taskList, taskNumber)
    . Else  If choice = "4" Do
    . . Do DisplayMessage^InputOutput("Saliendo del programa...")
    . Else  Do
    . . Do DisplayMessage^InputOutput("Opción no válida. Intente de nuevo.")
    Quit

Resumen

En esta sección, hemos aprendido sobre la programación modular y cómo implementarla en MUMPS. Hemos visto cómo dividir un programa en módulos independientes y cómo estos módulos pueden interactuar entre sí. La programación modular mejora la mantenibilidad, la reutilización y la organización del código, lo que facilita el desarrollo y mantenimiento de software complejo.

En el siguiente módulo, exploraremos las Funciones y Procedimientos Avanzados en MUMPS, donde profundizaremos en técnicas más complejas para mejorar aún más nuestras habilidades de programación.

© Copyright 2024. Todos los derechos reservados