CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis...

32
CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar

Transcript of CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis...

Page 1: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

CURSO Programación Orientada a Objetos

Parte 4

MODELADO DE OBJETOS

Ignacio Zahonero Martínez, Luis Joyanes Aguilar

Page 2: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

2

UML: LENGUAJE UNIFICADO DE MODELADO

UML es una herramienta utilizada por los creadores de sistemas para generar diseños orientados a objetos que capturen sus ideas de forma convencional y fácil de comprender, y para que sean comunicados a otras personas involucradas en el desarrollo de estos sistemas.

UML es el resultado de la fusión de tres metodologías conocidas por los nombres de sus autores: Booch, Rumbaugh y Jacobson.

En 1997 se da a conocer la primera versión, UML 1.0.

Actualmente es la metodología más utilizada. Existe numerosa literatura publicada sobre UML.

El UML está compuesto por diversos elementos gráficos que se combinan, siguiendo ciertas reglas, para formar diagramas.

La finalidad de los diagramas es presentar diversas perspectivas de un sistema, a las que se conoce como modelo. El modelo describe lo que hará un sistema, pero no cómo hacerlo.

Page 3: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

3

REPRESENTACIÓN GRÁFICA DE OBJETOS EN UML

Un objeto es algo que encapsula información y comportamiento. Representa una cosa concreta del mundo real.

Martin/Odell definen un objeto como cualquier cosa, real o abstracta, en la que se almacenan datos y aquellos métodos que manipulan los datos.

Booch define un objeto como algo que tiene un estado, un comportamiento y una identidad. Supongamos una fotocopiadora, su estado puede ser on/off, tiene una potencia, una velocidad de reproducción, etc. Su comportamiento incluye acciones para arrancar y parar, obtener el número de fotocopias realizadas, condiciones de señal de error. Su identidad se basa en el hecho de que cada instancia de una fotocopiadora es única, identificada por el número de serie.

Los objetos de un programa orientado a objetos se crean durante su ejecución, se crean en memoria principal según se necesiten. El objeto se pierde cuando el programa termina. Ahora bien, el objeto es persistente si se guarda en disco.

En UML, un objeto se representa por un rectángulo en cuyo interior se escribe el nombre del objeto y su clase subrayada.

objeto: Clase Neruda: Poeta IB6251 :Pintor

Un objeto anónimo se puede representar solamente con el nombre de la clase y dos puntos delante. A veces se representa el objeto sólo con el nombre.

Page 4: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

4

OBJETOS EN UML

En un diagrama de objetos se representan múltiples instancias de un objeto mediante iconos múltiples. Por ejemplo, si se necesita representar una lista de objetos Billete:

Visa

Billete

El estado de un objeto evoluciona con el tiempo. Por ejemplo, el objeto Visa tiene los atributos: nombre_Cliente, identificador, clave, tope, gasto. El nombre del cliente, el identificador y la clave no cambiarán a lo largo de la vida del objeto; sin embargo, después de realizar una compra pagada por la visa, el gasto se irá incrementando. También puede ocurrir con el tope de gasto establecido a dicho objeto visa.

gasto: 0

Después de pagar compra Visa

gasto: 24

Page 5: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

5

CLASES EN UML(I)

Una clase contiene la especificación de los datos que describen un objeto junto con la descripción de las acciones que el objeto conoce cómo ha de ejecutar.

Una clase describe el dominio de definición de un conjunto de objetos. Cada objeto pertenece a una clase. Las características generales están contenidas dentro de las clases y las específicas en los objetos. Los objetos software se construyen a partir de las clases vía el proceso de instanciación.

Cuando se crea una clase se especifican los datos(variables) y el código(métodos) que la forman. Estos elementos son los miembros de la clase.

La interfaz pública de una clase representa todo lo que los usuarios externos necesitan o pueden conocer. Los datos (o métodos) privados sólo pueden ser accedidos por el código que es miembro de la clase. De esa forma se puede asegurar que no sucederá ninguna acción no deseada.

En el diseño de una clase, normalmente los datos serán privados. Si interesa que desde el exterior de la clase se acceda a esos datos, se especificarán métodos o funciones de acceso.

Page 6: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

6

