3.2: Diagramas de secuencia 3.2: Diagramas de 3.2: Diagramas de secuencia en UML A. Goñi, J. Ibáñez, J. Iturrioz, J.A. Vadillo OCW 2013 Diagrama g de Secuencia en UML OBJETOS obj1: IU_CU_X obj2: Gestor_X obj3: Clase_X : ACTOR 1: escribe d y solicita .... 2: busca(d) 3: getAtributoY() .... v .... PASO DE MENSAJES / LLAMADAS A MÉTODOS Los mensajes que se envían entre objetos se presentan en orden secuencial (1: 2: ...) VALORES DEVUELTOS Diagrama g de Secuencia en UML obj1: IU_CU_X IU CU X obj2: Gestor_X Gestor X obj3: Clase_X Clase X : ACTOR 1: escribe d y solicita li i .... 2: busca(d) .... 3: getAtributoY() v .... FOCO DE CONTROL: período en el que el objeto ejecuta j t algo l LÍNEA DE LA VIDA: período en el que el objeto existe Diagrama g de Secuencia en UML : C1 : C2 new : C3 hazX() () hazY() destroy Los objetos se pueden crear con el método NEW (comienza su línea de vida y foco de control mientras ejecutan cosas) y se pueden destruir con el método DESTROY (se termina su línea de vida) Diagrama g de Secuencia en UML obj1: IU_CU_X obj2: Gestor_X obj3: Clase_X : ACTOR 1: escribe d y solicita .... 2: busca(d) .... 3: getAtributoY() ib () v .... Significa que la clase Gestor_X debe proporcionar el método b busca. sca Así se DISEÑAN las clases, esto es, se identifican sus MÉTODOS a partir de las RESPONSABILIDADES definidas durante el FT de requisitos/análisis Gestor_X busca(a:tipoD): tipoRes Diagrama g de Secuencia en UML obj2: Gestor_X obj3: Clase_X getAtributoY() v .... Una llamada a un método puede devolver un valor (mensaje “v” en línea con puntos suspensivos). Generalmente sólo se pondrá en el diagrama de secuencia cuando proporcione información interesante Diagrama g de Secuencia en UML : Gestor_Personas Gestor Personas pp: Persona getNombre() nombre En este caso NO ES NECESARIO. Es evidente que le estamos preguntando al objeto “pp” por su nombre, y eso será lo que nos devolverá. Nos ahorraremos una línea en el diagrama de secuencia y será más fácil de leer. Diagrama de Secuencia en UML : Gestor_Personas G t P pp: Persona P : Departamento D t t getNombre() nombre b setNombreJefe(nombre) En este caso SÍÍ ES NECESARIO. Así podemos ver que ponemos como nombre del jefe de departamento el nombre del objeto “pp”. Diagrama g de Secuencia en UML : Gestor_Emps emp: Empleado g getNombreYCategoría() g () nombre y categoría .... Una llamada a un método NO puede devolver MÁS de un valor. Eso no es posible ibl utilizando tili d un lenguaje l j OO Diagrama de Secuencia en UML obj1: IU_CU_X obj2: Gestor_X obj3: Clase_X : ACTOR 11: escribe ib d y solicita .... 2: busca(d) .... CONDICIÓN .... 5: … [está] 6: hazX() 7: hazW() .... [no está] 6: hazY() Los diagramas de secuencias muestran los envíos de mensajes entre objetos en orden secuencial (se añaden números de secuencia 1: 2:, …). SE PUEDEN AÑADIR CONDICIONES CONDICIONES. Los números de secuencia continúan independientemente en cada rama. NO HAY QUE ABUSAR DE LAS CONDICIONES. Es mejor realizar distintos diagramas de secuencia. Diagrama de Secuencia en UML obj1: IU_CU_X obj2: Gestor_X obj3: Clase_X : ACTOR alt esta [true] h X() hazX() hazW() [false] .... hazY() Con U C UML 2 se p pueden describir CON CONDICIONES C ON S usando fragmentos g combinados de tipo ALT (alternativa) La condición a evaluar (esta) se pone al lado de la palabra reservada alt. Separados por una línea discontinua aparecen los fragmentos del diagrama que corresponden a cada condición. Diagrama g de Secuencia en UML Objetos múltiples de Clase_X obj2: Gestor_X :Clase_X 2: busca(d) 3: getAtributoY() SE PUEDE AÑADIR REPETICIONES. De esta manera se indica que a varios objetos de la clase Clase X se les pide ejecutar el método getAtributoY() Clase_X Diagrama g de Secuencia en UML obj2: Gestor_X obj3: Clase_X 2: busca(d) loop i=1..* Se repite de 1 a n veces veces. 3: getAtributoY() 4: añadir(i) Se puede usar el valor i. i También se puede describir REPETICIONES usando fragmentos combinados de tipo “loop” “loop”. Al lado de “loop” p se indica la cardinalidad de cuántas veces se repite o una condición de hasta cuándo se repite. Diagrama g de Secuencia en UML obj2: Gestor_X obj3: Clase_X 2: busca(d) 3: getAtributoY() Repetimos hasta encontrar el valor buscado Esta es otra manera de especificar una repetición: utilizando una nota UML Diagrama g de Secuencia en UML : Gestor_Emps emp: Empleado hi :Persona g getHijos() j () h1, h2, … hN getNombre() Aunque hemos dicho que una llamada a un método é NO O PUEDE DEVOLVER O MÁS S DE UN V VALOR, O , pe permitiremos e os esto como una notación abreviada … Diagrama g de Secuencia en UML : Gestor_Emps emp: Empleado ggetHijos() j () l loop * vec :Vector :Persona P vec getNext() getNombre() Recorrer todos los elementos del vector … notación abreviada de este diagrama de secuencia