Modelado Estático Avanzado (Asociaciones)

Anuncio
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
Descargar