Vous êtes sur la page 1sur 17

Engenharia de Software II

 Diagrama de Estados

Prof. Arley F. Souza


Introdução (1/2)
 O Diagrama de Estados (State Machine diagram) é um tipo
de diagrama comportamental
 O Diagrama de Estados é tipicamente um complemento
para a descrição das classes. Este diagrama mostra os
estados possíveis que os objetos da classe podem se
encontrar e mostra também quais são os eventos do
sistemas que provocam tais mudanças
 Diagramas de Estados não são escritos para todas as
classes de um sistema, mas apenas para aquelas que
possuem um número definido de estados conhecidos e
onde o comportamento dos objetos é afetado e modificado
pelos diferentes estados

2
Fonte: Capítulo 9 do livro Desenvolvendo software com UML 2.0
Introdução (2/2)
 O diagrama de estados permite estudar o comportamento
de vários elementos, tais como, atores e casos de uso,
mas ele é normalmente usado para modelar classes
 Diagramas de estados capturam o ciclo de vida dos
objetos, subsistemas e sistemas
 Eles mostram os estados que um objeto pode possuir e
como os eventos (mensagens recebidas, timer, erros, e
condições sendo satisfeitas) afetam estes estados no
decorrer do tempo

3
Estado do objeto
 Um objeto pode passar por várias situações desde o
momento em que é criado até sua destruição. Ele pode ser
carregado, fazer uma solicitação etc.
 Um estado simplesmente representa
 uma ação executada
 uma condição satisfeita ou
 uma situação estática de espera em que um objeto se
encontra durante sua existência

Observação: o estado de um objeto de uma classe é determinado


pelo valor dos seus atributos 4
Exemplo de diagrama (1/3)
 Considere como exemplo o diagrama de estado de uma
lâmpada elétrica

Apagada e acesa são os estados A mudança de estado ocorre por


que uma lâmpada elétrica pode causa de um evento, que no caso
se encontrar é o acionamento do interruptor

início do objeto final do objeto

O estado do objeto pode se alternar até


que a lâmpada queime, o que irá
conduzir ao estado final do objeto
5
Exemplo de diagrama (2/3)
O estado de um objeto é representado por um retângulo com os cantos
arredondados. Dentro do retângulo colocamos a identificação do
estado, neste exemplo, Apagada e Acesa

A seta representa a transição Note que o objeto só pode


(progressão) de um estado para atingir o estado Acesa se
outro. Junto a seta colocamos a estiver no estado Apagada,
identificação do evento que causa ou seja, um objeto só pode
a transição de estado, neste atingir um estado se estiver
exemplo, interruptor ligado e em outro estado e ocorrer o
interruptor desligado evento que cause a transição
6
Exemplo de diagrama (3/3)
Todo diagrama de estados deve ter
apenas um estado inicial
(representação de início do objeto) e O início do objeto
pode ter zero ou muitos estados representa a instanciação
finais (representação de final do da classe com os valores
objeto) default para os atributos

início do objeto final do objeto

O final do objeto representa a exclusão do objeto. Quando


não existe um estado final, significa que a instância fica
em memória até o término da execução do programa 7
Transição de estado (1/2)
 Uma transição representa uma mudança de estado
 Transições podem ser automáticas ou geradas por
eventos, e elas podem ser formadas por:
 Evento (event): aciona a transição de estado. Pode ser
gerado por um ator externo ao sistema ou por um objeto
do sistema
 Condição (guard): expressão que define se o evento
será ou não aceito. Indica quando a transição de estado
deve ocorrer
 Ação (action): uma ou mais ações separadas por
vírgula que são disparadas quando o evento é aceito

8
Transição de estado (2/2)
evento condição ação

geralmente não se usa


rotular uma transição a
partir do estado inicial

A transição verifica-se quando ocorre um evento e uma determinada


