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.
ExemploClasse 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
ExemploClasse 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
Alterando pedidoCancelando pedido
Atendendo pedido
Analisando pedido Aprovando pedido
Colocando pedidoem pendência
Registrando pedido
Pedido enviado Alteração de pedidosolicitada
Cancelamento depedido solicitado
Pedido para análise requisitado Pedido será cancelado Pedido cancelado
Pedido paraaprovação
Pedido será atendidoPedido já pode ser atendido
Pedidoatendido
Pedido não pode seratendido no momento
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)
Entrar: ação de entradafazer: atividade-Ano evento 1: ação-1...Sair: saída-da-ação
Nome-do-estado 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
B A
A2
A1
H
Interrompe
Retorna
Obs: O indicador de história pode ser H*, que indica história recursiva.
Subestado concorrente
selecionando itens de carga
montando carga
Emitindo romaneio
Romaneio emitido
Cargamontada
Itensselecionados
Preparando despacho de mercadoria
Subestado seqüêncial
Analisando créditodo associado
Analisando itensde compra
Negociando condição de compra
Crédito OK
Fechamento de negócio
Itens analisadosNegóciofechado
Transição complexa
A1 A4
B2 B1
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
Do/ Finalize cursoFechada
Entrada/ Registrar estudantesaída/ ^TarefaCurso.Adicione_ Estudante(estudante)
Aberta
Do/ Inicialize dados oferta de curso
Inicialização
Cancelado
Adicinar estudante/faça cont =0 ^TarefaCurso.create
[cont = 10]
cancelar
cancelar
Adicionar estudante[cont < 10]TarefaCurso.remove
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)