CLASES EN UML(II)

Una clase se dibuja con un rectángulo, dividido en tres bandas, la banda del nombre, la banda de los atributos y la banda de las operaciones.

NombreClase

atributos

operaciones

Por defecto, los atributos están ocultos y las operaciones visibles.

El nivel de visibilidad se puede especificar en la representación gráfica con los símbolos +, -, # que corresponden con los niveles público, privado y protegido y privado respectivamente.

En general, se recomienda visibilidad privada o protegida para los atributos.

El principio de encapsulamiento significa que las estructuras de datos internas utilizadas en una clase no pueden ser accesibles directamente al usuario de la clase.

Page 7: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

7

CLASES EN UML (III)

La clase pieza de ajedrez contiene los atributos color e identidad. La clase agrupa las operaciones posicion y mover. Los atributos son de visibilidad privada, no accesibles desde el exterior de la clase. Las operaciones tienen visibilidad pública.

PiezaAjedrez

- color

- identidad

+ posicion()

+ mover()

El aparato TV es un dispositivo electrónico. La clase Televisión ofrece un alto grado de abstracción merced a sus operaciones fundamentales.

Television

# color

# marcaIdentidad

+ encender()

+ cambiarCanal()

Page 8: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

8

DIAGRAMA DE CLASES

Los diagramas de clases proporcionan una notación gráfica formal de las clases encontradas por los analistas, en el dominio del problema, y de sus relaciones.

Los diagramas de clases son útiles tanto para obtener el modelo abstracto del problema, como para diseñar programas reales.

Un diagrama de clases consta de clases y de las relaciones entre ellas. Las clases se unen con líneas y ciertos símbolos que muestran las relaciones entre ellas.

El diagrama de clases describe la vista estática de un sistema en términos de clases y relaciones entre ellas.

Un diagrama de clases muestra sólo las clases, existe una variante del diagrama que muestra los objetos (instancias de las clases) y que es el diagrama de instancias objetos.

El diagrama de objetos muestra el estado del sistema en un instante determinado. Son útiles para documentar casos prácticos y para describir ejemplos.

Page 9: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

9

BÚSQUEDA DE CLASES

El denominado análisis orientado a objetos se centra en la definición de clases y en la manera en que éstas colaboran entre ellas para efectuar los requisitos del cliente. Por esa razón, un problema desarrollado con técnicas O.O., en primer lugar debe responder a esta pregunta: ¿cuáles son los objetos en del programa?.

Los objetos son instancias de clases, entonces la primera etapa en el desarrollo O.O. exige la identificación de clases, y posteriormente sus atributos y comportamiento (métodos).

La localización de clases debe pertenecer al dominio del problema y darles nombres que representen su responsabilidad en la aplicación.

Coad y Yourdon proponen seguir un método que consta de dos etapas:

• Primero buscar las clases candidatas. Se identifica un conjunto amplio de clases candidatas.• En segundo lugar, seleccionar de entre ellas las clases válidas. Aquellas que sean aplicables al

dominio de nuestro problema.

Bertrand Meyer: "No existe una receta milagrosa para identificar clases que pueda sustituir a la destreza individual o al experiencia del propio desarrollador de aplicaciones."

Page 10: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

10

IDENTIFICAR LAS CLASES(I)

Existen diversos criterios para identificar clases candidatas. El sistema que propone UML:

En conversaciones con el cliente del sistema a desarrollar, preste atención a los sustantivos que utiliza para describir las entidades de su negocio, ya que dichos sustantivos se convertirán en clases candidatas de su modelo. También preste atención a los verbos que escuche, constituirán operaciones de sus clases. Los atributos surgirán como sustantivos relacionados con los nombres de las clase.

Una vez que tenga una lista básica de las clases, pregunte a los clientes qué es lo que cada clase hace dentro del negocio responsabilidades de la clase.

Page 11: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

11

EJEMPLO DE IDENTIFICACIÓN DE CLASES

El analista, después de entrevistarse con un entrenador de baloncesto genera la siguiente lista de clases:

Balón

diámetro

driblar()

tirar()

Jugador

nombre

edad

estatura

rebotar()

infracción()

Defensa

marca al contrario

Equipo

Pivot

