DiagramasDiagramasDe 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
Modelan el comportamiento dinámico del sistema; el flujo de control en una operación.
Describe la interacción entre objetos; los objetos interactúan a través de mensajes para cumplir ciertas tareas.
Las interacciones provee un “comportamiento” y típicamente implementan un Caso de Uso.
Existen 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 deUso
Diagrama deCasos de
Uso
ModeloConceptual
Diagrama deSecuencia del
Sistema
Diagrama deClases de Diseño
Diagramade Interacción
Depende de
Análisis Diseño
Diagramas de SecuenciaDiagramas de Secuencia
5
Diagramas de Secuencia
Modela interacciones en un gráfico de dos dimensiones
Los objetos que participan en la interacción son ubicados en el eje-X, el tiempo en el eje-Y
El eje-Y modela la línea de vida de los objetos.
El diagrama de secuencia es un diagrama de interacción que enfatiza el ordenamiento temporal de los mensajes en una interacción.
Los mensajes pasados entre objetos manifiestan la interacción.
6
Diagramas de Secuencia ...
Pueden ser usados en dos formas:– Forma de Instancia– Forma Genérica
De instancia: describe un escenario especifico (un escenario es una instancia de la ejecución de un caso de uso).
Gené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
Línea de existencia de los objetos en el Eje-Y Objetos que participan en la interacción en el
Eje-X.
Elementos del Diagrama– Roles de Clase– Líneas de Existencia de Objetos– Activaciones– Mensajes
11
Diagrama de Secuencia - Conceptos
Roles 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
Lí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
Activaciones - 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 .
Mensajes - 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 devida
Activación
MensajeSincró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 :ItemEliminarItem()
BorrarItem()X
X indica destrucción del objeto
15
Tipos de Mensajes
Mensaje Simple / SincrónicoNo 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
Una ramificación es mostrada por múltiples mensaje que abandonan un mismo punto, cada una etiquetada con una condición
Si las condiciones son mutuamente excluyentes representan
condiciones; de otra manera representan concurrencia.
:ClaseC[x>0] Op1()
X
[x<0] Op1()
17
Iteración
a1:Order b1:OrderLine
Sintaxis: * [expresión-iteación ] mensaje
*[for each] subtotal()OrderTotal()
18
Activaciones
Para cada línea de la orden calcularsubtotales.Sumar todos lossubtotales para obtener el total dela orden.
Algún texto puede ser ubicado a un lado del símbolo de la activación para describir las acciones que se ejecutan.
Restricciones de tiempo pueden ser especificadas.
a1:Order b1:OrderLine
*[for each] subtotal()OrderTotal()
19
Diagramas deDiagramas deColaboraciónColaboración
21
Diagramas de Interacción
Modelan el comportamiento dinámico del sistema; el flujo de control en una operación.
Describe la interacción entre objetos; los objetos interactúan a través de mensajes para cumplir ciertas tareas.
Las interacciones provee un “comportamiento” y típicamente implementan un Caso de Uso.
Existen 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
Es un diagrama de interacción que enfatiza la organización estructural de los objetos que participan en una interacción.
Muestra– objetos / clases– relaciones/uniones entre ellos– mensajes
Los 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
:Terminal3: makeLineItem(spec,qty)enterItem(upc,qty)
sl:SalesLineItem
:Sale
2: spec := specification(upc)
:SalesLineItem:ProductSpecification
:ProductCatalog
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 :Sale1: 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 :Sale1*:li := nextLineItem(): SalesLineItem
:Terminal :Sale1*[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 :Sale1:create(cashier)
Mensaje de creación con parámetros de inicialización opcionales
Nueva instancia
<<new>>:Sale
Notación alternativa
27
Secuencia de mensaje
:ClassA :ClassB1:msg2()
:ClassC
:ClassD
msg1()
1.1:msg3()
2.1:msg5()
2:msg4()
2.2:msg6()
1 2
3
4 5
6
28
Mensajes Condicionales
:Terminal :Sale1: [new Sale] create()
:SalesLineItem
msg1()
1.1: create()
Cláusula condicional
29
Condiciones mutuamente excluyentes
:ClassE
:ClassA
:ClassD
msg1():ClassB
:ClassC
2: msg6()
1b: [not cond-1] msg4()
1a: [cond-1] msg2()
1b.1: msg5()
1a.1: msg3()
30
Mensaje a múltiples objetos
:Sale :SalesLineItem
msg1()
1: s := size() : int
Mensaje enviado a una colección de objetos.
31
Mensaje a una Clase
:Sale Date
msg1()Mensajes a una clase
Una clase(no subrayada)
1: d1 := today() : Date