¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Aprender la Programación Orientada a Objetos con el lenguaje Java
  3. El diseño orientado a objetos
Extrait - Aprender la Programación Orientada a Objetos con el lenguaje Java (con ejercicios prácticos y corregidos)
Extractos del libro
Aprender la Programación Orientada a Objetos con el lenguaje Java (con ejercicios prácticos y corregidos) Volver a la página de compra del libro

El diseño orientado a objetos

Enfoque procedural y de descomposición funcional

Antes de enumerar los conceptos básicos de la POO, vamos a revisar el enfoque procedural gracias a un ejemplo concreto de organización de código.

En este libro encontraremos habitualmente los términos «código» y «codificación»; no se trata ni de alarmas ni de funciones de cifrado de contraseña. El código o código fuente es el nombre que se da al contenido que el desarrollador entra durante todo el día en su editor de texto favorito, para posteriormente convertirse (o incluso compilarse) en un flujo de instrucciones ejecutables por el ordenador.

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

Tomemos como ejemplo la distribución de agua corriente en nuestras casas e intentemos modelizar este principio en una aplicación muy sencilla. El análisis procedural (igual que el análisis orientado a objetos) muestra una lista de objetos como los siguientes:

  • el grifo del fregadero;

  • el depósito de agua;

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

  • la bomba de alimentación que lleva el agua al río.

El código del programa «procedural» consistiría...

La transición hacia el enfoque orientado a objetos

La POO es un paradigma de programación que considera los diferentes actores de un sistema como objetos activos y relacionados. El enfoque orientado a objetos normalmente se parece mucho a la realidad.

En nuestro ejemplo:

  • El usuario abre el grifo.

  • El grifo libera la presión y el agua fluye desde el depósito hasta el fregadero.

  • Como nuestro usuario no es el único en consumir, el detector/flotador del depósito llega a un nivel que pone en marcha la bomba de alimentación del río.

  • El usuario cierra el grifo.

  • Alimentado por la bomba, el depósito de agua continúa llenándose hasta que el detector/flotador llegue al nivel suficiente que detendrá la bomba.

  • Parada de la bomba.

En este enfoque, puede comprobar que los objetos «interactúan»; no existe operación central que defina dinámicamente el funcionamiento de los objetos. Ha habido un análisis funcional que ha conducido a la creación de los diferentes objetos, su realización y su puesta en relación.

El código del programa «objeto» va a seguir esta realidad, proponiendo tantos objetos como se han descrito con anterioridad, pero definiendo entre estos objetos los métodos de intercambio adecuados, que conducirán al funcionamiento esperado.

Los conceptos 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 estados;

  • una lista de comportamientos;

  • una identificación.

Las variables de estado cambian a lo largo del ciclo de vida del objeto. Tomemos el caso de un reproductor de música digital. Cuando se compra el aparato, los estados de este objeto podrán ser:

  • memoria libre = 100 %;

  • tasa de carga de la batería = baja;

  • aspecto exterior = nuevo.

A medida que se va utilizando, sus estados se modifican. Rápidamente la memoria libre caerá, la tasa de carga de la batería variará y el aspecto exterior va a cambiar en función del cuidado que ponga el usuario durante su utilización.

Los comportamientos del objeto definen lo que se puede hacer con él:

  • reproducir la música;

  • ir a la pista siguiente;

  • ir a la pista anterior;

  • subir el sonido;

  • etc.

Una parte de los comportamientos del objeto es accesible desde el exterior de este objeto: Botón Play, Botón Stop... y otra parte solo es accesible internamente: lectura de la tarjeta de memoria, decodificación de la música a partir del archivo. Se habla de «encapsulación» para definir el límite entre los comportamientos accesibles desde el exterior y los comportamientos internos.

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

El objeto programado se puede adjuntar a una entidad real, como para nuestro reproductor digital, pero también se puede adjuntar a una entidad totalmente virtual, como una cuenta de cliente, la entrada de un directorio telefónico, etc. La finalidad del objeto informático es administrar la entidad física o emularla.

