Document Details

ConciseSarod3159

Uploaded by ConciseSarod3159

Tags

UML diagrams interaction diagrams software design object-oriented programming

Summary

This document provides a detailed explanation of interaction diagrams in UML, focusing on particular aspects like sequence, communication, and polymorphism. Various examples and approaches are demonstrated through diagrams.

Full Transcript

Diagramas de interacción DA2 - Repaso DA1 2020 Diagramas de interacción - Los diagramas de interacción UML representan interacción (comunicación, colaboración) entre objetos/clases. - Describen como grupos de objetos colaboran entre sí para conseguir algún fin. -...

Diagramas de interacción DA2 - Repaso DA1 2020 Diagramas de interacción - Los diagramas de interacción UML representan interacción (comunicación, colaboración) entre objetos/clases. - Describen como grupos de objetos colaboran entre sí para conseguir algún fin. - Veremos entonces objetos, así como los mensajes que estos se envían entre sí dentro de un caso de uso. Se usan para realizar modelado dinámico de un caso de uso. Diagramas de interacción - Los diagramas de interacción UML consisten de: - Diagramas de secuencia - Diagramas de comunicación/colaboración - Cada uno de ellos resalta ciertos aspectos en particular: - Los diagramas de colaboración muestran las relaciones entre los objetos y los mensajes que intercambian. - Un diagrama de secuencia muestra las interacciones expresadas en función de secuencias temporales. Diagramas de secuencia Diagramas de comunicación Comparando ambos diagramas: Diagrama de secuencia Diagrama de colaboración Muestra claramente la secuencia u Es más difícil de ver la secuencia de ordenación en el tiempo de los mensajes. mensajes. Se enfocan más en las No muestra enlaces entre los objetos. relaciones entre objetos; los pasos se enumeran y se ubican sobre las líneas, usando pequeñas flechas. Nos fuerza a extenderlo a la derecha Es “más económico de usar”, ahorra más cuando agregamos varios objetos; espacio de diagramación. Es fácil de consume espacio horizontal. agregar más objetos en dos dimensiones Tiene bastante más opciones de notación Menos opciones de notación. (más complejo y completo) Ejercicio: convirtiendo de uno a otro: Ejercicio: convirtiendo de uno a otro: Diagramas de secuencia - Un diagrama de secuencia muestra las interacciones expresadas en función del tiempo. En concreto muestra los objetos participantes y los mensajes que intercambian entre ellos a lo largo del tiempo. - Los diagramas de secuencia son más apropiados para especificar restricciones de interacción en tiempo real. - Un diagrama de secuencia tiene dos dimensiones: - la vertical que representa el tiempo; - y la horizontal que representa los distintos objetos (llamados participantes) Diagramas de secuencia: participantes Diagramas de secuencia: mensajes Diagramas de secuencia: mensajes de retorno - Podemos usar cualquiera de estas dos formas para especificar un mensaje de retorno: - La primera de ellas es breve. - Las segunda permite describir la información contenida en el valor de retorno. Diagramas de secuencia: creación de objetos - La creación de los objetos la indicamos con el mensaje create y el objeto creado lo ubicamos en la altura en la que su mensaje de creación se encuentra. Es decir, los escribimos ni bien se crean. Diagramas de secuencia: destrucción de objetos - Los objetos también pueden ser destruidos. Para indicarlo, simplemente ponemos una gran X sobre su línea de vida, indicando el final de la misma. - Recordemos que la presencia“vertical” de los objetos no son más que su línea o ciclo de vida. Nos muestran el tiempo en que un objeto está activo. Diagramas de secuencia: marcos de interacción - Existen una serie de marcos que permiten agregar información sobre nuestros mensajes: - loop: para mensajes que se repiten (código dentro de bucles for, foreach, while, etc). - opt: para mensajes dentro de un if sin un else. - alt: para mensajes dentro de un if/else o if/elseif/… - Y tambien, si usamos programación concurrente/paralela: - par: para ejecución paralela (dos mensajes que son llamadas concurrentes) - region: para especificar una región crítica (concurrencia, mutua exclusión) Diagramas de secuencia: marco loop Diagramas de secuencia: marco loop Diagramas de secuencia: marco alt Diagramas de secuencia: marco opt - En este caso se puede ver un caso de marcos de interacción anidados. Esto a nivel de código se reflejaría en un condicional if con un bucle de iteración en su interior (for, while, etc). Diagramas de secuencia: marco ref - También se puede particionar un diagrama en otros más pequeños, delegando ciertas interacciones a los mismos. Nos permite ahorrar espacio y hacer que nuestros diagramas sean más claros y expresivos, evitando mostrar interacciones que son de más bajo nivel o no relevantes para la interacción actual. Diagramas de secuencia: polimorfismo Imaginemos que tenemos una clase abstracta Payment de la cual heredan dos subclases DebitPayment y CreditPayment: ¿Cómo diagramamos una interacción que implica polimorfismo? En interacciones que implican polimorfismo, mostrar un objeto de la clase base invocando un método sobre un objeto de la clase derivada es incorrecto. Eso no es lo que pasa en la realidad. La pregunta es entonces, de qué tipo deberíamos mostrar el objeto, si el de la abstracción (clase base, abstracta o interface) o de la clase concreta que ofrece la implementación. La respuesta a esto depende de que es lo que se quiera mostrar con el diagrama. Diagramas de secuencia: polimorfismo La respuesta a esto depende de que es lo que se quiera mostrar con el diagrama: - Si lo que se quiere mostrar es el comportamiento genérico, entonces se debería usar la abstracción, y no mostrar comportamiento de ningún tipo concreto. La idea aquí es que justamente se usa la abstracción para hacer el código que llama independiente del llamado. - Por otro lado, si lo que se quiere mostrar con el diagrama es ejemplificar un caso concreto (el uso de un conjunto de clases concretas), entonces se el tipo concreto que corresponda y no la abstracción. Veamos un ejemplo: Diagramas de secuencia: polimorfismo Diagramas de comunicación - El diagrama de comunicación muestra cómo las instancias específicas de las clases trabajan juntas para conseguir un objetivo común. - Implementa las asociaciones del diagrama de clases mediante el paso de mensajes de un objeto a otro. - Muestra las relaciones sobre los objetos sin mostrar la dimensión temporal de dichas relaciones. - La secuencia de los mensajes vendrá dada por números de secuencia. Diagramas de comunicación: asociaciones y numeración - Existe una asociación entre Register y Sale - Register realiza dos llamadas a Sale, primero makePayment y luego foo - El método foo internamente llama a al método bar de la instancia Register - Numeración: 1 < 2 < 2.1 < 3 <... Diagramas de comunicación: ejemplo completo Diagramas de comunicación: creación de objetos Diagramas de comunicación: condiciones Diagramas de comunicación: condiciones Diagramas de comunicación: condiciones Diagramas de comunicación: iteraciones Diagramas de comunicación: iteraciones

Use Quizgecko on...
Browser
Browser