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