Incluso si este no forma parte de su naturaleza básica, el objeto se puede hacer persistente, es decir, que sus estados se pueden guardar en un soporte de memoria...

El desarrollo orientado a objetos

1. Especificaciones del software

La primera etapa de un desarrollo de software consiste en redactar un documento que describa, utilizando un lenguaje comprensible por el cliente que lo ha solicitado y por los desarrolladores, las funcionalidades del producto que se ha de realizar. Este documento es muy importante porque va a definir los límites del programa, formalizando las necesidades, las exigencias y las restricciones. Definirá los diferentes tipos de usuario y sus posibles interacciones en función de sus permisos, en forma de casos de usos. Durante la redacción de este documento, es absolutamente necesario impregnarse de la cultura de la empresa y dialogar con todos los actores implicados. Las especificaciones constituyen el elemento de base de la modelización. Gracias al cuidado particular que se ponga en su realización, se podrá evitar en el futuro cualquier tipo de discrepancias.

2. Presentación del ciclo en V

Un desarrollo de software se compone de varias fases que hay que completar con meticulosidad para identificar correctamente una necesidad y no equivocarse respecto a la arquitectura utilizada para darle solución. Existen varios modelos de desarrollo, y el ciclo en V que se presenta aquí procede del dominio industrial. Este concepto no es específico de la programación orientada a objetos y se utiliza mucho. Su aplicación «literal» producirá un resultado correcto, pero puede llegar a ser pesado de implementar.

images/2.PNG

En el ciclo en V, se parte de las necesidades del cliente (rama izquierda en la parte superior de la V) para descender en tres etapas hasta la redacción del programa (base de la V):

  • A partir de las necesidades de cliente, especificar las funciones.

  • A partir de las funciones, especificar la arquitectura global.

  • A partir de la arquitectura global, especificar los módulos detallados.

La base de la V se dedica a la codificación del programa.

A continuación, la subida por la rama derecha se va a hacer en tres etapas, que confirmarán los objetivos de la rama izquierda, a saber:

  • Validar cada módulo solo por los juegos de pruebas unitarias.

  • Validar las relaciones y comunicaciones entre módulos, por medio de las pruebas de integración.

  • Validar las funciones de la aplicación agregando todos estos módulos.

Para terminar, en la parte superior...

Ejercicios

1. Jerarquía de clases

Enunciado

Diseñe el diagrama de clases UML que resuma las relaciones entre los siguientes objetos:

  • Helicóptero

  • Submarino

  • Moto

  • Transporte terrestre

  • Camión

  • Coche

  • Transporte

  • Avión

  • Scooter

  • Paquebot

  • Transporte aéreo

  • Camión cisterna

  • De dos ruedas

  • Coche descapotable

  • Transporte marítimo

  • Avión de combate

  • Moto de cross

  • Bicicleta

  • BTT

  • De cuatro ruedas

Corrección

images/15.png

En esta jerarquía de clases aparece una clase general de base, que es Transporte. A continuación, esta clase de base se va a especializar a medida que se avanza en diferentes niveles. Tenga en mente la relación «es una especie de...», que ayuda a entender las nociones de herencia y polimorfismo. La BTT especializa su padre Bicicleta, añadiendo las funciones de recorrido todo terreno, pero conservando sus atributos de base: es la herencia. La BTT es «una especie de» bicicleta que, a su vez, es «una especie de» transporte terrestre de dos ruedas que, finalmente, es «una especie de» transporte. En consecuencia, cuando se solicita un objeto Transporte, entonces se puede utilizar una BTT: es el polimorfismo.

2. Relaciones entre objetos

Enunciado

En un proyecto de gestión de librerías, se desarrollan los objetos que representan a los libros y los objetos que representan a los autores. Diseñe su diagrama de clases con los atributos mínimos...