Академический Документы
Профессиональный Документы
Культура Документы
Diagramas de secuencia
Diagramas de Secuencia
y colaboración
Cada uno de ellos resalta ciertos aspectos en particular:
: Libro : Ficha socio : Ficha libro : Préstamo
: Encargado
• Los diagramas de colaboración muestran las relaciones
entre los objetos y los mensajes que intercambian
Situación socio ok
3 4
1
Diagramas de Colaboración Diagramas de secuencia
: Ficha s n Un diagrama de secuencias muestra las interacciones expresadas
ocio
3: Verificar situación socio en función del tiempo.
4: Situación socio ok
n En concreto muestra los objetos participantes y los mensajes que
intercambian entre ellos a lo largo del tiempo.
6: Situación libro ok : Encargado
: Présta
7: Introducir préstamo mo n Los diagramas de secuencias son más apropiados para
especificar restricciones de interacción en tiempo real.
5: Verificar situación libro
: Ficha li
bro n Un diagrama de secuencias tiene dos dimensiones,
• la vertical que representa el tiempo, y
• la horizontal que representa los distintos objetos.
5 6
7 8
2
Ejemplo de diagrama de secuencia Notación: Línea de vida (lifeline)
Ventana de Línea de Elemento
Orden
entrada de orden Orden de stock n La línea vertical representa la existencia de un objeto a lo largo de
prepar() un determinado tiempo y recibe el nombre de línea de vida del
* prepar()
condición
objeto.
comprobar()
objeto [comprobar=TRUE]
mensaje eliminar() • Si el objeto es creado o destruido, entonces su lifeline debe de
iteración necesita_reordenar()
comenzar y acabar en la línea de tiempo:
[necesita_reordenar=TRUE]
retorno nuevo n El mensaje que lo crea apuntará al objeto creado.
Elemento
ordenado n Si el objeto fuera destruido durante el diagrama, se
marcaría este evento con una gran “X”.
[comprobar=TRUE]
Elemento
nuevo
ordenado • En caso contrario la línea irá de la parte inferior a la superior
del diagrama.
11 12
3
Notación: activación Notación: activación concurrente
Quien llama Línea telefónica Llamado • En objetos concurrentes, la activación muestra el intervalo en el
que un objeto está realizando una operación.
§ Ejemplo descuelga
listo()
representan los descuelga
periodos de
actividad de los diga?
objetos
13 14
Notación: mensaje
Notación: activación procedural (común con diagramas de colaboración)
• En código procedural (o concurrente sincrónizado) la activación
muestra el intervalo de tiempo durante el cual un procedimiento o n Un mensaje es una comunicación entre objetos que
un procedimiento subordinado está activo. contiene información y que espera la realización de una
diálogo : controlador : factura1 : acción.
15 16
4
Notación: mensaje Notación: mensaje
n Cada mensaje se representa por una flecha entre las líneas de vida
de los objetos. n El mensaje puede incluir los argumentos e información de
control.
n La flecha se etiqueta con el nombre del mensaje, (operación o
señal) y opcionalmente con un número secuencia. n La información de control se puede expresar mediante una
condición, una marca de iteración o la forma de las flechas
n Normalmente las flechas son horizontales, pero si hubiera un de los mensajes:
tiempo de propagación la línea se suele representar oblicua.
• punta de flecha abierta: flujo de control genérico
n Existe la posibilidad de reflejar el retorno de un mensaje. (habitualmente asíncrono)
• punta de flecha sólida: Se usa con llamadas a
• Se representa por una flecha cuya cabeza son dos líneas (esto procedimiento anidadas. También cuando un objeto
es punta de flecha no rellena). concurrente espera hasta que se complete la llamada.
• Se suele omitir la flecha de retorno en los flujos procedurales
(el retorno está implícito) • media punta de flecha: flujo de control asíncrono, de
forma explícita
17 18
El retorno, si lo hay
debe ser explícito
cuando el envío es
asíncrono
19 20
5
Tipos de Control Notación: mensaje
21 22
23 24
6
Etiqueta del mensaje: secuencia Etiqueta del mensaje: secuencia
1.2: b()
• 1, 2: c()
n 1.1, 2.1: d()
2.1.1: e()
• 1.1.1
• 2
n 2.1
n 2.2
27 28
7
… Estructuras de control … Estructuras de control
§ Podemos representar iteraciones en el envío de § La iteración, como comentario al margen:
mensajes, p.e., mientras se cumpla una condición.
§ La iteración puede expresarse como parte del
mensaje:
While X
Loop
end Loop
*[condición] Mensaje
Object1
Etiqueta del mensaje: signatura
Precio():double
[tiene_billete]:
n valor-retorno: omitido si el mensaje no tiene un
coste:=calcular_precio():double
resultado.
if(tiene_billete)
Together:
else n nombre-mensaje: el nombre de la operación en el
objeto receptor.
8
Notación: etiqueta del mensaje Diagramas de colaboración
1: TempInterna() 1: maximo_alcanzado ( )
1.1: TempExterna() : Usuario
Controlador::ControladorTemp
: bibliotecario 2: ejemplares disponibles ( )
1.3: Velocidad()
1.2: Voltaje()
: Libro
35 36
9
Diagramas de colaboración Diagramas de colaboración
n Una colaboración incluye dos tipos de constructores: n Una colaboración puede estar asociada a un tipo, una
operación o un caso de uso para describir sus efectos
• una descripción de la estructura estática de los objetos externos:
afectados, incluyendo sus relaciones
• una descripción de la secuencia de mensajes Se trata de una especificación que describe los cambios
intercambiados sobre los objetos para realizar el trabajo. producidos en un entorno externo
n Una colaboración puede estar asociada a una clase, a un
n El primer aspecto es el contexto de la colaboración mientras método, (implementación de una operación), o a la
que el segundo es la interacción soportada por la realización de un caso de uso:
colaboración. n Se está describiendo una implementación estos elementos
internamente.
n Ambos son necesarios para una especificación completa, y
acostumbran a describirse en conjunto.
37 38
39 40
10
Diagramas de colaboración: Notación Diagramas de colaboración
n En sistemas concurrentes, un objeto activo es aquel que tiene el flujo
de control y se denota con bordes más gruesos.
41 42
En cualquiera de los casos, es preferible utilizar escenarios, empezando por la identifica un ejemplar y solicita al sistema que registre el préstamo
secuencia normal (es la más completa)
43 44
11
Documentar casos de uso. Opción 2? Realización de un caso de uso
sistema :
Sistema n Precondición:
: Bibliotecario
1: comenzar el proceso de préstamo
n Diagrama de clases
n Casos de uso
Se realiza el caso de uso Identificación de socio
n Cada paso del actor à mensaje al sistema
2: comprueba la situación del socio sistema :
Sistema
: Bibliotecario
identifica el libro
45 46
1
* Multa
0..1
fecha multa
dias multa
47 48
12
Realización de un caso de uso Realización de un caso de uso
4: crear(fecha, alumno, ejemplar)
: Préstamo
: Libro : Préstamo : Libro : Ejemplar : Ejemplar
: Bibliotecario
5: set prestado ( )
: Bibliotecario
buscar_libro (string)
2: ejemplares disponibles ( )
: Ejemplar
ejemplares disponibles ( ) prestado ( )
: Libro
1: buscar_libro (string)
crear(fecha, alumno, ejemplar)
set prestado ( )
3: prestado ( )
: Libro * : Ejemplar
49 50
51 52
13
Larman, “Patrones”: Experto “Patrones”: Creación
Sale
n buscar la clase que n asignar a B la responsabilidad de crear instancias de A si:
date
tiene la información time n B es una agregación/comp. de A
Product
Sales Specification
1
LineItem * Described-by
description
quantity price
itemID todas las películas película ZZ :
: Empleado : Película Película
t := getTotal() Sale
:Sale 2: crear_cinta (Integer)
3: crear (Película)
: Cinta
date
time
53 54
Pulsa botón
n el trabajo de ese actor (controlador de tareas)
:Cajero
actionPerformed ( actionEvent)
Añade_producto ()
:Registradora
Interfaz
:SaleJFrame
Evento del sistema
Añade_producto()
55 56
14
“Patrones”, en resumen... “Patrones”, en resumen...
n bajo acoplamiento y alta cohesión: n Ejemplo correcto
makePayment()
makePayment()
create() makePayment()
p : Payment
create()
: Payment
addPayment( p )
mal ejemplo...
57 58
<<extend>>
Alta de película
Productora
nombre : String
Director
Actor
0..* 0..*
Empleado
0..* 0..*
Película Alta de cinta
título : String (p.extensión:
año : Integer Cinta
contiene película nueva)
duración : Time número : Integer
tema : String 1 0..*
untitled () 0..*
1 alquiladas
{subset}
Baja de cinta
59 Consulta de película 60
15
Alta de película Alta de película, mensajes
• 1 El empleado del vídeo–club solicita al sistema comenzar el proceso de alta de
película sistema
: Empleado
Postcondición
• El sistema ha almacenado la información correspondiente a la nueva película
Excepciones
El sistema ha almacenado la información correspondiente a la
• 4 Si el sistema detecta que la película ya está registrada, el s istema, informa de la
situación al empleado del vídeo –club permitiéndole modificar los datos
proporcionados, a continuación este caso de uso continúa 61 62
2:
3 El empleado del vídeo–club identifica la película
4 Si la película no está registrada, se realiza el caso de uso U 3: [película ya existe] identifica la película Si la película no está
registrada, se realiza el
caso de uso UC–04 (Alta
5 El sistema solicita el número de cintas de la película a dar d e alta 4: [no existe] caso de uso UC–04 de película)
5:
6 El empleado del vídeo–club proporciona el número de cintas y solicita al sistema
que almacene la información
7 El sistema almacena los datos proporcionados e imprime las etiquetas de
identificación de cintas autoadhesivas
6: número de cintas y confirma
8 El sistema informa al empleado del vídeo –club que el proceso ha terminado con
éxito 7:
8:
9 El empleado del vídeo–club pega las etiquetas en las cintas y las coloca en las
estanterías Postcondición:
63 cintas registradas 64
16
Alta de cintas, realización Alta de cintas, realización
todas las películas : Película
: Cinta
3: crear (Película)
: Empleado2: crear_cinta (Integer)
2: crear_cinta (Integer)
65 66
17