condição de guarda é avaliada como verdadeira. Se a transição não
possuir algum evento associado, ela acontecerá mediante a
execução de uma ou mais ações internas do código do estado:
quando todas essas ações forem executadas, a transição será
disparada iniciando-se então as atividades do próximo estado na
ordem de sequência da máquina de estados
9
Ação (1/2)
 Um estado pode possuir várias ações internas, ou seja,
tarefas que são realizadas em determinado estado do
objeto
 Estas ações podem ser realizadas nos seguintes
momentos
 Entry (On Entry): ação que é executada quando o
objeto entra no estado
 Exit (On Exit): ação que é executada antes que o objeto
saia do estado
 Do (On Action): ação que é executada continuamente
enquanto o objeto se encontra no estado

10
Ação (2/2)

Considere, como exemplo, o estado Acesa de uma lâmpada


fluorescente que para funcionar precise executar as seguintes
ações:
• On entry: aquecer as extremidades (esta ação será executada
somente uma vez)
• On action: corrigir nível de tensão (esta ação será executada
enquanto a lâmpada estiver acesa)
• On exit: desaquecer extremidades (esta ação será executada
somente uma vez)
11
Transição reflexiva
 Existe situações na qual a transição de um estado ocorre
não para um segundo estado, mas para o próprio estado,
ou seja, a transição a transição possui o mesmo estado de
origem e destino. Este tipo de transição é chamada de
transição reflexiva

Considere, como exemplo, que exista um relê para alterar o nível de


tensão. Ao acionar o relê a lâmpada continuaria acesa, ou seja, não
muda de estado, mas ela precisaria ajustar o aquecimento das
extremidades e corrigir a tensão em outro nível

12
Decisão e junção
 O elemento decisão (choice) indica um ponto de
progressão condicional, onde o próximo estado depende
de uma condição
 O elemento junção representa que diferentes estados
podem levar a um estado, mas somente um chegará a
este ponto de junção

Considere como exemplo um objeto Pedido


ao atingir este ponto o
ok determina o estado anterior é Emitindo
próximo estado NF ou Cancelando

decisão junção 13
Fork e join
 A chegada de um estado a um fork (bifurcação) pode
desencadear um ou vários estados concorrentes
 O elemento join representa que vários estados convergem
em apenas um estado

Considere como exemplo um


objeto Pedido O estado arquivando só será
atingido quando ambos os
estados Emitindo NF e Separando
estados produto forem finalizado
concorrentes

fork join 14
Fork e join
 Uma transição pode bifurcar (fork) em dois ou mais fluxos
paralelos, dando origem a várias sequências (threads).
 Não é relevante a ordem da execução das atividades paralelas.
 Uma junção (join) representa a sincronização de um ou
mais fluxos de controle.
 Espera-se que todos os fluxos de entrada cheguem ao ponto de
junção prosseguindo com apenas um fluxo.

15
Exercícios
1) Qual é a utilidade de um diagrama de estados?

2) Para quais classes criamos diagramas de estados?

3) Para quais tipos de entidades UML (classes, atores etc.) criamos


diagramas de estados?

4) O que representa um estado no diagrama de estados?

5) O que representa uma transição no diagrama de estados?

6) O que é são event, guard e action em uma transição?

7) O que é "entry", "exit" e "do" na representação de um estado?

8) O que é transição reflexiva?

9) Qual é a diferença entre fork e decision no diagrama de estados?


16
Exercícios
10) Fazer o diagrama de estados de um forno de microondas.
Considere os seguintes estados:
• Ocioso e com a porta aberta
• Ocioso e com a porta fechada
• Iniciando o preparo, quando se configura o cronômetro,
acende-se a luz, inicia o giro do prato e liga-se o tubo
• Preparo interrompido, quando desliga-se o tubo e zera-se o
cronômetro
• Preparo expandido, quando o usuário adiciona minutos a mais
• Prepara finalizado, quando desliga-se o tubo, luz, giro do prato
e aciona o sinal sonoro

17