Diagramas de Estado
Tópicos Abordados
• Diagramas de Estado
–
–
–
–
Introdução
Conceitos
Estados Aninhados
Estados Concorrentes e Sincronização
Introdução
• Diagramas de Estado de David Harel
(statecharts)
– avanço às máquinas de estado tradicionais
planas
– Proporcionam uma definição formal explícita
de comportamento, permitindo uma verificação
dos eventos e transições de estados aos quais
um sistema está sujeito.
Diagramas de Estado
• Mostra os estados que os objetos de uma
classe podem assumir
• Mostra as transições permitidas entre pares
de estados
• Ideal para objetos que possuem poucos
estados
Diagramas de Estado
• Estado em objeto  a ordem na qual as
operações são executadas é importante
(idéia de objetos como máquinas
independentes).
• Quando a ordem das operações no tempo é
importante, pode-se formalizar o
comportamento de um objeto em termos de
uma máquina de estado finito equivalente.
Diagramas de Estado
• Desvantagem  é necessário definir todos
os possíveis estados de um sistema, o que
pode levar a uma “explosão” no número de
estado para sistemas complexos.
• Na UML contorna-se o problema
empregando -se um diagrama de estado
individualizado, para cada classe.
Exemplo
Classe Pedido
Ciclo de vida para um objeto pedido: é gerado, e pode passar por
uma série de estados: em análise, pendente, alterado, aprovado,
atendido (e daí gera-se faturas), rejeitado ou cancelado (deixando de
existir)
Operações subjacentes:
• registrar pedido
• alterar pedido
Exemplo
Classe Pedido - operações subjacentes:
a) Registrar pedido
h) Colocar pedido em pendência
b) alterar pedido
i) Tirar pedido de pendência
c) Cancelar pedido
j) Colocar pedido para
atendimento
d) colocar pedido em análise
k) Atender pedido
e) Analisa pedido
f) Colocar pedido para aprovação
g) Aprovar pedido
Diagrama de Estado para a classe Pedido
Alteração de pedido
solicitada
Pedido enviado
Registrando pedido
Alterando pedido
Pedido para análise
requisitado
Analisando pedido
Pedido não pode ser
atendido no momento
Colocando pedido
em pendência
Pedido para
aprovação
Cancelamento de
pedido solicitado
Cancelando pedido
Pedido será cancelado
Pedido cancelado
Aprovando pedido
Pedido será atendido
Pedido já pode
ser atendido
Pedido
atendido
Atendendo pedido
Estados Aninhados
• Alguns diagramas requerem estados
internos a outros estados
• Exemplo: Máquina de uma fábrica
Classe Máquina
atributo statusDeOperação // estado de operação atual
atributo statusDeManutenção // estado de manutenção
Notações do diagrama de estado
UML
Notação definidas por Harel (Statecharts)
Nome-do-estado
Entrar: ação de entrada
fazer: atividade-A
no evento 1: ação-1
...
Sair: saída-da-ação
Estado inicial
Estado final
Assinatura-de-evento[condição de guarda]/
expressão-de-ação ^ cláusula-de-envio
Estados aninhados
Subestado 1
Subestado 2
Subestado 3
superestado
Indicador de história
Interrompe
A
B
A1
Retorna
H
A2
Obs: O indicador de história pode ser H*,
que indica história recursiva.
Subestado concorrente
Itens
selecionados
selecionando
itens de carga
montando carga
Romaneio emitido
Emitindo
romaneio
Preparando despacho de mercadoria
Carga
montada
Subestado seqüêncial
Fechamento de negócio
Crédito
OK
Analisando itens
Analisando crédito
de compra
do associado
Itens analisados
Negócio
fechado
Negociando
condição de compra
Transição complexa
A1
B1
A4
B2
Exemplo -Diagrama de Estado para o
objeto MáquinaAgrícola
Exemplo - Diagrama de Estado para o
objeto Máquina
Exemplo -Diagrama de Estado Aninhado
Exemplo - Símbolo de História
(Máquina de lavar)
Exemplo - Estados Concorrentes e
Sincronização
Exemplo - Diagrama de estados para
objeto OfertaCurso
Inicialização
Do/ Inicialize dados oferta
de curso
Adicinar estudante/faça cont =0
^TarefaCurso.create
Aberta
Entrada/ Registrar estudante
saída/ ^TarefaCurso.Adicione_
Estudante(estudante)
Fechada
Do/ Finalize curso
cancelar
cancelar
Cancelado
TarefaCurso.remove
Adicionar estudante[cont < 10]
Considerações finais
• Os diagramas de estado são usados para modelar o
comportamento interno de um objeto, mostrando
os seus estados.
• São usados apenas para modelar o comportamento
de classes com comportamento dinâmico
“significativo”
• Os diagramas de interação podem ser estudados
para determinar os objetos dinâmicos do sistema
(aqueles que recebem e enviam muitas
mensagens)
Download

Diagrama de Colaboração e Diagramas de Estado