coge rebotes

pone tapón

Cesta

altura

Cancha Tiro

Cronometro

Duración

Linea3Puntos

TiroLibre

Falta

Page 12: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

12

IDENTIFICAR LAS CLASES(II)

Cuando se parte de un documento con los requisitos del problema, el mejor sistema para identificar clases, o mejor clases candidatas:

Lea la definición o descripción de las especificaciones del problema y localice los nombres o frases con nombre y verbos o frases con verbos. Los nombres son buenos indicadores de la existencia de objetos en el modelo OO y los verbos son candidatos a métodos.

Después de encontrar todos los nombres, se examina lista y se decide qué nombres son realmente clases en nuestro sistema. Pueden aparecer nombres que simplemente sean atributos de una clase, por ejemplo un nombre que no puede ser clase es el número de nómina. Es un dato que no contiene acciones, será un atributo de la clase Empleado.

Page 13: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

13

CONCEPTOS QUE IDENTIFICAN CLASES

Cuando se buscan clases candidatas en el documento de requisitos las siguientes cuestiones ayudan a identificarlas:• ¿Se dispone de información que se pueda analizar o almacenar?. En definitiva eventos a

recordar. La información puede ser concepto que se debe registrar en el sistema y por consiguiente ser una clase en el dominio del problema. Por ejemplo: fecha y hora de acceso de un coche a un parking, compra con una tarjeta.

• ¿Existen sistemas externos?. Sistemas con los que interactúa el sistema en desarrollo. Si es así, serán considerados clases.

• ¿Existen dispositivos que el sistema puede manejar?. Cualquier dispositivo externo conectado al sistema se convierte en clase candidata. Por ejemplo, barrera automática, sensor de temperatura, etc.

• ¿Existen partes organizacionales?. Sucursal, departamento, comité etc, siempre que haya que guardar información específica.

• ¿ Qué roles juegan los actores en la aplicación?. Gerente, Oficinista, Supervisor, etc, son diferentes roles que una persona puede desempeñar en un trabajo. Jefe de Estudios, Alumno, Director, Profesor, son roles que desempeñan personas en un Consejo Escolar. Estos roles se pueden ver como clases.

• ¿Hay lugares de los que se necesite guardar información?. Si es así serán candidatos a clases.• ¿Hay componentes, bibliotecas de clases de proyectos anteriores ?. Normalmente contendrán

clases candidatas.

Regla: convertir en clase candidata todo aquel concepto del que haya que almacenar información en el sistema, bien a corto o a largo plazo.

Page 14: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

14

EJEMPLO: FLOTA DE VEHÍCULOS(I)

Controlar la gestión de una flota de diferentes vehículos: coches, camiones, aviones, helicópteros. Cada vehículo dispone de un radio de acción y una capacidad de carga total. En un instante dado, un vehículo puede encontrarse en un cierto lugar con una determinada carga.

Identificar clases. Del análisis del enunciado se extrae la siguiente lista de nombres y frases con nombre que son clases candidatas:

Flota

Vehículo

Coche

Camión

Avión

Helicóptero

Radio de acción

Capacidad de carga

Lugar

Carga

Page 15: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

15

EJEMPLO: FLOTA DE VEHÍCULOS(II)

Una vez realizada la primera lista de clases candidatas, se realiza un proceso de refinamiento(iteración) que trate de evitar una proliferación inútil de clases.

En esta aplicación parece que no es necesario declarar clases para gestionar el radio de acción y la capacidad de carga. Estas características se pueden fijar como atributos de vehículo y son comunes a todo tipo de vehículo.También, es lógico pensar que existen dos tipos de vehículos: terrestres y aéreos. Entonces la lista de clases:Flota

Vehículo

Vehículo Terrestre

Vehículo Aéreo

Coche

Camión

Avión

Helicóptero

Lugar

Carga Relaciones. Un flota contiene vehículos (agregación). Cada vehículo contiene una carga

(agregación) y se encuentra actualmente en un lugar. Hay diferentes tipos de vehículos que comparten propiedades y comportamiento (generalización/especialización):

Page 16: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

16

Diagrama de clases para Flota de Vehículos

Vehículo

- radio

+ mover()

