DiagramasDiagramas
De InteracciónDe Interacción
Análisis y Diseño Orientado a ObjetosAnálisis y Diseño Orientado a Objetos
Septiembre 2005Septiembre 2005
2
Diagramas de Interacción
uModelan el comportamiento dinámico del sistema; el
flujo de control en una operación.
uDescribe la interacción entre objetos; los objetos
interactúan a través de mensajes para cumplir ciertas
tareas.
uLas interacciones provee un “comportamiento” y
típicamente implementan un Caso de Uso.
uExisten dos tipo de diagramas de interacción en UML:
–Diagramas de Secuencia (dimensión temporal)
–Diagramas de Colaboración (dimensión estructural)
3
Dependencia
Casos de
Uso
Diagrama de
Casos de
Uso
Modelo
Conceptual
Diagrama de
Secuencia del
Sistema
Diagrama de
Clases de Diseño
Diagrama
de Interacción
Depende de
Análisis Diseño
Diagramas de SecuenciaDiagramas de Secuencia
5
Diagramas de Secuencia
uModela interacciones en un gráfico de dos
dimensiones
uLos objetos que participan en la interacción son
ubicados en el eje-X, el tiempo en el eje-Y
uEl eje-Y modela la línea de vida de los objetos.
uEl diagrama de secuencia es un diagrama de
interacción que enfatiza el ordenamiento temporal
de los mensajes en una interacción.
uLos mensajes pasados entre objetos manifiestan la
interacción.
6
Diagramas de Secuencia ...
uPueden ser usados en dos formas:
–Forma de Instancia
–Forma Genérica
uDe instancia: describe un escenario especifico
(un escenario es una instancia de la ejecución
de un caso de uso).
uGenérico: describe la interacción para un caso
de uso; utiliza ramificaciones (“branches”),
condiciones y bucles.
7
Diagrama de Secuencia (del sistema)
:Sistema
crearNuevaVenta()
*[más items]
descripción, total
:cajero
ingresarItem(codItem, cant)
finalizarVenta()
total con imptos.
realizarPago()
monto cambio, recibo
Un diagrama de secuencia del sistema muestra, para un escenario particular de un caso de uso, los
eventos externos que los actores generan, su orden y los eventos inter-sistemas.
Bucle
8
Diagrama de Secuencia : Ejemplo
:JuegodeDados
dado1:Dados dado2:Dados
jugar()
lanzar()
val1:=getValorMostrado()
lanzar()
val2:=getValorMostrado()
9
Diagrama de Secuencia : Ejemplo
:Computer :PrintServer :Printer
print(arch)
print(arch) [no queue]
print(arch)
10
Diagrama de Secuencia - Elementos
uLínea de existencia de los objetos en el Eje-Y
uObjetos que participan en la interacción en el
Eje-X.
uElementos del Diagrama
–Roles de Clase
–Líneas de Existencia de Objetos
–Activaciones
–Mensajes
11
Diagrama de Secuencia - Conceptos
uRoles de Clase - objetos que participan en la
interacción
–un “rol” es la participación de un objeto de una clase.
–se muestran como cajones (rectángulos) de objetos
con etiquetas de la forma:
nombre-de-Rol: Nombre-de-la-Clase
uLíneas de Vida – son el tiempo de vida del objeto
–son líneas verticales punteadas que salen de los
cajones de los objetos.
–representan el período de tiempo de existencia de los
objetos.
12
Diagrama de Secuencia - Conceptos
uActivaciones - representan el concepto de control
–Se muestran como un rectángulo delgado en la línea de
vida del objeto.
–Representa el periodo de tiempo durante el cual un
objeto esta ejecutando una acción .
uMensajes - comunicación entre objetos
–Líneas horizontales entre líneas de vida de los objetos,
pueden tener etiquetas.
–La secuencia de los mensaje esta generalmente
implícitamente indicada por su ubicación.
13
Diagrama de Secuencia - Ejemplo
:Computer :PrintServer :Printer
print(arch)
print(arch) [no queue]
print(arch)
Mensaje
Línea de
vida
Activación
Mensaje
Sincrónico
Retorno
Condición
Objetos participantes en la interacción
Puede omitirse
14
Creación y Destrucción de Objetos
:ItemWindow
:Item
NuevoItem(data)
crearItem(data)
Flecha hacia un objeto
índica creación del objeto.
:ItemWindow :Item
EliminarItem()
BorrarItem()
X
X indica destrucción del objeto
15
Tipos de Mensajes
Mensaje Simple / Sincrónico
No se dan detalles de la comunicación cuando no
son conocidos o no son relevantes.
Mensaje Asincrónico
Sintaxis del mensaje:
Número de secuencia [condición] * [expresión iteración]
valor de retorno := nombre del mensaje (parámetros)
Respuesta / Resultado
16
Ramificaciones (“Branching”)
a1:ClaseA b1:ClaseB
uUna ramificación es mostrada por múltiples mensaje que
abandonan un mismo punto, cada una etiquetada con una
condición
uSi las condiciones son mutuamente excluyentes representan
condiciones; de otra manera representan concurrencia.
:ClaseC
[x>0] Op1()
X
[x<0] Op1()
18
Activaciones
Para cada línea de
la orden calcular
subtotales.
Sumar todos los
subtotales para
obtener el total de
la orden.
uAlgún texto puede ser ubicado a un lado del símbolo de la activación
para describir las acciones que se ejecutan.
uRestricciones de tiempo pueden ser especificadas.
a1:Order b1:OrderLine
*[for each] subtotal()
OrderTotal()
19
Diagramas deDiagramas de
ColaboraciónColaboración
21
Diagramas de Interacción
uModelan el comportamiento dinámico del sistema; el flujo
de control en una operación.
uDescribe la interacción entre objetos; los objetos
interactúan a través de mensajes para cumplir ciertas
tareas.
uLas interacciones provee un “comportamiento” y
típicamente implementan un Caso de Uso.
uExisten dos tipo de diagramas de interacción en UML:
–Diagramas de Secuencia (dimensión temporal)
–Diagramas de Colaboración (dimensión estructural)
22
Diagrama de Colaboración
uEs un diagrama de interacción que enfatiza la
organización estructural de los objetos que
participan en una interacción.
uMuestra
–objetos / clases
–relaciones/uniones entre ellos
–mensajes
uLos mensajes son numerados para mostrar
secuencias.
23
Ejemplo: Diagrama de Colaboración para la función “ingresar
un ítem” en una aplicación de Punto-de-Venta
:Terminal
3: makeLineItem(spec,qty)
enterItem(upc,qty)
sl:SalesLineItem
:Sale
2: spec := specification(upc)
:SalesLineItem
:Product
Specification
:Product
Catalog
1: [new sale] create()
3.1: create(spec,qty)
1.1: create()
2.1: spec := find(upc)
3.2: add(sl)
24
Notación
:Terminal :Sale
1: addPayment(amount:Money)
Sintaxis:
retorno := mensaje(parametro : tipoParam) : tipoRetorno
Notación de Diagramas de Colaboración
Sale
una clase
:Sale
una instancia
s1:Sale
una instancia nombrada
25
Iteración
:Terminal :Sale
1*:li := nextLineItem(): SalesLineItem
:Terminal :Sale
1*[i := 1..10] li := nextLineItem(): SalesLineItem
Cláusula de la iteración
El “*” después del número de secuencia indica iteración – ej., el
mensaje esta siendo enviado repetidamente dentro de un bucle al
receptor.
26
Creación de Instancias
:Terminal :Sale
1:create(cashier)
Mensaje de creación con parámetros
de inicialización opcionales
Nueva instancia
<<new>>
:Sale
Notación alternativa