Relaciones entre Clases Programación Avanzada Prim 2009 FCC-Buap Profesor: M C Miguel Rodríguez Hernandez
Asociación Es una relación binaria general que describe una actividad entre dos clases Se describe como una línea sólidad entre dos clases con una etiqueta opcional que describe la relación Student 560 * Take Course 03 1 Teach Faculty Las relaciones entre estas clases tienen: 1 Símbolo o (triangulo sólido) indica la dirección de la relación 2 Rol Name Describe el papel que juega en la relación 3 Multiplicidad Especifica cuántos objetos de la clase están implicados en la relación * significa un número ilimitado de objetos m n significa que el número de objetos está entre m y n inclusive En java se pueden implementar las relaciones anteriores como: public class Student{ private Course[] courselist public void addcourse( Course s){ public class Course{ private Student[] classlist; private Faculty faculty; public void addstudent( Student s){ Public void SetFaculty(Faculty faculty){ public class Faculty{ Private Course[] CourseList; Public void addcours( Course c){
Agregacion y Composición Agregación: Composición : Agregación es una forma especial de asociación que representa una relación de pertenencia entre objetos La agregación modela relaciones tiene-un (has a) La relación de agregación se representa generalmente con un atributo en la clases agregante Compsición: es una relación más fuerte que la agregación Ejemplo: Es una agregación porque direcc puede ser compartida por varios estudiantes Name Person Address Un estudiante tiene un nombre y una dirección El diagrama anterior se puede representar en código java como sigue: public class Name{ public class Person{ private Name name; private Address address; public class Address{ Debido a que las relaciones son traducidas a la misma plantilla de clase, por simplicidad, ambas son llamadas composición
Dependencia Una dependencia describe una relacion entre dos clases donde una (llamada cliente) usa la otra (llamada servidor) En UML se dibuja una línea punteada con un sentido( ) de la clase cliente a la clase servidor Ejemplo: Dependencia Calendar Date La clase Calendar usa Date porque podemos crear un calendario con un objeto Date especificado La relación entre Calendar y Date se puede describir usando dependencias En java, la dependencia se implementa usando un método en la clase cliente El método contiene un parámetro del tipo de clase servidor Por ejemplo: public class Calendar{ public void settime(date date){ La dependencia y asociación describen una clase que depende de otra La asociación es más fuerte que la dependencia En la asociación, el estado del objeto cambia cuando su objeto asociado cambia En la dependencia, el objeto cliente y el objeto servidor están acoplados La relación de asociación se implementa usando atributos y métodos Existe una conexión fuerte entre las dos clases La relación de dependencia se implementa usando métodos
Herencia La relación de herencia modela la relación es-un, entre dos clases La sentencia es-un describe una relación de herencia directa entre dos clases Por ejemplo: Person Relación de herencia o extend Student extends Person Student En java existe una sentencia para extender (o heredar) una clase de otra public class Student extends Person{ Ejemplo: Generalización
Diseño orientado a Objetos Los siguientes pasos son realizados generalmente al construir sistemas orientados a objetos 1 Identificar las clases para el sistema 2 Establecer las relaciones entre clases 3 Describir los atributos y métodos en cada clase 4 Implementar las clases Ejercicios y Problemas: 1-Define la clase Rectangle heredada de la clase Point Un atributo punto debería indicar la esquina superior izquierda del rectángulo Cuáles serian los atributos de la clase?, Qué métodos adicionales agragarías? 2-Dibuja la grafico de herencia que incluya las siguientes clases: ObjetoDibujable, Punto, Círculo, Rectangulo, Punto-3D y Esfera 3- Diseña la clase Pentágono representado por 5 puntos dentro de un array con un método que calcule su perímetro Añade otro método que devuelva el punto del pentágono más alejado del origen de coordenada 4- Diseña la clase Polígono representado por un array de punteros a bjetos Punto3D El constructor recibirá como argumentos tres objetos Punto3D que representarán inicialmente un triángulo La clase dispondrá asimismo de métodos para: añadir un vértice al polígono; eliminar vértice; destructor; constructor por defecto; y cálculo del perímetro 5- Cree una clase denominada Alarma cuyos objetos activen un objeto de tipo Timbre cuando el valor medido por un Sensor supere un umbral preestablecido:
Implemente en Java todo el código necesario para el funcionamiento de la alarma, suponiendo que la alarma comprueba si debe activar o desactivar el timbre cuando se invoca el método comprobar() 6- Cree una subclase de Alarma denominada AlarmaLuminosa que, además de activar el timbre, encienda una luz (que representaremos con un objeto de tipo Bombilla) NOTA: Procure eliminar la aparición de código duplicado al crear la subclase de Alarma y asegúrese de que, cuando se activa la alarma luminosa se enciende la luz de alarma y también suena la señal sonora asociada al timbre 7- La cadena de Video-Clubs Glob-Gusters ha decidido, para mejorar su servicio, emplear una base de datos para almacenar la información referente a las películas que ofrece en alquiler Esta información es la siguiente: Una película se caracteriza por su título, nacionalidad, productora y fecha (pe, Quo Vadis, Estados Unidos, MGM, 1955) En una película pueden participar varios actores (nombre, nacionalidad, sexo) algunos de ellos como actores principales Una película está dirigida por un director (nombre, nacionalidad) De cada película se dispone de uno o varios ejemplares diferenciados por un número de ejemplar y caracterizados por su estado de conservación Un ejemplar se puede encontrar alquilado a algún cliente (DNI, nombre, dirección, teléfono) Se desea almacenar la fecha de comienzo del alquiler y la de devolución Cada socio puede tener alquilados, en un momento dado, 4 ejemplares como máximo Un socio tiene que ser avalado por otro socio que responda de él en caso de tener problemas en el alquiler
8- La biblioteca contiene libros y revistas Puede haber varias copias de un libro dado Algunos libros se prestan sólo para un período de 3 días El resto de libros se prestan para 3 semanas a cualquier socio de la biblioteca Se puede tener en préstamo hasta 6 libros a la vez Sólo los trabajadores de la biblioteca pueden tomar en préstamo revistas Los trabajadores de la biblioteca pueden tener hasta 12 libros/revistas en préstamo El sistema debe almacenar cuándo se toman en préstamo y devuelven todos los libros/revistas Cuando se quiere tomar en préstamo una copia de un libro y no está disponible es posible hacer una reserva del libro Es posible extender la fecha del préstamo del libro Para ello hay que llevar dicho libro, mostrarlo en la biblioteca y, si no hay reservas hechas para dicho libro, entonces se pone la nueva fecha de entrega (3 días/semanas después) Se puede consultar el catálogo de la biblioteca (tanto libros como revistas) por distintos campos de búsqueda No hace falta ser socio de la biblioteca para ello Sólo algunos de los trabajadores de la biblioteca pueden actualizar el catálogo (cuando llegan libros/revistas nuevos o se dan de baja) 9- Caso de Estudio: Hotel El hotel del que vamos a realizar el diagrama tiene un nombre y un número de estrellas Posee tres tipos de habitaciones: sencilla, doble y suite y dos tipos de clientes: habituales y esporádicos Cada reserva almacena: la fecha de entrada y el número de días que será ocupada la habitación Al cliente se le toman los siguientes datos: el nombre, la dirección y su teléfono Las habitaciones tienen distinto precio y distinto número, y además es posible mostrar una foto de cada una de ellas al cliente La habitación sencilla el cliente puede elegir si exterior o no, en la habitación doble si cama de matrimonio o sencilla y en la suite la posibilidad de bañera, sauna y mirador Los clientes que son habituales reciben un trato especial, es decir, una reducción en el precio de la habitación con respecto al cliente esporádico A los esporádicos el hotel les ofrece la posibilidad de darles información sobre las ofertas