Terrestre Aereo

Camión Coche Avión

Flota1..*

Carga

Lugar

Helicóptero

Page 17: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

17

INTERFAZ DE CADA CLASE

El interfaz de una clase define las diversas operaciones que se pueden ejecutar sobre cada objeto de la clase.

Consideraciones a tener en cuenta que ayudan a describir el interfaz de las clases:• Identificar las operaciones requeridas por usuarios de cada clase. Estas serán métodos

públicos de la clase, constituyen el interfaz de la clase.• Determinar qué funciones sirven para gestión interna de la clase. Estas se sitúan en la parte

privada o protegida de la clase.• Si la clase forma parte de una jerarquía de generalización/especialización, identificar

operaciones que se puedan aplicar a todos los objetos. Esta se declaran en la clase base y probablemente redefinidas en las clases derivadas.

Por ejemplo, las operaciones que se pueden identificar en la aplicación de vehículos: Cada vehículo puede cargar y descargar su carga. Todos los vehículos pueden moverse y dar su posición. Los vehículo terrestres ruedan, los aéreos vuelan. Se necesita poder añadir y retirar cualquier vehículo de la flota.

Page 18: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

18

CRITERIOS PARA ELEGIR CLASES VÁLIDAS

A partir de la lista de clases candidatas, para seleccionar las clases válidas se pueden seguir los siguientes criterios:

• Necesidad de recordar. La clase debe tener información asociada.

• Necesidad de comportamiento. Las clases deben tener operaciones. Un clase sin operaciones puede existir pero es conveniente una reflexión sobre su utilidad.

• Mas de un atributo. Una clase con un solo atributo es sospechosa de no ser clase, sino atributo de otra.

• Atributos y métodos siempre aplicables. Todos los objetos de una clase deben tener los mismos atributos y métodos. Si se encuentra objetos de la misma clase con atributos, o métodos, diferentes, puede ser que en realidad exista más de una clase, las cuales se relacionarán mediante generalización.

Page 19: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

19

EJERCICIO 1 DE MODELADO DE CLASESSistema de monitorización

Realice el análisis de un sistema de monitorización de redes que realiza la información y visualización de un grupo de redes. Cada monitor muestra la configuración de una red en un momento específico. Existen tres tipos de redes: en anillo, en bus y en estrella. Las redes están compuestas por nodos independientemente de su topología, los cuales tienen un identificador de red único que los distingue. El sistema debe poder reconfigurar los nodos añadiendo o quitando desde el monitor que la visualiza.

Identificar clases. Del análisis del enunciado se extrae la siguiente lista de nombres y frases con nombre que son clases candidatas: Y de verbos que pueden indicar operaciones.

Nombres Sistema Red

Monitor

Red en anillo

Red en bus

Red en estrella

Nodo

Identificador

Verbos mostrar estar compuesta

visualizar

reconfigurar

añadir

eliminar

Page 20: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

20

EJERCICIO 1, Sistema de monitorización (II)

A continuación se realiza un proceso de refinamiento. Parece que no es necesario declarar una clase para representar el identificador de nodo. Estas característica se pueden fijar como atributo de nodo. En el enunciado del texto aparece Sistema para referirse al problema, no tiene una responsabilidad en el dominio del problema.

Relaciones. Un red está compuesta de nodos (agregación).. Hay diferentes tipos de redes que comparten propiedades y comportamiento (generalización/especialización). El monitor está relacionado con la red para realizar su funcionalidad, es necesario establecer una relación de asociación entre monitor y red.

Las operaciones que se pueden identificar en la aplicación :

Monitor puede mostrar la configuración de la red. Dar de alta un nodo. Dar de baja un nodo. Operaciones de navegación ...

Page 21: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

21

EJERCICIO 1, Sistema de monitorización (III)

Red

añadirNodo

quitarNodo

Nodo

identif

Monitor

EnAnillo EnEstrella EnBus

1 .. *

darAlta

darBaja

Page 22: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

22

EJERCICIO 2 DE MODELADO DE CLASESEncuestas (I)

Se desea desarrollar un sistema de recogida de encuestas a través de internet. Cualquier persona desde su navegador puede puede inscribirse en el sistema rellenando un formulario. El formulario recoge los siguientes datos obligatorios del nuevo usuario:

