View
2.058
Download
1
Category
Preview:
Citation preview
UML Transición de Estados
Lic. César Alcántara Loayza
2CAL/Fundamentos
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.
3CAL/Fundamentos
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ó.
4CAL/Fundamentos
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.
5CAL/Fundamentos
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.
6CAL/Fundamentos
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).
7CAL/Fundamentos
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.
8CAL/Fundamentos
Evento Es un estímulo del sistema, a
menudo en la forma de un mensaje de un objeto a otro.
9CAL/Fundamentos
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.
10CAL/Fundamentos
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.
11CAL/Fundamentos
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.
12CAL/Fundamentos
D. Actividad – D. Estado La base para el diagrama de
estados es la relación entre los estados y los eventos.
13CAL/Fundamentos
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
14CAL/Fundamentos
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.
CompletoColocado Productos disponibles
15CAL/Fundamentos
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.
16CAL/Fundamentos
Notación de la Acción FillOrder() es la acción para el
evento “productos disponibles”.
CompletoColocado Productos disponibles / FillOrder()
17CAL/Fundamentos
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
18CAL/Fundamentos
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.
19CAL/Fundamentos
Estado Final
Completa
Archivada
Cancelada
20CAL/Fundamentos
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).
21CAL/Fundamentos
Solución Ejercicio
Prospecto
Activo
Preferente
En Prueba
OrdenColocada / AdOrden(Orden)
Ordenes de 6 meses > 10,000 / SetPreferido(true)
Pago pasado / SetPrueba(true)
Pagos pasados > 1 / SetPreferido(false)
22CAL/Fundamentos
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.
23CAL/Fundamentos
Estados extendidos Estado completo – representa el
estado de la orden
24CAL/Fundamentos
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:
25CAL/Fundamentos
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()
26CAL/Fundamentos
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.
27CAL/Fundamentos
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.
28CAL/Fundamentos
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.
29CAL/Fundamentos
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:
30CAL/Fundamentos
Condiciones entry redundantes
El ejemplo tiene identicas acciones sobre las dos transiciones entrantes al estado bound (limitado)
31CAL/Fundamentos
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”
32CAL/Fundamentos
Acciones exit redundantes Un problema similar se da con eventos
que provocan a un objeto dejar un estado
33CAL/Fundamentos
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.
34CAL/Fundamentos
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)”
35CAL/Fundamentos
Ejercicio - instrucciones Lea la declaración del problema
siguiente y construya un diagrama de estados para el objeto Producto.
36CAL/Fundamentos
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."
37CAL/Fundamentos
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.
38CAL/Fundamentos
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 clasesde estados
Evento (todos los tipos) Una operación, eventos signal tambien pueden ser objetosAcción Una operación Actividad Una operaciónGuard Condition Una lógica condicional dentro de un métodoSend event Una llamada, dentro de un método, a una operación en otro
objetoEstado Un valor de atributo que representa la condición del objetoParametros operaciones o atributos que derivan el valor
39CAL/Fundamentos
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.
40CAL/Fundamentos
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).
Recommended