Modelado Estático Avanzado...

12
Modelado Estático Avanzado (Asociaciones) Diseño de Software Avanzado Departamento de Informática

Transcript of Modelado Estático Avanzado...

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.

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