2. Objetivo
El diagrama de estados describe la vida
de un objeto en término de los eventos
que activan los cambios en el estado
del objeto. Identifica todos los eventos
externos e internos que pueden
cambiar el estado del objeto.
CAL/Fundamentos 2
3. Estado
Un estado describe la condición actual
de un objeto, por ejemplo, cuenta
sobregirada o la cuenta abierta.
Cuando la condición actual de la cuenta
se sobregira, la cuenta responderá
diferentemente de cuando la cuenta
está en la condición normal--se
rechazarán los cheques en lugar de
pagó.
CAL/Fundamentos 3
4. Secuencias y Estados
Contraste el alcance del diagrama de estados
con el del diagrama de secuencia. El alcance
del diagrama de estados es todo el tramo de
vida de un objeto. El alcance del diagrama de
secuencia es un solo escenario. Por
consiguiente, es posible derivar un diagrama
de estados del juego de diagramas de
secuencia que describen los casos del uso
que usan el objeto.
CAL/Fundamentos 4
5. Contexto del comportamiento
El diagrama de estados modela los
eventos que activan las transiciones de
un estado a otro estado. Cada evento
puede tener una acción
correspondiente que hace un cambio
en el objeto. Mientras un objeto está en
un estado, puede realizar trabajo
asociado con ese estado. Tal trabajo se
llama una actividad.
CAL/Fundamentos 5
6. Acción
Es una contestación a un evento en un
diagrama de estados, típicamente la
parte de la transición de un estado a
otro y típicamente atómico (no puede
dividirse en el subtareas).
CAL/Fundamentos 6
7. Actividad
Procesamiento que un objeto realiza
en particular a un estado específico.
Una actividad es típicamente no
atómica, es decir, puede componerse
de cualquier número de subtareas.
CAL/Fundamentos 7
8. Evento
Es un estímulo del sistema, a
menudo en la forma de un mensaje
de un objeto a otro.
CAL/Fundamentos 8
9. Diagrama de Estado
Se recomienda que observe cómo
parte de la declaración del problema
reflejan los elementos del modelo. Los
estados describen un objeto, de modo
que ellos aparecen típicamente como
adjetivos en la descripción del
problema, por ejemplo, cuenta abierta,
cuenta cerrada, factura retrasada.
CAL/Fundamentos 9
10. D. Actividad – D. Estado
El diagrama de actividad muestra el
flujo de control que pasa de una
actividad a otra, mientras que el
diagrama de estado muestra el flujo
de control de un estado a otro.
CAL/Fundamentos 10
11. D. Actividad – D. Estado
Use el diagrama de actividad cuando
todos los estados de un objeto mapean
a actividades. El movimiento de un
estado a otro se activa por la
realización de cada actividad. Use el
diagrama de estados cuando el objeto
tiene tanto estados activos y de espera
y los cambios son activados por
eventos externos y/o internos.
CAL/Fundamentos 11
12. D. Actividad – D. Estado
La base para el diagrama de
estados es la relación entre los
estados y los eventos.
CAL/Fundamentos 12
13. Estado Básico
Un estado se modela como un
rectángulo con bordes redondeados
con el nombre del estado dentro, al
igual que la forma corta del icono de
clase dónde sólo el compartimiento
del nombre es visible.
Completo
CAL/Fundamentos 13
14. Notación del Evento
La notación de evento del diagrama de
estados es una flecha que conecta un estado
a otro estado. La flecha realmente es la
transición asociada con el evento. La
dirección de la flecha muestra la dirección de
la transición de un estado a otro.
Colocado Productos disponibles Completo
CAL/Fundamentos 14
15. Notación de la Acción
Una acción es asociada con un evento y se
modela usando una barra oblícua seguida al
evento, seguida a su vez por la descripción de
la acción. Una acción cambia el objeto de un
estado a otro estado. Una acción es una tarea
atómica, de modo que no se puede partir en
sub tareas componente, ni puede
interrumpirse. No hay punto de quiebre dentro
de él, y detenerlo a la mitad del camino dejarían
el estado del objeto indefinido.
CAL/Fundamentos 15
16. Notación de la Acción
FillOrder() es la acción para el evento
“productos disponibles”.
Colocado Productos disponibles / FillOrder() Completo
CAL/Fundamentos 16
17. Estado Inicial
El estado inicial de un objeto tiene su
propia única notación, un punto sólido
con una flecha que apunta al primer
estado asociado. El estado inicial indica
el estado en el que un objeto se crea o
se construye.
Colocado
CAL/Fundamentos 17
18. Estado Final
Un objeto puede alcanzar un estado
final en que ninguna otra actividad
puede ocurrir y desde la que no se
puede regresar a un estado activo.
Debido a estas restricciones, el estado
final no se usa necesariamente en
todos los objetos.
CAL/Fundamentos 18
19. Estado Final
Completa Cancelada
Archivada
CAL/Fundamentos 19
20. Ejercicio
Rastreamos el estado del cliente actual para evitar
problemas de pago e identificar a clientes dignos de
tratamiento preferente. Todos los clientes son inicialmente
establecidos como prospecto, pero cuando ellos hacen su
primer pedido, se cambian al estado activo.
Si un cliente no paga una factura a tiempo, se pone en
estado de prueba. Si ellos pagan a tiempo y han pedido
más de $10,000 en los 6 meses anteriores ello garantiza
un estado preferente. Sólo pueden cambiarse el estado
preferente si el cliente llega tarde en dos o más pagos.
Entonces vuelven al estado activo en lugar de prueba
(dándoles el beneficio de la duda).
CAL/Fundamentos 20
21. Solución Ejercicio
Prospecto
OrdenColocada / AdOrden(Orden)
Activo Pago pasado / SetPrueba(true) En Prueba
Ordenes de 6 meses > 10,000 / SetPreferido(true)
Pagos pasados > 1 / SetPreferido(false)
Preferente
CAL/Fundamentos 21
22. Estados extendidos
En la forma extendida el diagrama de
estados muestra actividades, eventos
interiores, y los eventos diferidos. No
muchas herramientas soportan
actualmente eventos interiores y los
eventos diferidos.
CAL/Fundamentos 22
23. Estados extendidos
Estado completo – representa el estado
de la orden
CAL/Fundamentos 23
24. Actividades
Las actividades son procesos realizados dentro
de un estado. Una actividad tiende a no ser
atómica, es decir, una actividad puede ser un
grupo o serie de tareas. Pueden interrumpirse
las actividades. En este sentido, las actividades
son diferentes de las acciones que son tareas
atómicas, que no pueden interrumpirse. Para
modelar actividades dentro de un estado use la
palabra clave Do: seguido por uno o más
actividades:
CAL/Fundamentos 24
25. Actividades
Estas actividades se
realizarán desde el momento
en que el objeto entra en el
estado hasta que el objeto
deja el estado.
Do : countUnits()
Do : generateStatement()
Do : displayHeartRate()
CAL/Fundamentos 25
26. Eventos Internos y diferidos
Los eventos internos son eventos que
no causan un cambio en el estado. A
veces ésta es una pista de que su
modelo no muestra suficiente detalle.
Pueden haber cambios en el
subestados dentro del estado actual.
Revisaremos subestados,
superestados, y eventos internos mas
adelante.
CAL/Fundamentos 26
27. Eventos Internos y diferidos
Los eventos diferidos son eventos
que se anuncian mientras el objeto
se encuentra en el estado actual pero
el objeto no responde a el hasta que
el objeto deja el estado.
CAL/Fundamentos 27
28. Notación ...
El objetivo de la presente lección es
definir la notación de los diagramas
de estados para acciones entry y exit
y eventos send.
CAL/Fundamentos 28
29. Notación
Modelar las transiciones de estado a
veces resulta en más de un evento que
transita al mismo estado.
Adicionalmente, cada evento tiene una
acción correspondiente. Por ejemplo:
CAL/Fundamentos 29
30. Condiciones entry redundantes
El ejemplo tiene identicas acciones sobre las
dos transiciones entrantes al estado bound
(limitado)
CAL/Fundamentos 30
31. Remueve redundancia
Si la acción debe ser ejecutada sin
considerar cómo el objeto ingresa al estado,
use el concepto UML de entry action. El
formato es “entry:accion”
CAL/Fundamentos 31
32. Acciones exit redundantes
Un problema similar se da con eventos que
provocan a un objeto dejar un estado
CAL/Fundamentos 32
33. Remoción de redundancia
Cuando la misma accion debe ocurrir siempre que un objeto deja
un estado, use una acción exit. El formato es “exit:accion” , estos
ejemplos para acciones entry y exit muestran solo una acción,
pero podrían haber mas.
CAL/Fundamentos 33
34. Evento send
Cuando un ocurre un evento, un objeto algunas veces responde
llamando o señalando otro objeto. Esto es llamado un “send event”.
Adicione el evento send a la especificación del evento usando la
notación “ target-object-name.event-name(parametros)”
CAL/Fundamentos 34
35. Ejercicio - instrucciones
Lea la declaración del problema
siguiente y construya un diagrama de
estados para el objeto Producto.
CAL/Fundamentos 35
36. Control de inventario
Declaración del problema
Primero se ingresan los productos en nuestro
sistema cuando son ordenados mediante una
orden de compra (el P.O.). Cada producto guarda
un registro de P.O. Original. Cuando el producto
se recibe, se pone en el inventario registrando la
ubicación dónde se coloca. Cuando el producto se
recibe, nosotros tenemos que actualizar la P.O.
para indicar que hemos recibido el producto."
CAL/Fundamentos 36
37. Control de inventario
Cuando un producto se vende, el producto
rastrea la orden a la que pertenece. Una
vez el producto se vende, se empaca para
envio y el embarque asociado se registra.
Una vez el producto se envía, necesitamos
registrar el despachador y la fecha que fue
recogido. De vez en cuando un producto
es devuelto. En este caso, devolvemos el
producto al inventario y registramos su
ubicación.
CAL/Fundamentos 37
38. Estado – Diagrama de Clase
Elementos del diagrama de estados vienen a
formar parte del diagrama de clase
Elemento del diagrama Viene a ser en un diagrama de clases
de estados
Evento (todos los tipos) Una operación, eventos signal tambien pueden ser objetos
Acción Una operación
Actividad Una operación
Guard Condition Una lógica condicional dentro de un método
Send event Una llamada, dentro de un método, a una operación en otro
objeto
Estado Un valor de atributo que representa la condición del objeto
Parametros operaciones o atributos que derivan el valor
CAL/Fundamentos 38
39. Notación
El gráfico anterior introdujo el “send event." Un
send event se usa para indicar la comunicación
de un objeto a otro. En un diagrama de estados
la fuente de los eventos que llegan no se muestra
porque el mismo evento puede venir de cualquier
número de otros objetos y la contestación debe
ser la mismo. Sin embargo, un evento saliente
debe definir un conjunto de objetos receptores asi
sea sólo un objeto o una transmisión a todos los
objetos.
CAL/Fundamentos 39
40. Orden de los eventos
El orden de los eventos es importante al
traducir el modelo al código. Cuando un
evento ocurre:
1. Si una actividad está en marcha en el estado
actual, interrúmpalo.
2. Ejecute la salida: action/s.
3. Ejecute el event/action/s y cualquier send event.
4. Ejecute entry: action/s del nuevo estado.
5. Ejecute la(s) activity(ies).
CAL/Fundamentos 40