Академический Документы
Профессиональный Документы
Культура Документы
Diagramas de Estados
Contenidos
Diagramas de estados Estados y subestados Eventos y transiciones. Acciones Diagramas de actividades Aplicaciones de los diagramas
Aprender la notacin UML para representar estados y transiciones Aprender a construir diagramas de estados y diagramas de actividades Aplicar estas tcnicas al diseo de clases y a la descripcin detallada de los casos de uso
Diagramas de Estados
Son tiles slo para los objetos con un comportamiento significativo
El resto de objetos se puede considerar que tienen un nico estado
Completan la definicin de los casos de uso y sirven de base para el diseo (tcnico) de la interfaz de usuario Los diagramas de Estados y los diagramas de interaccin son complementarios El formalismo utilizado proviene de los Statecharts (Harel)
La mquina recibe eventos del mundo exterior, y cada evento provoca que la mquina cambie de un estado a otro.
Diagramas de Estados
Ejemplo de un Diagrama de Estados para la clase Empleado:
c ontratar en el paro perder em pleo jubilars e jubil ars e en ac tivo
jub ilado
Diagramas de Estados
Cada objeto est en un estado en cierto instante El estado est caracterizado por los valores de los atributos y los enlaces del objeto El estado en el que se encuentra un objeto determina su comportamiento
jubilado
Fasa : Empresa
Caractersticas
Son autmatas jerrquicos que permiten expresar concurrencia, sincronizacin y jerarquas de objetos Son grafos dirigidos Son deterministas Los estados inicial y final estn diferenciados del resto La transicin entre estados es instantnea y se debe a la ocurrencia de un evento
Estado C
Estados de objeto1
Un estado se representa mediante de un rectngulo con las esquinas redondeadas, Puede tener de forma opcional uno o ms compartimientos.
Nombre Transiciones internas Cuando se crea un objeto, este se encuentra en el estado inicial.
Esperando el password
entry / desactivar el eco exit / activar el eco do / mostrar caracteres help / mostrar ayuda
Compartimiento de Nombre
Se coloca el nombre del estado, que ser un String Los estado sin nombre son annimos, y son distintos entre s Varios smbolos de estado con nombre idntico designan el mismo estado
Contiene una lista de acciones internas realizadas mientras los objetos estn en un estado. Formato:
nombre-evento lista-argumentos '/ exp-accin
Cada nombre de evento puede aparecer ms de una vez en un nico estado Las expresiones de accin pueden utilizar:
Transiciones internas: do
Mientras el objeto permanece en un determinado estado puede ejecutarse una accin interna, representada por do La accin do se inicia cuando se entra en el estado y termina:
Adems de los compartimentos de nombre y transiciones internas, cada estado puede tener un compartimiento con un diagrama anidado. Un estado se puede refinar:
en subestados concurrentes, a travs de relaciones and. en subestados mutuamente excluyentes, utilizando la relacin or.
Un estado dado as como recursivamente sus subestados, slo puede ser refinado de una de manera
Marcado parcial
[nmero.es_correcto() ]
entry/nmero.aadir(n) /marcar_nmero(nmero)
dgito(n)
Una expansin de un estado nos muestra su estructura en detalle. Los estados iniciales y finales se consideran pseudoestados,
La expansin de un estado en subestados concurrentes se indica a travs de un grfico dividido en subregiones horizontales con lneas discontinuas. Cada una de estas subregiones puede tener un nombre opcional y debe de contener un diagrama de estados anidado, con estados disjuntos
Cada una de estas subregiones puede tener un nombre opcional y debe contener un diagrama de estados anidado, con estados disjuntos
labo2
proyecto hecho
superada
superado
suspensa
suspensa
Un evento es un suceso notable: un suceso que puede disparar una transicin Los eventos pueden ser de distintos tipos, no necesariamente excluyentes:
Seal recibida de forma explcita Llamada a una operacin desde otro objeto. Condicin que se verifica Transcurso de un perodo de tiempo
Seales y llamadas
Seales y llamadas
La declaracin de eventos tiene el alcance del paquete en el que aparece (puede ser utilizada por clases que tienen visibilidad) Las seales y las llamadas se definen a travs del siguiente formato:
nombre de evento '(' lista de parmetros)
Jerarqua de seales
Seales como clasificadores: Los parmetros se indican como atributos de la seal Se pueden organizar en jerarquas de seales Son asncronas
Un evento por verificacin de una condicin se representa a travs de una condicin sin evento, utilizando:
when(pH>7.0)
Un evento por transcurso de tiempo es una expresin que evala dicho intervalo Por defecto indica el tiempo transcurrido en el estado en curso.
after(5 segundos)
Otros eventos temporales podran ser especificados como condiciones, como por ejemplo
when(fecha=1/01/2000)
Transiciones simples
Definicin:
Una transicin simple es una relacin entre dos estados, indicando que un objeto del primer estado entrar en el segundo estado y realizar ciertas operaciones cuando ocurra un evento dado si determinadas condiciones se cumplen
Transiciones simples
El disparador de la transicin es la ocurrencia del evento que est etiquetando la transicin. El evento podra tener parmetros, que se utilizarn en:
Los eventos se procesan de forma exclusiva en cada momento, (nunca concurrentemente). Si un evento no disparara ninguna transicin, simplemente se ignora.
Transiciones simples
Las transiciones se representan por una flecha slida que va de un estado a otro, etiquetada por un string de transicin con el siguiente formato:
La condicin es una expresin lgica en trminos de los parmetros del evento disparado, atributos y enlaces del objeto al que pertenece la mquina de estados.
La expresin de accin es una expresin que se ejecuta cuando la transicin se dispara La clusula de accin es un operador atmico pero una transicin puede contener varias clusulas de accin
Transiciones complejas
Una transicin puede tener mltiples estados fuente y mltiples estados destino. Representa una sincronizacin de hilos concurrentes a travs de ramas and/or.
Transiciones complejas
A1 Instalar B1
A2 Limpiar B2
Barras de sincronizacin
6.4. Acciones
Acciones
Podemos especificar la ejecucin de una accin como consecuencia de la transicin:
Acciones
Tambin podemos especificar el envo de un evento a otro objeto como consecuencia de la transicin:
a
...Acciones
Se escribe en trminos de operaciones, atributos, y enlaces del objeto al que pertenecen, y parmetros del evento disparado Puede tener como receptor el mismo u otro objeto: [destino.]evento_destino(argumento...)
Acciones internas
Se puede especificar el hacer una accin como consecuencia de entrar, salir o estar en un estado:
estado A entry/ accin al entrar do/ accin mientras est en el estado exit/ accin al salir
estado A
on evento_activador( arg1 )[ condicin ]/ accin
Actividades
Las actividades son similares a las acciones pero tienen duracin y se ejecutan dentro de un estado del objeto Las actividades pueden interrumpirse en todo momento, cuando se desencadena la operacin de salida del estado
Actividades
Cuando una actividad finaliza se produce una transicin automtica de salida del estado
a do: actividad [ condicin ] [ not condicin ] b
condicin
a do: actividad c
alternativa
Diagrama de Actividades
Es una variante de los Diagramas de Estados, organizado respecto de las acciones Representa el comportamiento interno de:
un mtodo (la realizacin de una operacin), un caso de uso un proceso de negocio (Workflow)
...Diagrama de Actividades
Las actividades se enlazan por transiciones automticas Cuando una actividad termina se desencadena el paso a la siguiente actividad Las actividades no poseen transiciones internas ni transiciones desencadenadas por eventos externos
Ejemplos
Buscar Bebida [no hay caf] [no zumo] [hay zumo] [hay caf Poner caf en filtro Aadir agua al depsito Coger taza Coger zumo
Encender mquina ^cafetera.On Caf en preparacin indicador de fin Servir caf Beber
Solicitar pago Reservar plazas Pagar pasaje Emitir billete Confirmar plaza reservada
Aplicaciones
Sirve para describir la secuencia o secuencias legales de eventos y transiciones Si es un objeto, el orden en que se producen y los cambios de estado. Ej, una instancia de Venta:
Si es un caso de uso, se pueden reprentar todas las combinaciones legales (todos los escenarios) en un mismo diagrama
Generalizacin de Estados
Generalizacin de Estados
Podemos reducir la complejidad de estos diagramas usando la generalizacin de estados Distinguimos entre superestado y subestados Los subestados heredan las variables de estado y las transiciones externas
Generalizacin de Estados
Ejemplo:
Pantalla inicial ayuda ayuda Pantalla de ayuda ok
Detalle pedido
Generalizacin de Estados
Quedara como:
ok
ayuda
Pantalla de ayuda
Generalizacin de Estados
Las transiciones de entrada pueden ir a subestados especficos:
e1 a e2 e0 b
pero...
Generalizacin de Estados
Es preferible tener estados iniciales de entrada a un nivel de manera que desde los niveles superiores no se sepa a qu subestado se entra:
e1 a e2 e0 b c
Generalizacin de Estados
Es posible ocultar los detalles de los sub-estados:
c e0
Generalizacin de Estados
La agregacin de estados es la composicin de un estado a partir de varios estados independientes La composicin es concurrente
el objeto estar en alguno de los estados de cada uno de los subestados concurrentes
Generalizacin de Estados
Ejemplo:
e1 e1
Historial
Por defecto, los autmatas no tienen memoria Es posible memorizar el ltimo subestado visitado para recuperarlo en una transicin entrante en el superestado que lo engloba
Historial
Ejemplo:
a
d2 cancel ayuda F1 d1 x y
Historial
Tambin es posible la memorizacin para cualquiera de los subestados anidados (aparece un * junto a la H)
a d2 in h out d1
H*
Historial
Ejemplo:
Enjuague Lavado Secado
Cerrar Puerta
Transiciones temporizadas
Las esperas son actividades que tienen asociada cierta duracin La actividad de espera se interrumpe cuando el evento esperado tiene lugar Este evento desencadena una transicin que permite salir del estado que alberga la actividad de espera. El flujo de control se transmite entonces a otro estado
Transiciones temporizadas
Ejemplo:
a
Si en 30 segundos no se introduce el dinero se termina la actividad pasando a anular la transaccin. En cualquier caso se cierra la ranura.
/ Abrir ranura esperar dinero entry: Mostrar mensaje do: Esperar 30 segundos exit: cerrar ranura anular transaccin
Depsito efectuado
Transiciones temporizadas
a
/ Abrir ranura esperar dinero entry: Mostrar mensaje exit: cerrar ranura when (30 segundos) anular transaccin
Depsito efectuado
Destruccin de Objeto
Ejemplo:
c ras h
E n vuelo
aterriz ar
E n t ierra
Disponible
creaNuevaVenta
IntrodArtculos introducirArticulo
EsperandoPago
sacar dinero
Usuario
transferir
Sis Banco
pedir saldo
Sacar dinero: 1. El usuario inserta tarjeta y el sistema valida la tarjeta y pide la contrasea 2. El usuario teclea 4 dgitos de su c. y el sistema valida la c. y solicita tipo de operacin. 3. El usuario solicita sacar dinero de su c.c. El sistema solicita cantidad. 4. El usuario pide x pts. y el sistema comunica con el banco emisor para comprobar los fondos y anotar la transaccin. El sistema imprime el recibo, dispensa el dinero y solicita del usuario que retire el recibo y el dinero 5. el usuario retira el dinero y el sistema lo detecta y expulsa la tarjeta.
tarjeta retirada
entrega dinero
entry/ entregardinero entry/ ^lector.expulsar_tarjeta
transaccion[ ok ]
seleccionar "sacar"
Importe
entry/ ^display.pedir_cantidad
importe introducido
tarjeta retirada
entrega dinero
PINtecleado( PIN )[ error ] PINtecleado( PIN )[ ok ] Opciones seleccionar "sacar" when( 30 seg ) ^display.mensaje(mximo) Importe conexion banco transaccion[ ok ]
importe introducido
Bibliografa Recomendada
Booch, G., Jacobson, I., Rumbaugh, J. El Lenguaje Unificado de Modelado. Gua del usuario. Addison-Wesley/Diaz de Santos,1999. Larman, C. UML y Patrones. Introduccin al Anlisis y Diseo Orientado a Objetos y al Proceso Unificado . Prentice Hall, 2002. Cap. 29
Lecturas complementarias
Rumbaugh, J., Jacobson, I., Booch, G. El Lenguaje Unificado de Modelado. Manual de referencia. AddisonWesley,2000. OMG, OMG Unified Modeling Language Specification. Version 1.4. Object Management Group Inc., 2001.