• Apellidos y nombre.• Alias de usuario para acceder al sistema.• Dirección de correo electrónico.• Temas en los que está interesado (seleccionando uno o más de los que se le ofrecen). Para

cada uno de estos temas, especificará un grado de preferencia en una escala de 1 a 10, según el grado de interés.

Una vez validados los datos, el sistema le devuelve al usuario una palabra clave única que le permitirá acceder al sistema, junto al nombre de usuario. Periódicamente, el usuario recibirá por correo un cuestionario sobre uno de los temas que seleccionó en su inscripción. Deberá rellenarlo y devolverlo por la misma vía. Para contestar al cuestionario el usuario marcará una y sólo una de las cuatro propuestas a cada pregunta, pero en el futuro se permitirá también hacer preguntas de otros tipos, como preguntas abiertas, y se debe acomodar el análisis a esta circunstancia. A partir de todos los cuestionarios recogidos sobre un tema, el sistema publicará unos resultados estadísticos que podrán ser consultados desde una página Web.

Page 23: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

23

EJERCICIO 2, Encuestas (II)

Identificar clases. Del análisis del enunciado se extrae la siguiente lista de nombres y frases con nombre que son clases candidatas: Y de verbos que pueden indicar operaciones.

Sistema Encuesta

Persona

Formulario

Usuario

Apellido

Nombre

Alias

Correo

Tema

Escala

Clave

Cuestionario

Pregunta

Respuesta

Page 24: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

24

EJERCICIO 2, Encuestas (III)

Antes de realizar el proceso de refinamiento, recordemos la regla de oro: convertir en clase candidata todo aquel concepto del que haya que almacenar información en el sistema, bien a corto o a largo plazo.

En un principio se puede considerar que Formulario es una forma de agrupar Nombre, Apellido, alias y dirección de correo. Tema sí tiene entidad para ser una clase, guarda información y tiene operaciones para manejar el contenido . La selección de un tema tiene la característica (atributo) de el grado de interés. Usuario es el rol de Persona en este contesto. En el enunciado del texto aparece Sistema para referirse a la aplicación. Entonces la lista de clases:

Encuesta

Usuario

Tema

Selección

Cuestionario

Pregunta

Respuesta

Page 25: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

25

EJERCICIO 2, Encuestas (IV)

Relaciones. El usuario realiza una o más selecciones, cada elección se corresponde con un tema (relaciones de asociación). Cada Cuestionario está formado por un rango de preguntas, y cada pregunta por 4 respuestas (agregación). El usuario puede participar en un número de encuestas indeterminado. Para elaborar una encuesta se evalúan las contestaciones recibidas.

Diagrama de clases:

Tema

Usuario

Cuestionario Pregunta Respuesta

Encuesta

Selección

1..*

0..*

1..* 4

El diagrama no recoge la contestación a las preguntas del formulario. Se mejora con una nueva clase: Contestación, asociada con Encuesta. Además, para tener en cuenta la posibilidad de preguntas abiertas, se introduce la clase PreguntaTest, que incorpora la peculiaridades de este tipo de preguntas.

Page 26: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

26

EJERCICIO 2, Encuestas (V)

El diagrama de clases más refinado:

Tema

-nombre

+getNom

Usuario

- nombre

- apell

- correo

- clave

Cuestionario

- numPreguntas

PreguntaTest Respuesta

Encuesta

-fecha

- numResp

Selección

1..*

0..*

1..* 4

Contestación

-orden

+getTexto

Pregunta

1..*1..*

1..*

Page 27: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

27

EJERCICIO 3 DE MODELADO DE CLASESOrganigramas(I)

Se desea implementar una aplicación que permita realizar organigramas en color. Los elementos de que consta un organigrama en este momento son líneas, círculos, óvalos, rectángulos, rectángulos con esquinas redondeadas, líneas rectas y texto. El sistema puede experimentar cambios por incorporación de nuevos elementos. Se sabe que el cliente quiere que se pueda borrar, mover y por supuesto dibujar todos los elementos del organigrama. También se ha de poder guardar y recuperar desde un almacenamiento permanente.

