La transformación del software de Ana

Ana es una desarrolladora recién graduada que se une a una empresa de desarrollo de software que mantiene una aplicación de gestión hospitalaria. En su primer día, le asignan revisar el código existente para agregar nuevas funcionalidades. Al abrir el proyecto, Ana se encuentra con un enorme archivo de 15,000 líneas de código donde todas las funciones y datos están mezclados sin una estructura clara. El código está repleto de variables globales, funciones que se repiten con pequeñas variaciones, y cualquier cambio parece afectar partes inesperadas del sistema. 

  • Define el problema: "El código es difícil de mantener, propenso a errores y casi imposible de ampliar con nuevas funcionalidades".
  • Identifica la causa: "El software fue desarrollado usando programación estructurada, sin aprovechamiento de la POO".


Ana propone refactorizar el sistema utilizando Programación Orientada a Objetos:
  • Reorganiza el sistema: Identifica entidades clave como "Paciente", "Doctor", "Cita" y "Tratamiento", y las convierte en clases con sus respectivos atributos y métodos.
  • Implementa herencia: Crea una clase base "Persona" de la que heredan "Paciente" y "Doctor", evitando duplicar código para atributos comunes como nombre y contacto.
  • Aplica encapsulamiento: Protege los datos sensibles de los pacientes usando modificadores de acceso privado y proporciona métodos seguros para su manipulación.
  • Utiliza polimorfismo: Implementa una interfaz "Notificable" que permite enviar alertas a pacientes y médicos por diferentes medios (SMS, email, app) sin cambiar el código que las genera.

Después de seis semanas, Ana presenta el sistema refactorizado. El código ahora está organizado en módulos coherentes de 100-200 líneas, las nuevas funcionalidades se implementan en días en lugar de semanas, y los errores han disminuido un 70%.

Su jefe, impresionado, le pregunta cómo logró tal transformación. Ana responde: "La Programación Orientada a Objetos nos permite modelar el software como modelamos el mundo real: con objetos que tienen características y comportamientos, que interactúan entre sí de manera predecible, y que pueden evolucionar sin romper el sistema existente."

Comentarios

Entradas populares de este blog

Descubriendo el Tesoro: Un Viaje a Través de los Algoritmos de Búsqueda en C#

Metodos de Ordenamiento