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.
Modelado Estático Avanzado (Asociaciones) 2
Persona
Vehículo
arrancar( )
conducir( )
detener( )posee
Persona Vehículo
arranca
conduce
detiene
Diseño de Software Avanzado Departamento de Informática
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.”
Modelado Estático Avanzado (Asociaciones) 3
Artículo
descripcionBreve
descripcionAmpliada
fotografia
precioSalida
Vendedor
nif
nombreDescriptivo
nombreUsuario
contraseña
subasta
registra
modifica
Diseño de Software Avanzado Departamento de Informática
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:
Modelado Estático Avanzado (Asociaciones) 4
La clase Persona depende de
la clase Sociedad, pero no de
la clase 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 Acme : Anónima
Anónima
SociedadPersonaes-accionista-de
Diseño de Software Avanzado Departamento de Informática
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: es-
amigo-de, es-igual-a...
Modelado Estático Avanzado (Asociaciones) 5
Empleado Personadirige
0..1
0..*
jefe
subalterno
ama
0..*
0..*
amante
amado
dirige(Ana, Juan) dirige(Juan, Ana) ama(Pedro, Clara) ama(Clara, Pedro)
Diseño de Software Avanzado Departamento de Informática
Restricciones
Modelado Estático Avanzado (Asociaciones) 6
Vuelo Aeropuerto
{ordered} escala* 0..*
* 1origen
* 1destino
Cuenta
Sociedad
Persona
* 0..1
* 0..1
{xor} Or exclusivo entre asociaciones.
Ordenación de los elementos.
Diseño de Software Avanzado Departamento de Informática
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.
Modelado Estático Avanzado (Asociaciones) 7
{...}
Alumno
Asignatura
Titulación
matriculado
1 0..*
pertenece
1
1..*
matriculado0..*
0..*
Diseño de Software Avanzado Departamento de Informática
Agregación
Es un tipo especial de asociación que representa una relación todo-
parte, 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) 8Diseño de Software Avanzado Departamento de Informática
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.
Modelado Estático Avanzado (Asociaciones) 9
AviónEscuadrilla
Cabina Fuselaje Ala
Piloto0..3 1..* 0..* 0..2
1
0..1
1 2
Diseño de Software Avanzado Departamento de Informática
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.
Modelado Estático Avanzado (Asociaciones) 10
¿Representa el estado actual o el
registro histórico de los sueldos de una
Persona para una determinada
Empresa ?
Persona Empresa
trabaja-para
sueldo
pagar( )
Cuenta
trabaja-para1..* 0..*
pagar-en0..* 1
Diseño de Software Avanzado Departamento de Informática
Clase-asociación (y II)
Para representar el registro histórico se pondrá la restricción
{nonunique} en cada extremo de la asociación:
Modelado Estático Avanzado (Asociaciones)
Persona Empresa
trabaja-para
sueldo
pagar( )
trabaja-para
1..* 0..*{nonunique}{nonunique}
pagar-en0..* 1Cuenta
11Diseño de Software Avanzado Departamento de Informática
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.
Modelado Estático Avanzado (Asociaciones) 12
Equipo
Entrenador
Temporada* *
0..1
La multiplicidad mínima 1 implicaría la existencia de
un enlace (o más) para toda posible combinación
de equipo y temporada.
Un equipo enlazado con una
temporada siempre tiene un
entrenador asignado: no hay
“enlaces cojos”.
Diseño de Software Avanzado Departamento de Informática