Download Clases candidatas

Document related concepts
no text concepts found
Transcript
CURSO
Programación Orientada a Objetos
Parte 4
MODELADO DE OBJETOS
Ignacio Zahonero Martínez, Luis Joyanes Aguilar
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.
Curso de Programación Orientada a Objetos en Java
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
2
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.
Curso de Programación Orientada a Objetos en Java
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
3
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:
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.
Visa
gasto: 0
Después de pagar compra
Visa
gasto: 24
Curso de Programación Orientada a Objetos en Java
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
4
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.
Curso de Programación Orientada a Objetos en Java
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
5
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.
Curso de Programación Orientada a Objetos en Java
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
6
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()
Curso de Programación Orientada a Objetos en Java
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
7
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.
Curso de Programación Orientada a Objetos en Java
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
8
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."
Curso de Programación Orientada a Objetos en Java
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
9
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.
Curso de Programación Orientada a Objetos en Java
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
10
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
Jugador
nombre
driblar()
edad
tirar()
estatura
Defensa
marca al
contrario
rebotar()
Linea3Puntos
Cesta
altura
infracción()
Pivot
Equipo
Tiro
coge rebotes
Cancha
Cronometro
pone tapón
TiroLibre
Duración
Falta
Curso de Programación Orientada a Objetos en Java
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
11
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.
Curso de Programación Orientada a Objetos en Java
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
12
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.
Curso de Programación Orientada a Objetos en Java
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
13
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
Curso de Programación Orientada a Objetos en Java
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
14
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):
Curso de Programación Orientada a Objetos en Java
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
15
Diagrama de clases para Flota de Vehículos
Carga
Vehículo
- radio
Flota
1..*
+ mover()
Lugar
Terrestre
Camión
Aereo
Coche
Avión
Curso de Programación Orientada a Objetos en Java
Helicóptero
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
16
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.
Curso de Programación Orientada a Objetos en Java
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
17
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.
Curso de Programación Orientada a Objetos en Java
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
18
EJERCICIO 1 DE MODELADO DE CLASES
Sistema 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
Curso de Programación Orientada a Objetos en Java
Verbos
mostrar
estar compuesta
visualizar
reconfigurar
añadir
eliminar
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
19
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 ...
Curso de Programación Orientada a Objetos en Java
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
20
EJERCICIO 1, Sistema de monitorización (III)
Red
Monitor
darAlta
1 .. *
identif
añadirNodo
darBaja
Nodo
quitarNodo
EnAnillo
Curso de Programación Orientada a Objetos en Java
EnEstrella
EnBus
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
21
EJERCICIO 2 DE MODELADO DE CLASES
Encuestas (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.
Curso de Programación Orientada a Objetos en Java
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
22
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
Curso de Programación Orientada a Objetos en Java
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
23
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
Curso de Programación Orientada a Objetos en Java
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
24
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
Selección
Cuestionario
1..*
1..*
Usuario
Pregunta
Respuesta
4
0..*
Encuesta
 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.
Curso de Programación Orientada a Objetos en Java
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
25
EJERCICIO 2, Encuestas (V)

El diagrama de clases más refinado:
Pregunta
Tema
-nombre
+getNom
Selección
Cuestionario
1..*
- numPreguntas
Respuesta
PreguntaTest
4
1..*
1..*
1..*
Usuario
- nombre
- apell
- correo
0..*
Encuesta
-fecha
- numResp
1..*
Contestación
-orden
+getTexto
- clave
Curso de Programación Orientada a Objetos en Java
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
26
EJERCICIO 3 DE MODELADO DE CLASES
Organigramas(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.
Nombres
Aplicación
Organigrama
Color
Elemento
Línea
Círculo,
Óvalo
Rectángulo
Rectángulo redondeado
Línea recta
Texto
Sistema
Cliente
Curso de Programación Orientada a Objetos en Java
Verbos
implementar
realizar
borrar
mover
dibujar
guardar
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
27
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.
Curso de Programación Orientada a Objetos en Java
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
28
EJERCICIO 3, Organigramas(III)

El diagrama de clases (realmente sería un primer modelo)
Colección
Elemento
- color
Organigrama
1..*
+ añadir()
+ mover()
+mover()
+ borrar()
+ dibujar()
+ grabar()
dibujar()
+ recuperar()
Rectángulo
Óvalo
DeTexto
-orig
-orig
-ejeMy
-literal
-dest
-fin
- ejeMn
-tipo
+ borrar()
+ borrar()
+ borrar()
+ borrar()
+ dibujar()
+ dibujar()
+ dibujar()
+ dibujar()
Recta
+dibujar()
Rect
Redondo
+dibujar()
+ eliminar()
+borrar()
Línea
Línea
1..*
Círculo
+dibujar()
Curso de Programación Orientada a Objetos en Java
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
29
EJERCICIO 4 DE MODELADO DE CLASES
Biblioteca (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
Clave
Catálogo
Préstamo
Titulo
Nombre
Autor
Dirección
Isbn
Sistema
Ejemplar
FechaDevolución
Verbos
registrar nombre ...
solicitar
mantener registro
NumeroAcceso
Socio
Biblioteca
Curso de Programación Orientada a Objetos en Java
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
30
EJERCICIO 4, Biblioteca (II)
 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)
Curso de Programación Orientada a Objetos en Java
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
31
EJERCICIO 4, Biblioteca (III)
 Relaciones
Catálogo "necesita" relacionarse (asociarse) con Libro para conocer sus detalles.
Catalogo
Catalogo
*
Libro
Contenedor
Libro
!!! Continuar!!!
Curso de Programación Orientada a Objetos en Java
Ignacio Zahonero Martínez
Luis Joyanes Aguilar
32