unidad 8 diagramas de interacción
DESCRIPTION
TRANSCRIPT
10 de abr de 2023 Sergio Sánchez Rios
Metodologías de Análisis y DiseñoUnidad VIII
Diseño O.O
“Diagramas de Interacción”
Sergio Sánchez Rios.
Ingeniero en Informática – Licenciado en Informática
10 de abr de 2023 Sergio Sánchez Rios
Diagramas de InteracciónIntroducción
UML incluye los diagramas de interacción para ilustrar el modo en el que los objetos interaccionan por medio de mensajes.
El termino de diagramas de interacción es una generalización de dos tipos de diagramas UML mas especializados; ambos pueden utilizarse para representar de forma similar interacciones de mensajes:
Diagramas de Colaboración.
Diagramas de Secuencias.
10 de abr de 2023 Sergio Sánchez Rios
Diagramas de Colaboración: ilustran las iteraciones entre objetos en una forma de grafo o red, en el cual los objetos se pueden colocar en cualquier lugar del diagrama.
:InstanciaClaseAMensaje1()
:InstanciaClaseB
1. Mensaje2()
2. Mensaje3()
Diagramas de InteracciónIntroducción
10 de abr de 2023 Sergio Sánchez Rios
Diagramas de Secuencia: ilustran las interacciones en un tipo de formato con el aspecto de una valla, en el que cada objeto nuevo se añade a la derecha.
:InstanciaClaseA
Mensaje1()
:InstanciaClaseB
1. Mensaje2()
2. Mensaje3()
Diagramas de InteracciónIntroducción
10 de abr de 2023 Sergio Sánchez Rios
Cada diagrama posee puntos débiles y fuertes.
Tipo Puntos Fuertes Puntos Débiles
Secuencia -Muestra claramente la secuencia u ordenación en el tiempo de los mensajes.
-Notación Simple.
-Fuerza a extender por la derecha cuando se añaden nuevos objetos; consume espacio horizontal
Colaboración -Economizar espacio, flexibilidad al añadir nuevos objetos en dos dimensiones.
-Es mejor para ilustrar bifurcaciones complejas, iteraciones y compartimientos concurrentes
-Difícil ver la secuencia de mensajes.
-Notación más compleja.
Diagramas de InteracciónIntroducción
10 de abr de 2023 Sergio Sánchez Rios
Ejemplo de diagrama de colaboración: Realizar Pago
RealizarPago(dineroEntregado)
:Registro :Venta1. realizarPago(dineroEntregado)
1.1. create(dineroEntregado)
:PagoPrimer Mensaje Dirección del mensaje
Instancia
Línea Enlace
Primer Mensaje Interno
Diagramas de InteracciónIntroducción
10 de abr de 2023 Sergio Sánchez Rios
:Registro
realizarPago(DineroEntregado)
:Venta
1. realizarPago(dineroEntregado)1.1 create(dE)
:Pago
Caja de Activación que muestra el foco de control
Ejemplo de diagrama de secuencia: Realizar Pago
Diagramas de InteracciónIntroducción
10 de abr de 2023 Sergio Sánchez Rios
Representación de clases e instancias.
Para cualquier tipo de elemento UML (clase, actor, ..) una instancia utiliza el mismo símbolo gráfico que el tipo, pero con la cadena de texto que lo designa subrayada.
Venta
Clase
:Venta
instancia
v1:Venta
Instancia nombrada
Diagramas de InteracciónNotación General
10 de abr de 2023 Sergio Sánchez Rios
Enlaces.
Un enlace es un camino de conexión entre dos objetos; indica que es posible alguna forma de navegación y visibilidad entre los objetos. De manera más formal un enlace es una instancia de una asociación.
:InstanciaClaseA
2.1 Mensaje4()
:InstanciaClaseB
1. Mensaje2()
2. Mensaje3()
Línea Enlace
Diagramas de InteracciónNotación General de Diagramas de Colaboración
10 de abr de 2023 Sergio Sánchez Rios
Mensajes.
Cada mensaje entre objetos se representa con una expresión de mensajes y una pequeña flecha que indica la dirección del mensaje. Se añade un número de secuencia para mostrar el orden secuencial de los mensajes en el hilo de control.Nomenclatura: Nro secuencia: retorno:= mensaje(parametro:tipo parametro) : tipo retorno
:InstanciaClaseA
2.1 Mensaje4()
:InstanciaClaseB
1. Mensaje2()
2. Mensaje3()
Mensaje
Diagramas de InteracciónNotación General de Diagramas de Colaboración
10 de abr de 2023 Sergio Sánchez Rios
Secuencia de números de mensaje.
El orden de los mensajes se representa mediante número de secuencias. El esquema de numeración es:
No se numera el primer mensaje.
El orden y anidamiento de los siguientes mensajes se muestra con el esquema de numeración válido en el que los mensajes anidados tiene un número adjunto. El anidado se denota anteponiendo el número del mensaje entrante al número del mensaje saliente.
Diagramas de InteracciónNotación General de Diagramas de Colaboración
10 de abr de 2023 Sergio Sánchez Rios
Mensajes a si mismo.
Se puede enviar un mensaje desde un objeto a si mismo. Esto se representa mediante un enlace a él mismo, con mensajes que fluyen a lo largo del enlace.
Mensaje1()
:Registro
1. Limpiar()
Diagramas de InteracciónNotación General de Diagramas de Colaboración
10 de abr de 2023 Sergio Sánchez Rios
Mensajes Condicionales.
Se indican posponiendo al número, de secuencia una cláusula condicional. El mensaje se envía sólo si la cláusula resulta verdadera.
:Registro :Venta {new}
1. [nueva venta] create(cajero)
Condición
Diagramas de InteracciónNotación General de Diagramas de Colaboración
10 de abr de 2023 Sergio Sánchez Rios
Iteración en mensajes.
Se indica que el mensaje va a ser enviado repetidas veces al receptor.
:Registro :Venta {new}
1:* [i:=1..10] siguienteliniaproducto(cajero)
Iteración y Cláusula de Iteración
Diagramas de InteracciónNotación General de Diagramas de Colaboración
10 de abr de 2023 Sergio Sánchez Rios
Creación de Instancias.
Cualquier mensaje se puede utilizar para crear una instancia, pero en UML existe el convenio de utilizar para este fin el mensaje denominado create. Si se utiliza otro nombre de mensaje (quizás menos obvio) se podría añadir al mensaje una característica especial llamada estereotipo UML, como <<create>>.
Además, podría añadirse opcionalmente la propiedad UML {new} a la caja de la instancia para resaltar la creación.
Diagramas de InteracciónNotación General de Diagramas de Colaboración
10 de abr de 2023 Sergio Sánchez Rios
Creación de Instancias.
:Registro :Venta {new}
1. create(cajero)
:Registro :Venta {new}
<<create>>
1. hacer(cajero)
Esto se interpretará, normalmente, como una llamada a un constructor
Diagramas de InteracciónNotación General de Diagramas de Colaboración
10 de abr de 2023 Sergio Sánchez Rios
Multiobjetos.
Conjuntos de Instancias.
Ventas:VentaMultiobjeto
Representa tan sólo un conjunto lógico de instancias.
Un mensaje dirigido a un icono de multiobjeto indica que se envía al objeto colección. No es dirigido a todos sus elementos.
Diagramas de InteracciónNotación General de Diagramas de Colaboración
10 de abr de 2023 Sergio Sánchez Rios
Multiobjetos.
:lineadeVenta:Venta
1*:st:=getSubTotal()
*
Estos dos símbolos * utilizados conjuntamente implican iteración sobre el multiobjeto y el envió del mensaje getsubtotal a cada uno de los miembros
Diagramas de InteracciónNotación General de Diagramas de Colaboración
10 de abr de 2023 Sergio Sánchez Rios
Mensajes a una Clase.
Los mensajes pueden ser dirigidos a la propia clase, con el fin de llamar a métodos de la clase.
:Registro Fecha
1. d1:= hoy() :Fecha
No subrayada, es una clase
Diagramas de InteracciónNotación General de Diagramas de Colaboración
10 de abr de 2023 Sergio Sánchez Rios
Enlaces.
A diferencia de los diagramas de colaboración, los diagramas de secuencias no muestran enlaces.
Mensajes.
Cada mensaje entre objetos se representa con una expresión de mensaje sobre una línea con punta de flecha entre los objetos. El orden en el tiempo se organiza de arriba a abajo
Diagramas de InteracciónNotación General de los Diagramas de Secuencia
10 de abr de 2023 Sergio Sánchez Rios
Mensajes.
:Registro
Mensaje1()
:Venta
1. Mensaje2()
2. Mensaje3()
Mensajes
Diagramas de InteracciónNotación General de los Diagramas de Secuencia
10 de abr de 2023 Sergio Sánchez Rios
Focos de control y cajas de activación
Los diagramas de secuencia podrían además mostrar los focos de control utilizando una caja de activación. La caja es opcional, pero la utilizan habitualmente los modeladores UML.
:Registro
Mensaje1()
:Venta
1. Mensaje2()
2. Mensaje3()
Caja Activación
Diagramas de InteracciónNotación General de los Diagramas de Secuencia
10 de abr de 2023 Sergio Sánchez Rios
Representación de Retornos
Un diagrama de secuencia podría opcionalmente mostrar el retorno de un mensaje mediante una línea punteada con la punta de flecha abierta, al final de una caja de activación.
:Registro
Mensaje1()
:Venta
1. Mensaje2()
Línea de Retorno
Diagramas de InteracciónNotación General de los Diagramas de Secuencia
10 de abr de 2023 Sergio Sánchez Rios
Mensajes a si mismos
Se puede representar un mensaje que se envía de un objeto a él mismo utilizando una caja de activación anidada
:Registro
Mensaje1()
1. Limpiar()
Mensaje a si mismo
Diagramas de InteracciónNotación General de los Diagramas de Secuencia
10 de abr de 2023 Sergio Sánchez Rios
Mensajes Condicionales
:Instancia1
Mensaje1()
:Instancia2
1. [color=rojo] calcular()
Condición
Diagramas de InteracciónNotación General de los Diagramas de Secuencia
10 de abr de 2023 Sergio Sánchez Rios
Mensajes Condicionales Mutuamente exclusivos
La notación para este caso es un tipo de línea de mensajes con forma de ángulo que nace desde un mismo punto.
:Instancia1
Mensaje1()
:Instancia2
7.1. [x<10] calcular()
7.2. [x<10] calcular()
:Instancia2
Diagramas de InteracciónNotación General de los Diagramas de Secuencia
10 de abr de 2023 Sergio Sánchez Rios
Mensajes Condicionales Mutuamente exclusivos
La notación para este caso es un tipo de línea de mensajes con forma de ángulo que nace desde un mismo punto.
:Instancia1
Mensaje1()
:Instancia2
7.1. [x<10] calcular()
7.2. [x>15] calcular()
:Instancia2
Diagramas de InteracciónNotación General de los Diagramas de Secuencia
10 de abr de 2023 Sergio Sánchez Rios
Mensajes Condicionales Mutuamente exclusivos
:Instancia1
Mensaje1()
:Instancia2
7.1. [x<10] calcular()
7.2. [x>15] calcular()
Diagramas de InteracciónNotación General de los Diagramas de Secuencia
10 de abr de 2023 Sergio Sánchez Rios
Mensajes Condicionales Mutuamente exclusivos
:Instancia1
Mensaje1()7.1. [i=0] calcular()
7.2. [I=1] restar()
Diagramas de InteracciónNotación General de los Diagramas de Secuencia
10 de abr de 2023 Sergio Sánchez Rios
Iteración para un único mensaje
:Simulador
ejecutarsimulacion()
:Aleatorio
1. *[i:=1..N]: num:= siguienteEnt()
Signo iteración * y condición
Diagramas de InteracciónNotación General de los Diagramas de Secuencia
10 de abr de 2023 Sergio Sánchez Rios
Iteración para una serie de mensajes
:Instancia1
ejecutarSimulacion()
:Aleatorio
Horas:=siguienteEnt()
Trabajar(horas)
:Programador
* [i:=1..N]
Diagramas de InteracciónNotación General de los Diagramas de Secuencia
10 de abr de 2023 Sergio Sánchez Rios
Creación de Instancias
:Registro :Venta
realizarPago(de)create(de)
:Pago
autorizar()
Línea de Vida
Objetos creados recientemente se sitúan a la altura de la creación
Diagramas de InteracciónNotación General de los Diagramas de Secuencia
10 de abr de 2023 Sergio Sánchez Rios
Destrucción de Objetos
En algunas circunstancias es deseable mostrar la destrucción explícita de un objeto como en C++ que no tiene recolección de basura.
:Venta
:Pagocreate(de)
<<destroy>>
.....
X
Diagramas de InteracciónNotación General de los Diagramas de Secuencia
10 de abr de 2023 Sergio Sánchez Rios
Iteración sobre una colección (multiobjetos)
:Aleatorio:Venta
t:=getTotal()
:LineaVenta
* : st := getSubTotal()
Signo iteración *
Diagramas de InteracciónNotación General de los Diagramas de Secuencia
10 de abr de 2023 Sergio Sánchez Rios
Mensajes a Objetos de clases
Al igual que en los diagramas de colaboración, las llamadas a los métodos de clase o estáticos se representan no subrayando el nombre del clasificador, lo que significa que se trata de una clase no de una instancia.
Diagramas de InteracciónNotación General de los Diagramas de Secuencia
10 de abr de 2023 Sergio Sánchez Rios
Guía del Tópico:
Software Engineering 6a. ed.– Ian Sommerville – Pearson Education – 2000. (Cap. 6)Ingeniería de Software Teoría y Práctica – Shari Lawrence Pfleeger – Pearson Education – 2002.Utilización de UML en ingeniería del software con objetos y componentes – Perdita Stevens & Rob Pooley – Addison Wesley – 2002. UML y Patrones una introducción al análisis y diseño orientados a objeto y al proceso unificado – Craig Larman – Prentice Hall - 2002.
Bibliografía