Identificar clases. Del análisis del enunciado se extrae la siguiente lista de nombres y frases con nombre que son clases candidatas: Y de verbos que pueden indicar operaciones. NombresAplicación

Organigrama

Color

Elemento

Línea

Círculo,

Óvalo

Rectángulo

Rectángulo redondeado

Línea recta

Texto

Sistema

Cliente

Verbosimplementar

realizar

borrar

mover

dibujar

guardar

Page 28: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

28

EJERCICIO 3, Organigramas(II)

Los conceptos, nombres puestos en negrita, se pueden considerar claves en el dominio del problema. Además es lógico pensar en una clase que almacene organigramas, será la clase Colección.

Relaciones. Leyendo con detención el documento de requisitos, resulta que los conceptos clave Línea, Óvalo. .. , se pueden plantear que son un tipo-de, o bien es-un, con respecto a Elemento gráfico. Cuando esto ocurre se establece una relación jerárquica generalización/especialización.

Un Organigrama está formado por muchos componentes de tipo Línea, Rectángulo, ... , en general de tipo Elemento. Se establecerá una relación de agregación (todo-parte) entre Elemento y Organigrama.

Un razonamiento similar al anterior nos lleva a establecer una agregación entre Organigrama y Colección. Una colección agrupa muchos organigramas.

Page 29: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

29

EJERCICIO 3, Organigramas(III)

El diagrama de clases (realmente sería un primer modelo)

Elemento

- color

+ mover()

+ borrar()

+ dibujar()

Colección

+ añadir()

+ eliminar()

+ grabar()

+ recuperar()

Línea

-orig

-dest

+ borrar()

+ dibujar()

Rectángulo

-orig

-fin

+ borrar()

+ dibujar()

Óvalo

-ejeMy

- ejeMn

+ borrar()

+ dibujar()

DeTexto

-literal

-tipo

+ borrar()

+ dibujar()

Línea

Recta

+dibujar()

RectRedondo

+dibujar()

Círculo

+dibujar()

Organigrama

+mover()

+borrar()

dibujar()

1..*

1..*

Page 30: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

30

EJERCICIO 4 DE MODELADO DE CLASESBiblioteca (I)

Encontrar las clases, relaciones y realizar un diagrama de clases del siguiente documento relativo a una biblioteca: por

cada libro existente el catálogo contiene el título, el autor y el número ISBN. Puede haber varios ejemplares de un libro.

Cada ejemplar de un libro tiene un único número de acceso. Los socios de la biblioteca tiene una clave para préstamo.

El sistema registra el nombre, dirección del lector y el número de clave por cada préstamo. Los socios sólo pueden

solicitar un libro en préstamo, el sistema mantiene un registro de los libros que un socio ha tenido en préstamo, junto

con la fecha de devolución.

Clases candidatas

Libro

Catálogo

Titulo

Autor

Isbn

Ejemplar

NumeroAcceso

Socio

Biblioteca

Verbosregistrar nombre ...

solicitar

mantener registro

Clave

Préstamo

Nombre

Dirección

Sistema

FechaDevolución

Page 31: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

31

Regla de oro: convertir en clase candidata todo aquel concepto del que haya que almacenar información en el sistema, bien a corto o a largo plazo.

Clases en el dominio del problema (clases válidas):

Libro (atributos: título, autor, isbn)

Catálogo (atributos: número de libros, detalles de cada libro)

Ejemplar (atributos: número de acceso, título ....)

Socio (atributos: clave, nombre, dirección)

Préstamo (atributos: fecha de entrega, fecha devolución, detalles del socio y del ejemplar)

EJERCICIO 4, Biblioteca (II)

Page 32: CURSO Programación Orientada a Objetos Parte 4 MODELADO DE OBJETOS Ignacio Zahonero Martínez, Luis Joyanes Aguilar.

Curso de Programación Orientada a Objetos en Java Ignacio Zahonero Martínez Luis Joyanes Aguilar

32

Relaciones

EJERCICIO 4, Biblioteca (III)

Relaciones

Catálogo "necesita" relacionarse (asociarse) con Libro para conocer sus detalles.

Catalogo Libro*

Catalogo Contenedor

Libro

!!! Continuar!!!