Los principios básicos al rescate: Propuesta creativa e innovadora de diseño de software orientado a objetos

Los principios básicos al rescate: Propuesta creativa e innovadora de diseño de software orientado a objetos

Este ensayo habla sobre la programación orientada a objetos (POO), un paradigma de programación que busca representar las entidades del mundo real como objetos con atributos y métodos integrados. Se expone que se está una técnica obsoleta y contraproducente que consiste en dividir cada entidad en tres clases diferentes: una para los datos, otra para la lógica y otra para la interfaz. Se argumenta que esta técnica viola los principios de la POO y genera código confuso, redundante e ineficiente. Se propone una forma correcta de aplicar la POO usando de forma creativa e innovadora la herencia y el polimorfismo. Se demuestra que esta forma de aplicar la POO tiene varias ventajas sobre la técnica de dividir cada entidad en tres clases diferentes. Se concluye que debemos analizar críticamente las técnicas que usamos y adaptarnos a los cambios y avances tecnológicos. Se usa la historia de las chuletas de cerdo cortadas por las puntas como analogía para ilustrar mi punto de vista.

Introducción

La programación orientada a objetos (POO) es un paradigma de programación que busca representar las entidades del mundo real como objetos con atributos y métodos integrados. Para lograr un diseño y una programación orientada a objetos eficiente y coherente, se deben aplicar únicamente los cuatro principios básicos de este paradigma: abstracción, encapsulamiento, herencia y polimorfismo. Sin embargo, en la práctica, se está usando una técnica obsoleta y contraproducente que consiste en dividir cada entidad en tres clases diferentes: una para los datos, otra para la lógica y otra para la interfaz, y hasta en implementaciones diferentes. Esta técnica no solo viola los principios de la POO, sino que también genera código confuso, redundante e ineficiente. En este ensayo, se explicará por qué esta técnica es errónea y cómo se puede aplicar correctamente la POO aplicando de forma creativa e innovadora la herencia y el polimorfismo.

Desarrollo

La técnica de dividir cada entidad en tres clases diferentes tendría su origen en una limitación, de pronto de los lenguajes de programación antiguos que no permitían crear clases con atributos y métodos integrados, o de pronto por una mala comprensión y concepción del paradigma orientado a objetos, o de pronto fue un simple ejercicio que se consideró como norma general e indiscutible. Cual fuese su origen, lo evidente es que tiene una mala práctica al implementar tres clases separadas para una única entidad del mundo real. Pero eso no era lo ideal, sino un parche. Esta técnica se puede comparar con la historia de las chuletas de cerdo cortadas por las puntas:

Un hombre disfrutaba mucho de las chuletas de cerdo que preparaba su esposa. Las chuletas tenían algo especial, porque la esposa siempre cortaba las puntas antes de cocinarlas. El hombre pensaba que ese era el secreto para que quedaran tan jugosas y sabrosas. Un día, el hombre le preguntó a su esposa por qué cortaba las puntas de las chuletas. La esposa le dijo que no sabía, que era una receta de su abuela. El hombre se quedó intrigado y quiso saber más. El hombre logró reunirse con la abuela y le preguntó por el secreto de las chuletas. La abuela le dijo que no había ningún secreto, sino una razón práctica. Le explicó que cuando ella era joven, tenía una sartén muy pequeña y no le cabían las chuletas enteras. Por eso, tenía que cortar las puntas para poder freírlas. El hombre se quedó asombrado y divertido. Se dio cuenta de que había estado comiendo chuletas cortadas por las puntas, creyendo que era el secreto especial.

La moraleja de esta historia es que muchas veces seguimos haciendo las cosas creyendo que es por un motivo particular beneficioso, pero es por otra cosa o por una limitación. Debemos cuestionar el por qué o el cómo de las cosas y no seguir ciegamente las tradiciones o costumbres. Lo mismo ocurre con la programación orientada a objetos: debemos analizar críticamente las técnicas que usamos y adaptarnos a los cambios y avances tecnológicos.

Una propuesta de aplicar correctamente el diseño y la programación orientada a objetos es usando una clase base con atributos y operaciones comunes (abstracción) de las entidades de negocio, como Id, Título, Tabla y acceso a la cadena de conexión a la base de datos, y las operaciones Abrir, Guardar, Eliminar y Cerrar. Esta clase base tendría dos casos de uso: uno para crear en tiempo real o en tiempo de ejecución los script de transacciones en la base de datos, usando la información de la derivada, y luego para ejecutarlos de forma automática; y el otro caso de uso sería para las interfaces de usuario, donde las interfaces recibirían las referencias base de los objetos, ya que contiene todo lo necesario para crear interfaces en forma dinámica principalmente, es decir, en tiempo de ejecución se construiría los formularios, si se prefiere. Luego de crear la clase base, se usa esa clase haciendo herencia para crear las clases derivadas o de negocio: Factura, Cliente, Producto, etcétera. La clase base provee funcionalidad integrada basada en polimorfismo, y permite que en la derivada se implemente todas las reglas de negocio, como la validación de los datos antes de guardar, por ejemplo. Cuando el usuario interactúa con el objeto referenciado -por ejemplo- llamando al método Guardar, el objeto (base) invocará al evento Guardando (antes de guardar) que se implementó en la derivada, y esta invocación se haría mediante polimorfismo. De esta manera, en una única clase Factura está todo lo necesario, se diseña y programa el software siguiendo estrictamente los principios de la orientación a objetos, pero al mismo tiempo todas las responsabilidades están bien separadas mediante herencia y polimorfismo con clases base.

Esta forma de aplicar la POO tiene varias ventajas sobre la técnica de dividir cada entidad en tres clases diferentes. Algunas de estas ventajas son:

  • Se evita la duplicación de código y se facilita su mantenimiento y modificación.
  • Se respeta el principio de encapsulamiento y se protege el estado interno de las clases.
  • Se respeta el principio de abstracción y se modelan las entidades del mundo real como objetos con atributos y métodos integrados.
  • Se respeta el principio de herencia y se crea una jerarquía de clases con reutilización de código y especialización.
  • Se respeta el principio de polimorfismo y se crea código flexible y adaptable a diferentes situaciones.

Conclusión

La programación orientada a objetos es un paradigma de programación que busca representar las entidades del mundo real como objetos con atributos y métodos integrados. Sin embargo, se está usando una técnica obsoleta y contraproducente que consiste en dividir cada entidad en tres clases diferentes: una para los datos, otra para la lógica y otra para la interfaz. Esta técnica no solo viola los principios de la POO, sino que también genera código confuso, redundante e ineficiente.

En este ensayo, se ha explicado por qué esta técnica es errónea y cómo se puede aplicar correctamente la POO usando una clases base con herencia y polimorfismo (y con la abstracción, por supues). Se ha demostrado que esta forma de aplicar la POO tiene varias ventajas sobre la técnica de dividir cada entidad en tres clases diferentes. Se ha concluido que debemos analizar críticamente las técnicas que usamos y adaptarnos a los cambios y avances tecnológicos. La programación orientada a objetos es un paradigma poderoso y útil, siempre y cuando se aplique correctamente.

Inicia sesión para ver o añadir un comentario.

Más artículos de Gerardo Fernández

Otros usuarios han visto

Ver temas