Modelado Estático Avanzado (Asociaciones) Diseño de Software Avanzado Departamento de Informática Asociación vs. Operación Toda asociación tiene un doble significado: — — Aspecto estático: estructura del sistema (estados posibles). Aspecto dinámico: comportamiento del sistema (interacciones posibles). El nombre de la asociación puede reflejar más un aspecto que el otro: — — Nombres estáticos: contiene, situado-en, trabaja-para, matrimonio, etc. Nombres dinámicos: subasta, publica, consulta, etc. Son preferibles los nombres estáticos, reservando los nombres dinámicos para nombres de operaciones, invocadas a través de la asociación mediante el envío de mensajes. Una misma asociación permite la invocación de muchas operaciones. arranca Persona conduce Vehículo Vehículo Persona posee arrancar( ) conducir( ) detener( ) detiene Modelado Estático Avanzado (Asociaciones) Diseño de Software Avanzado Departamento de Informática 2 Asociaciones Actor-Sistema y Clase-Clase Un mismo concepto puede ser modelado a la vez como actor y como clase: — — Actor: representa entidades externas al sistema. Clase: representa entidades modeladas dentro del sistema. No confundir asociaciones actor-sistema (casos de uso, relaciones con el exterior) con asociaciones clase-clase (relaciones internas): — “Para subastar algún artículo es necesario darse de alta como vendedor, introduciendo el NIF, un nombre descriptivo (largo), un nombre de usuario (breve) y una contraseña de acceso. Una vez que el vendedor está dado de alta, puede registrar artículos en la subasta o modificar alguno de sus datos: descripción breve, descripción ampliada, fotografía en formato JPEG, y precio de salida.” Vendedor nif nombreDescriptivo nombreUsuario contraseña Modelado Estático Avanzado (Asociaciones) subasta registra modifica Artículo descripcionBreve descripcionAmpliada fotografia precioSalida Diseño de Software Avanzado Departamento de Informática 3 Asociación y Dependencia Asociación = conocimiento, conocimiento dependencia. Toda asociación induce una dependencia en el sentido en que es navegable. — — Unidireccional: dependencia sólo en un sentido, menor acoplamiento. Bidireccional: dependencia mutua, mayor acoplamiento. Cómo conseguir navegabilidad entre instancias sin dependencia entre clases: es-accionista-de La clase Persona depende de la clase Sociedad, pero no de la clase Sociedad Anónima. Persona Sociedad Anónima Es posible conseguir un enlace navegable entre dos instancias sin que exista dependencia entre las clases a las que pertenecen. Juan : Persona Modelado Estático Avanzado (Asociaciones) Acme : Anónima Diseño de Software Avanzado Departamento de Informática 4 Asociaciones Reflexivas Una asociación reflexiva (o recursiva) es aquella en la que los dos extremos de la asociación están unidos a la misma clase. Los enlaces pueden conectar dos instancias diferentes de la misma clase, o incluso una instancia consigo misma. En una asociación reflexiva los nombres de rol son obligatorios, para poder distinguir los dos extremos de la asociación. Una asociación reflexiva no es simétrica: los extremos son distinguibles, aunque la asociación quiera significar equivalencia: esamigo-de, es-igual-a... 0..1 jefe 0..* amante dirige Empleado 0..* Persona subalterno dirige(Ana, Juan) dirige(Juan, Ana) ama 0..* amado ama(Pedro, Clara) ama(Clara, Pedro) Modelado Estático Avanzado (Asociaciones) Diseño de Software Avanzado Departamento de Informática 5 Restricciones 0..1 * Persona {xor} Cuenta * Vuelo Or exclusivo entre asociaciones. 0..1 * origen 1 * destino 1 Sociedad Aeropuerto * Ordenación de los elementos. 0..* {ordered} escala Modelado Estático Avanzado (Asociaciones) Diseño de Software Avanzado Departamento de Informática 6 Ciclos de Asociaciones y Asociaciones Derivadas ¿Puede un alumno matricularse en asignaturas que no son de su titulación? Posibles interpretaciones alternativas del diagrama: — — — — La titulación se obtiene a partir de las asignaturas: asociación derivada. Titulación matriculada actúa como restricción para elegir asignatura matriculada. Titulación matriculada actúa como sugerencia para elegir asignatura matriculada. Titulación matriculada y asignatura matriculada son independientes. {...} 1 0..* Titulación Alumno matriculado 1 0..* matriculado pertenece 1..* 0..* Asignatura Modelado Estático Avanzado (Asociaciones) Diseño de Software Avanzado Departamento de Informática 7 Agregación Es un tipo especial de asociación que representa una relación todoparte, transitiva y asimétrica. — — No impone ninguna restricción especial sobre la multiplicidad. Puede ser reflexiva para las clases, pero no para las instancias. Modelado Estático Avanzado (Asociaciones) Diseño de Software Avanzado Departamento de Informática 8 Composición Es un tipo especial de agregación no compartida. — — — La multiplicidad sólo puede ser 0..1 ó 1..1. El todo es responsable de la existencia y almacenamiento de las partes. Propagación de las operaciones de copiado y borrado. Composición no significa encapsulamiento ni acceso restringido. 0..3 Escuadrilla 1..* 0..* 0..2 Avión Piloto 0..1 1 Cabina 1 Fuselaje 2 Ala Modelado Estático Avanzado (Asociaciones) Diseño de Software Avanzado Departamento de Informática 9 Clase-asociación (I) Tiene todas las propiedades de una clase y de una asociación: — — — Atributos, operaciones y asociaciones con otras clases. Conexión entre clases que especifica enlaces entre ellas. Multiplicidad, navegabilidad, agregación... Es un único elemento, por tanto tiene un nombre único. Como cualquier otra asociación, por defecto, no puede contener tuplas repetidas, aunque los valores de los atributos sean distintos. Persona ¿Representa el estado actual o el registro histórico de los sueldos de una Persona para una determinada Empresa ? 1..* trabaja-para trabaja-para sueldo pagar( ) Modelado Estático Avanzado (Asociaciones) 0..* 0..* Empresa pagar-en 1 Cuenta Diseño de Software Avanzado Departamento de Informática 10 Clase-asociación (y II) Para representar el registro histórico se pondrá la restricción {nonunique} en cada extremo de la asociación: Persona 1..* {nonunique} 0..* trabaja-para {nonunique} trabaja-para 0..* sueldo pagar( ) Empresa pagar-en Modelado Estático Avanzado (Asociaciones) 1 Cuenta Diseño de Software Avanzado Departamento de Informática 11 Asociación n-aria Asociación entre N clases: los enlaces conectan N instancias. — — No permite: dirección del nombre, navegabilidad, agregación. Sí permite: clase-asociación. Multiplicidad engañosa: — — — Número permitido de instancias para cualquier posible combinación de instancias de las otras n-1 clases. La multiplicidad mínima suele ser 0. Efecto “rebote del uno”: la multiplicidad mínima 1 (o superior) en un extremo implica que debe existir un enlace (o más) para cualquier posible combinación de instancias de los otros extremos. Equipo * * Temporada 0..1 Entrenador Un equipo enlazado con una temporada siempre tiene un entrenador asignado: no hay “enlaces cojos”. La multiplicidad mínima 1 implicaría la existencia de un enlace (o más) para toda posible combinación de equipo y temporada. Modelado Estático Avanzado (Asociaciones) Diseño de Software Avanzado Departamento de Informática 12