🎃 Grandes descuentos en libros en línea, eformaciones y vídeos*. Código CALABAZA30. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí

El diseño orientado a objetos

Enfoque procedural y descomposición funcional

Antes de enunciar los aspectos básicos de la programación orientada a objetos, vamos a repasar el enfoque procedural con ayuda de un ejemplo concreto de organización de código.

La programación procedural es un paradigma de programación que considera a los diferentes actores de un sistema como objetos prácticamente pasivos que un procedimiento central utilizará para una función dada.

Tomemos como ejemplo la distribución de agua corriente en los domicilios e intentemos emular este concepto en una aplicación muy sencilla. El análisis procedural (como el análisis de objetos) revela la siguiente lista de objetos:

  • el grifo del lavabo;

  • el depósito del agua;

  • un sensor del nivel de agua, con contador en el depósito;

  • la bomba de alimentación que envía el agua del río.

El código del programa "procedural" consistirá en crear un conjunto de variables que represente los argumentos de cada componente y después escribir el bucle de operación de la gestión central, verificando los valores leídos y actuando en función del resultado de las pruebas. Veremos que, por un lado, están las variables y por otro, las acciones.

La transición hacia el enfoque orientado a objetos

La programación orientada a objetos es un paradigma de programación que considera los diferentes actores de un sistema como objetos activos y relacionados. El enfoque orientado a objetos es mucho más cercano a la realidad.

En nuestro ejemplo, el usuario abre el grifo; este libera presión y el agua fluye desde el depósito hasta el lavabo; el sensor/flotador del depósito llega a un nivel que activa la bomba; el usuario cierra el grifo; alimentado por la bomba, el depósito del agua se rellena y el sensor/flotador alcanza un nivel que detiene la bomba.

En este enfoque, se comprueba que los objetos interactúan; no existe ninguna operación central que defina dinámicamente el funcionamiento de los objetos. En su lugar, hubo un análisis funcional que condujo a la creación de diferentes objetos, su montaje y a establecer sus relaciones.

El código del programa "orientado a objetos" va a seguir esta realidad, proponiendo los objetos descritos anteriormente, pero definiendo los métodos de intercambio adecuados entre estos objetos que conducirán al funcionamiento esperado.

Los conceptos en la orientación a objetos son muy próximos a la realidad...

Las características de la POO

1. El objeto, la clase y la referencia

a. El objeto

El objeto es el elemento básico de la POO. El objeto es la unión:

  • de una lista de variables de estado,

  • de una lista de comportamientos,

  • de una identificación.

Las variables de estado cambian durante el ciclo de vida del objeto. Supongamos el caso de un lector de música digital. Cuando se compra el aparato, los estados de este objeto podrían ser:

  • memoria libre = 100%

  • tasa de carga de la batería = bajo

  • aspecto exterior = nuevo

A medida que se usa, sus estados van a cambiar. Rápidamente, la memoria libre va a descender, la tasa de carga de la batería cambiará, así como el aspecto exterior, en función del cuidado que tenga el usuario con el aparato.

Los comportamientos del objeto definen lo que puede hacer este objeto: Reproducir la música - Ir a la pista siguiente - Ir a la pista anterior - Subir el volumen, etc. Una parte de los comportamientos del objeto son accesibles desde el exterior del objeto: botón Play, botón Stop, etc. y otra parte solo desde el interior: lectura de la tarjeta de memoria, decodificación de la música desde el archivo, etc. Hablamos de "encapsulación" para definir un límite entre los comportamientos accesibles desde el exterior y los comportamientos internos.

La identificación de un objeto es información, separada de la lista de estados, que permite diferenciar el objeto de sus congéneres (es decir, de otros objetos del mismo tipo). La identificación puede ser un número de referencia o una cadena de caracteres única, formada durante la creación del objeto; también puede ser una dirección de memoria. En realidad, su forma depende totalmente de la problemática asociada.

El objeto POO puede estar relacionado con una entidad real, en nuestro caso el lector digital, pero también puede estar relacionado con una entidad totalmente virtual, como una cuenta de cliente, una entrada en un directorio telefónico, etc. La finalidad del objeto informático es gestionar la entidad física o emularla.

Incluso si esto no está en su naturaleza básica, el objeto se puede hacer persistente, es decir, que sus estados se pueden registrar en un soporte que memoriza la información de manera intemporal. A partir de este...

El desarrollo orientado a objetos

1. Especificaciones del software

La primera etapa de un desarrollo de software consiste en generar su descripción, utilizando un lenguaje comprensible por el cliente que lo ha solicitado y por los desarrolladores, en la que se expliquen las funcionalidades del producto a realizar. Este documento es muy importante, porque va a definir los límites del programa, formalizando las necesidades, requisitos y restricciones. Definirá los diferentes tipos de usuarios y sus posibles interacciones en función de sus permisos, etc. Durante la redacción de este documento es necesario impregnarse de la cultura de la empresa y hablar con todas las personas que intervengan. Las especificaciones son el elemento básico de la modelización. Gracias a su particular sentido, como consecuencia de su realización, se podrá evitar cualquier tipo de controversia posterior.

2. Modelización y representación UML

La modelización es la fase esencial del desarrollo de una aplicación. Se basa en las especificaciones y consiste en analizar y descomponer un proceso en varios elementos sencillos. Permite "diseñar los planes" de los componentes a realizar, verificar que serán evolutivos, robustos, fiables y que su funcionamiento conjunto realizarán el objetivo solicitado. La modelización oculta los detalles, para presentar lo principal. Hablamos de abstracción.

Se plantea la cuestión de representar de manera "normalizada" la modelización, cuestión a la que UML responde de manera satisfactoria.

Dediquemos un poco de tiempo a ver cómo nació este lenguaje de modelización de objetos que es UML.

La explosión de la programación orientada a objetos y el crecimiento de la complejidad de los programas generaron una multiplicación de los métodos orientados a objetos a principio de los años 90. Entre estos métodos, podemos mencionar:

  • Booch’91 de Grady Booch.

  • Object Modeling Technique (OMT) de James Rumbaugh en 1991.

  • Object-Oriented Software Engineering (OOSE) de Ivar Jacobson en 1992.

La representación de manera estándar del funcionamiento y arquitectura de un sistema, así como la comunicación de sus objetos, se convirtió rápidamente en algo necesario para:

  • Estructurar de manera evolutiva sus componentes....