1. Metodologías de Análisis y Diseño Unidad VIII Diseño O.O “ Diagramas de Interacción” Sergio Sánchez Rios. Ingeniero en Informática – Licenciado en Informática
2.
3. Diagramas de Interacción Introducción 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. :InstanciaClaseA Mensaje1() :InstanciaClaseB 1. Mensaje2() 2. Mensaje3()
4. Diagramas de Interacción Introducción 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()
5. Diagramas de Interacción Introducción Cada diagrama posee puntos débiles y fuertes. -Difícil ver la secuencia de mensajes. -Notación más compleja. -Economizar espacio, flexibilidad al añadir nuevos objetos en dos dimensiones. -Es mejor para ilustrar bifurcaciones complejas, iteraciones y compartimientos concurrentes Colaboración -Fuerza a extender por la derecha cuando se añaden nuevos objetos; consume espacio horizontal -Muestra claramente la secuencia u ordenación en el tiempo de los mensajes. -Notación Simple. Secuencia Puntos Débiles Puntos Fuertes Tipo
6. Diagramas de Interacción Introducción Ejemplo de diagrama de colaboración: Realizar Pago Primer Mensaje Dirección del mensaje Instancia Línea Enlace Primer Mensaje Interno RealizarPago(dineroEntregado) : Registro : Venta 1. realizarPago(dineroEntregado) 1.1. create(dineroEntregado ) : Pago
7. Diagramas de Interacción Introducción Caja de Activación que muestra el foco de control Ejemplo de diagrama de secuencia: Realizar Pago : Registro realizarPago(DineroEntregado) : Venta 1. realizarPago(dineroEntregado) 1.1 create(dE) : Pago
8. Diagramas de Interacción Notación General 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
9. Diagramas de Interacción Notación General de Diagramas de Colaboración 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. Línea Enlace :InstanciaClaseA 2.1 Mensaje4() :InstanciaClaseB 1. Mensaje2() 2. Mensaje3()
10. Diagramas de Interacción Notación General de Diagramas de Colaboración 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 Mensaje :InstanciaClaseA 2.1 Mensaje4() :InstanciaClaseB 1. Mensaje2() 2. Mensaje3()
11.
12. Diagramas de Interacción Notación General de Diagramas de Colaboración 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()
13. Diagramas de Interacción Notación General de Diagramas de Colaboración 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. Condición : Registro : Venta {new} 1. [nueva venta] create(cajero)
14. Diagramas de Interacción Notación General de Diagramas de Colaboración Iteración en mensajes. Se indica que el mensaje va a ser enviado repetidas veces al receptor. Iteración y Cláusula de Iteración : Registro : Venta {new} 1:* [i:=1..10] siguienteliniaproducto(cajero)
15. Diagramas de Interacción Notación General de Diagramas de Colaboración 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.
16. Diagramas de Interacción Notación General de Diagramas de Colaboración Creación de Instancias. Esto se interpretará, normalmente, como una llamada a un constructor : Registro : Venta {new} 1. create(cajero) : Registro : Venta {new} <<create>> 1. hacer(cajero)
17. Diagramas de Interacción Notación General de Diagramas de Colaboración Multiobjetos. Conjuntos de Instancias. Multiobjeto 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. Ventas:Venta
18. Diagramas de Interacción Notación General de Diagramas de Colaboración Multiobjetos. Estos dos símbolos * utilizados conjuntamente implican iteración sobre el multiobjeto y el envió del mensaje getsubtotal a cada uno de los miembros : lineadeVenta : Venta 1*:st:=getSubTotal() *
19. Diagramas de Interacción Notación General de Diagramas de Colaboración Mensajes a una Clase. Los mensajes pueden ser dirigidos a la propia clase, con el fin de llamar a métodos de la clase. No subrayada, es una clase : Registro Fecha 1. d1:= hoy() :Fecha
20. Diagramas de Interacción Notación General de los Diagramas de Secuencia 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
21. Diagramas de Interacción Notación General de los Diagramas de Secuencia Mensajes. Mensajes : Registro Mensaje1() : Venta 1. Mensaje2() 2. Mensaje3()
22. Diagramas de Interacción Notación General de los Diagramas de Secuencia 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. Caja Activación : Registro Mensaje1() : Venta 1. Mensaje2() 2. Mensaje3()
23. Diagramas de Interacción Notación General de los Diagramas de Secuencia 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. Línea de Retorno : Registro Mensaje1() : Venta 1. Mensaje2()
24. Diagramas de Interacción Notación General de los Diagramas de Secuencia 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 Mensaje a si mismo : Registro Mensaje1() 1. Limpiar()
25. Diagramas de Interacción Notación General de los Diagramas de Secuencia Mensajes Condicionales Condición : Instancia1 Mensaje1() : Instancia2 1. [color=rojo] calcular()
26. Diagramas de Interacción Notación General de los Diagramas de Secuencia 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
27. Diagramas de Interacción Notación General de los Diagramas de Secuencia 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
28. Diagramas de Interacción Notación General de los Diagramas de Secuencia Mensajes Condicionales Mutuamente exclusivos : Instancia1 Mensaje1() : Instancia2 7.1. [x<10] calcular() 7.2. [x>15] calcular()
29. Diagramas de Interacción Notación General de los Diagramas de Secuencia Mensajes Condicionales Mutuamente exclusivos : Instancia1 Mensaje1() 7.1. [i=0] calcular() 7.2. [I=1] restar()
30. Diagramas de Interacción Notación General de los Diagramas de Secuencia Iteración para un único mensaje Signo iteración * y condición : Simulador ejecutarsimulacion() : Aleatorio 1. *[i:=1..N]: num:= siguienteEnt()
31. Diagramas de Interacción Notación General de los Diagramas de Secuencia Iteración para una serie de mensajes : Instancia1 ejecutarSimulacion() : Aleatorio Horas:=siguienteEnt() Trabajar(horas) : Programador * [i:=1..N]
32. Diagramas de Interacción Notación General de los Diagramas de Secuencia Creación de Instancias Línea de Vida Objetos creados recientemente se sitúan a la altura de la creación : Registro : Venta realizarPago(de) create(de) : Pago autorizar()
33. Diagramas de Interacción Notación General de los Diagramas de Secuencia 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 : Pago create(de) <<destroy>> ..... X
34. Diagramas de Interacción Notación General de los Diagramas de Secuencia Iteración sobre una colección (multiobjetos) Signo iteración * : Aleatorio : Venta t:=getTotal() : LineaVenta * : st := getSubTotal()
35. Diagramas de Interacción Notación General de los Diagramas de Secuencia 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.