Business Informatics Group
Institute of Software Technology and Interactive Systems Vienna University of Technology
Favoritenstraße 9-11/188-3, 1040 Vienna, Austria
phone: +43 (1) 58801-18804 (secretary), fax: +43 (1) 58801-18896 office@big.tuwien.ac.at, www.big.tuwien.ac.at
Modelagem Orientada a Objetos
Diagrama de Estados
Literature
UML @ Classroom:
An Introduction to Object-Oriented Modeling
Martina Seidl, Marion Scholz, Christian Huemer and Gerti Kappel
Springer Publishing, 2015
ISBN 3319127411
§ The lecture is based on the following book:
§ Use Case Diagram
§ Structure Modeling
§ State Machine Diagram
§ Sequence Diagram
© BIG / TU Wien
Conteúdo
§ Introdução § Estados § Transições
§ Tipos de eventos § Tipos de estados
§ Pontos de Entrada e Saída
Introdução
§ Cada objeto passa por um número infinito de diferentes estados durante sua vida
§ Diagrama de estados é usado para:
§ Modelar os estados possíveis de um sistema ou de um objeto
§ Modelar como transições de estados ocorrem como uma consequência dos eventos
§ Mostrar qual comportamento o sistema ou o objeto exibe em cada estado
§ Exemplo: descrição de alto-nível do comportamento de uma sala de
© BIG / TU Wien
Exemplo: Sala de Aula com Detalhes
class LectureHall {
private boolean free;
public void occupy() { free=false;
}
public void release() { free=true;
} }
© BIG / TU Wien
Estado
§ Estados = nós do diagrama de estados
§ Quando um estado está ativo
§ O objeto está naquele estado
§ Todas atividades internas especificadas neste estado podem ser executadas
§ Uma atividade pode consistir de múltiplas ações
§ entry / Activity(...)
§ Executada quando o objeto entra no estado
§ exit / Activity(...)
§ Executada quando o objeto sai do estado
§ do / Activity(...)
§ Executada enquanto o objeto permanece no estado
Transição
§ Mudança de um estado para outro
Estado fonte Transição Estado alvo
Transição – Sintaxe
§ Evento (trigger)
§ Estímulo exógeno
§ Pode disparar uma transição de estado § Guarda (condição)
§ Expressão Booleana
§ Se o evento ocorre, a guarda é verificada § Se a guarda é verdadeira
§ Todas atividades no estado atual são terminadas
§ Qualquer atividade de saída relevante é executada
§ A transição ocorre
§ Se a guarda é falsa
§ Nenhuma transição ocorre e o evento é descartado
§ Atividade (efeito)
Transição – Tipos (1/2)
Transição interna Transição externa
§ Se event1 ocorre
§ Obteto permanece em
state1
§ Activity3 é executada
§ Se event1 ocorre
§ Objeto deixa state1 e
Activity2 é executada
§ Activity3 é executada
§ Objeto entra state1 e
© BIG / TU Wien
Transição – Tipos (2/2)
§ Quando acontecem as seguintes transições?
Se e1 ocorre, A1 é abortada e o objeto muda para S2
Se e1 ocorre e g1 avalia para verdadeiro, A1 é abortada e o objeto muda para S2
Assim que a execução de A1 é terminada, um evento de término é gerado que inicia a
transição para S2
Assim que a execução de A1 é terminada, um evento de término é gerado; se g1 avalia para verdadeiro, a transição ocorre; Se não, esta transição nunca pode ocorrer
Transição – Sequência de execuções de atividades
§ Supondo que S1 está ativo … qual é o valor de x após e ocorrer?
S1 se torna ativo, x recebe o valor 4
Sai de S1, x recebe o valor 5
e ocorre, a guarda é verificada e avalia para verdadeiro
A transição ocorre, x recebe o valor 10
© BIG / TU Wien
Exemplo: Status de registro de uma prova
Eventos – Tipos (1/2)
§ Evento de sinal
Recepção de sinal
§ Ex., rightmousedown, sendSMS(message)
§ Evento de chamada
Chamada de operação
§ Ex., occupy(user,lectureHall), register(exam)
§ Evento de tempo
Transição de estados baseada em tempo
§ Relativo: baseado no tempo da ocorrência do evento
§ Ex., after(5 seconds)
§ Absoluto
© BIG / TU Wien
Eventos – Tipos (2/2)
§ Qualquer evento de recepção
Ocorre um evento que não está associado a alguma outra transição a partir do estado ativo
§ Palavra-chave all
§ Evento de término
Gerado automaticamente quando tudo a ser feito no estado corrente é finalizado
§ Evento de mudança
Checa permanentemente se uma condição se torna verdadeira
§ Ex., when(x > y), after(90min)
Evento de Mudança vs. Guarda
Verificado
permanentemente
© BIG / TU Wien
Estado Inicial
§ “Começo” de um diagrama de estados
§ Pseudoestado
§ Transiente, ou seja, o sistema não pode permanecer naquele estado
§ Mais uma estrutura de controle, do que um estado real
§ Sem arestas de entrada
§ Se arestas de saída >1
§ Guardas precisam ser mutuamente exclusivas e cobrir todos casos possíveis para garantir que exatamente um estado alvo é alcançado
§ Se o estado inicial se torna ativo, o objeto imediatamente muda para o próximo estado
§ Nenhum evento é permitido nas arestas de saída (exceção: new())
Estado Final e Nó de Término
Estado Final
§ Estado real
§ Sinaliza o fim da sequência de estados
§ Objeto pode permanecer no estado final para sempre
Nó de Término
§ Pseudoestado
§ Termina o diagrama de estados
© BIG / TU Wien
Nó de decisã
o
§ Pseudoestado
§ Utilizado para modelar transições alternativas
equivalente?
=
≠
equivalente?
© BIG / TU Wien
Nós de Paralelização e Sin
cronização
Nó de Paralelização § Pseudoestado
§ Divide o fluxo de controle em múltiplos fluxos concorrentes
§ 1 aresta de entrada
§ >1 arestas de saída
Nó de Sincronização § Pseudoestado
§ Mescla múltiplos fluxos concorrentes
§ >1 arestas de entrada
§ 1 aresta de saída
Estado Composto
§ Sinônimos: estado complexo, estado aninhado
§ Contém outros estados – “subestados“
§ Somente um dos seus subestados está ativo em algum ponto do tempo § Nível arbitrário de aninhamento de subestados
Estado composto
© BIG / TU Wien
Entrando em um Estado Composto (1/2)
§ Transição para a fronteira
§ Nó inicial do estado composto é ativado
Evento Estado Atividades Executadas
„Começo“ S3
e2 S1/S1.1 a0-a2-a3-a4
Entrando em um Estado Composto (2/2)
§ Transição para um subestado § Subestado é ativado
Evento Estado Atividade Executadas
„Começo“ S3
© BIG / TU Wien
Saindo de um Esatado Composto (1/3)
§ Transição de um subestado Evento Estado Atividades
Executadas
„Começo“ S1/S1.1 a3-a4
e3 S2 a6-a5-a2-a1
Evento Estado Atividades Executadas
„Começo“ S1/S1.1 a3-a4
e5 S2 a6-a5-a3-a1
Saindo de um Estado Composto (2/3)
§ Transição de um estado composto
Independente de qual
© BIG / TU Wien
Evento Estado Atividades
Executadas
„Começo“ S1/S1.1 a3-a4
e4 S1/S1.2 a6-a7
e4 S2 a8-a5-a1
Saindo de um Estado Composto (3/3)
§ Transição de término a partir do estado composto
Estado Ortogonal
§ Estado composto é dividido em duas ou mais regiões separadas por uma linha tracejada
§ Um estado de cada região está sempre ativa em algum ponto do tempo, ou seja, existem subestados concorrentes
§ Entry: transição para a fronteira do estado ortogonal ativa os estados inciais de todas regiões
§ Exit: estado final precisa ser alcançado em todas regiões para disparar o evento de término
© BIG / TU Wien
Estado de submáquina (SMS)
§ Reutilizar partes do diagrama de estados em outros diagramas de estados
§ Notação: state:submachineState
§ Assim que o estado de submáquina é ativado, o comportamente da submáquina é executada
§ Corresponde à chamada de uma subrotina em linguagens de programação
29 Símbolo de
Estado Histórico
§ Lembra qual subestado de um estado composto foi o último estado ativo
§ Ativa o subestado “antigo” e todas atividades de entrada são
executadas sequencialmente a partir do exterior para o interior do estado composto
§ Exatamente uma aresta de saída do estado histórico aponta para um subestado o qual é usado se
§ o estado composto nunca esteve ativo antes
§ o estado composto foi abandonado através do estado final
§ Estado histórico “shallow” restaura o estado que está no mesmo nível do estado composto
© BIG / TU Wien
Exemplo: Estado Histórico (1/4)
Evento Estado
„Começo“ S5
e1 S4/S1/S1.1
e2 S1.2
e10 S5
e9 (H→) S1/S1.1
Exemplo: Estado Histórico (2/4)
Evento Estado
„Começo“ S5
e1 S4/S1/S1.1
e2 S1.2
e10 S5
© BIG / TU Wien
Exemplo: Estado Histórico (3/4)
Evento Estado
„Começo“ S5
e9 (H→) S1/S1.1
Exemplo: Estado Histórico (4/4)
Evento Estado
„Começo“ S5
© BIG / TU Wien
Pontos de Entrada e Saída
§ Mecanismo de encapsulamento
§ Um estado composto deve ser entrado ou abandonado por um estado diferente dos estados iniciais e finais
§ A transição externa não precisa conhecer a estrutura do estado composto
External view
© BIG / TU Wien
Elementos de Notação (1/2)
Name Notation Description
Estado
Descrição de um “intervalo de tempo” no qual um objeto se encontra durante seu “ciclo de vida”. Dentro de um
estado, atividades podem ser executadas pelo objeto.
Transição Transição de estado estado fonte e a partir de um
S para um estado alvo T
Estado Inicial Começo do diagrama de estados
Estado Final Fim do diagrama de estados
Nó de Término Fim do diagrama de estados e objeto
deixa de existir
Elementos de Notação (2/2)
Nome Sintaxe Descrição
Nó de decisão Nó a partir do qual múltiplas transições
alternativas podem ter origem
Nó de paralelização Divisão de uma transição em múltiplas
transições paralelas
Nó de sincronização Mesclagem de múltiplas transições
paralelas em uma única transição
Estado histórico shallow / deep
“Endereço de retorno” para um