Modelagem Orientada a Objetos
Modelagem Dinâmica
Diagrama de Estados
Objetivos de um
diagrama de estados

Representar o comportamento dinâmico
de classes individuais

Representar o comportamento dinâmico
de colaboração entre classes
Elementos de um
diagrama de estados






os estados possíveis para os objetos de uma certa classe
as transições de estado
os eventos que causam transições de estados
as ações decorrentes de
– uma transição de estado
– entrada em um estado
– saída de um estado
as ações realizadas por objetos enquanto estão em um certo
estado
– durante todo o tempo em que o objeto está no estado
– decorrente de algum evento
as condições para ocorrer uma transição de estado ou para a
execução de uma ação.
Diagramas de Estados





Relaciona eventos e estados
Um objeto muda de estado dependendo do evento
e do estado atual.
Transição: modificação de estado causada por um
evento (mesmo quando estado final e inicial
coincidem).
Um evento pode ser irrelevante para um objeto em
um certo estado.
Exemplo: linha telefônica
Diagramas de Estados
Exemplo : Linha telefônica
no-gancho
no-gancho
Inativa
fora-do-gancho
Sinal de discar
dígito( n )
Sinal de
ocupado
número
ocupado
Sinal de ocupado rápido
tronco
ocupado
queda-da-linha
dígito( n )
Discando
número válido
Quedada-linha
número Mensagem
gravada
invalido
Ligando
encaminhado
Tocando
telefone chamado atende
Interligando
telefone chamado desliga
Desligando
Mensagem
terminada
Diagramas de Estados
Exemplo : jogo de xadrez
Diagrama de estados de uma só passagem
para um jogo de xadrez
Início
Vez das
brancas
pretas
jogam
brancas
jogam
cheque-mate
Pretas
vencem
empate forçado
Empate
empate forçado
Vez das
pretas
cheque-mate
Brancas
vencem
Tipos de diagramas de estados



Diagrama de laço contínuo: representa um ciclo
de vida; sem estado inicial ou final. Exemplo: linha
telefônica.
Diagrama de uma só passagem: representa
objetos com vida finita; possuem um estado inicial
(criação do objeto) e um estado final (destruição
do objeto).
Exemplo: jogo de xadrez
Condições



Uma condição é uma função booleana de
valores, válida dentro de um intervalo de
tempo.
Condições funcionam como guardas nas
transições: uma transição só dispara quando
ocorre o evento e a condição de guarda for
verdadeira.
Exemplo: Veículo em um cruzamento.
Diagramas de Estados
Exemplo: Veículo em um cruzamento
Diagrama de estados com transições guardadas
Norte / Sul
podem ir em frente
tempo decorrido [ carros
nas vias esquerdas N / S ]
tempo
decorrido
tempo
decorrido
Leste / Oeste
podem dobrar
à esquerda
Norte / Sul
podem dobrar
à esquerda
tempo decorrido [ carros
nas vias esquerdas L / O ]
Leste / Oeste
podem ir em frente
Controle de Operações


Atividades e ações podem ser
vinculadas a estados e eventos a fim de
se especificar o que faz o objeto
quando está em um determinado
estado e o que faz em resposta a
estímulos externos.
Definem o comportamento do objeto!
Atividade





Está sempre vinculada a um estado
Consome tempo para se completar
É executada continuamente durante o tempo em
que o objeto está num certo estado
Notação:
faça: atividade
Exemplo: Um vendedor logo após ter recebido
dinheiro para pagamento do item vendido deve
calcular o troco.
faça: calcular troco
Ação




Está normalmente vinculada a um evento, mas
também pode estar vinculada a um estado
(ações de entrada, saída e internas)
É executada "instantaneamente"
Notação:
evento / ação
Exemplo: Exibir um menu quando o botão direito
do mouse é pressionado.
botão direito pressionado / exibir menu
Controle de Operações
Ações para um menu instantâneo
botão direito pressionado /
exibir menu instantâneo
Menu
visível
Inativo
botão direito liberado /
apagar menu instantâneo
cursor movimentado /
iluminar item do menu
Diagrama de Estados com
Operações
Notação
Estado 1
faça : atividade 1
Evento 1 ( atributos )
[ condição 1 ] / ação 1
Estado 2
...
Exercício:
reescrever o diagrama de uma chamada telefônica
utilizando a notação acima
Diagramas de Estados Nivelados




Permitem refinamentos sucessivos do modelo
dinâmico
Permitem uma descrição estruturada do sistema
Pode-se expandir:
– um evento e sua correspondente ação
– uma atividade realizada em um certo estado
Exemplo: Máquina de vender
Diagramas de Estados Nivelados
Exemplo : máquina de vender
moedas introduzidas
( quantia ) verificar saldo
Inativa
cancelar / devolver moedas
Recolhendo dinheiro
moedas introduzidas ( quantia ) /
acrescentar ao saldo
[ item vazio ]
Selecionar ( item )
[ troco < 0 ]
faça : testar item e calcular troco
[ troco = 0 ]
faça : entregar
item
[ troco < 0 ]
faça : preparar
troco
Diagramas de Estados Nivelados
Exemplo : máquina de vender
Atividade entregar item da máquina de vender
braço pronto
Faça : mover
braço para a
fileira correta
Faça : mover
braço para a
coluna correta
Transição selecionar
item da máquina de vender
faça : preparar
item
braço pronto
dígito( n )
clear
empurrado
faça : empurrar
item para fora
da prateleira
dígito( n )
Selecionar( item )
faça :
acrescentar
dígito
enter
Generalização de Estados




Os estados de um objeto podem ser organizados de forma
hierárquica, em super-estados e sub-estados.
Um sub-estado é um refinamento de um super-estado, i.e.,
um sub-estado é um dos possíveis estados do objeto
dentro daquele super-estado.
Um sub-estado herda as transições do super-estado;
transições que se aplicam ao super-estado também se
aplicam ao sub-estado.
Exemplos: linha telefônica, transmissão automática de um
automóvel
Generalização de Estados
Exemplo : transmissão de um
carro
apertar R
Neutro
Ré
apertar N
apertar N
apertar F
Para a frente
sobe
pára
Primeira
sobe
Segunda
reduz
Terceira
reduz
Generalização de Eventos





Os eventos que ocorrem em um sistema podem ser
organizados de forma hierárquica, em super-eventos e
sub-eventos.
Um sub-evento herda atributos do super-evento.
Onde um evento é descrito qualquer sub-evento seu é
implicitamente descrito.
A generalização de eventos facilita a abstração e permite
concisão na representação de diagramas.
Exemplo: Entrada do usuário.
Generalização de Eventos
Exemplo : eventos de teclado
evento
tempo
Entrada do usuário
dispositivo
Botão do mouse
localização
Botão do
mouse
apertado
Botão do
mouse
liberado
Hierarquia parcial de
eventos para eventos
de teclado
caracter do teclado
caracter
controle
gráfico
espaço
alfanumérico
pontuação
Concorrência de Agregação




O estado de um objeto composto (um agregado) é determinado
pelos estados dos objetos que o compõem.
Exemplo: O estado de um carro é determinado pelo estado da
ignição, da transmissão, do freio, do acelerador, do motor, ...
Os componentes de um agregado normalmente interagem entre si:
a mudança de estado de um componente pode disparar uma
transição em outro componente.
A interação entre diagramas de estados de componentes é
representada através de eventos compartilhados e/ou condições de
guarda.
Concorrência de Agregação
Carro
Ignição
Transmissão
Freio
Girar chave para dar partida
[ transmissão em Neutro ]
Ignição
Desligada
Partida
Acelerador
liberar
chave
Ligada
desligar a chave
Acelerador
Desligado
apertar
acelerador
liberar acelerador
Freio
Ligado
Desligado
apertar
freio
liberar freio
Partido
Concorrência Interna de Objetos




O diagrama de estados de um objeto pode ser
particionado de acordo com atributos e ligações
em sub-diagramas.
O estado do objeto compreende um estado de
cada sub-diagrama.
Um mesmo evento pode causar transições em
mais de um sub-diagrama.
Exemplo: Jogo de bridge rubber.
Concorrência Interna de Objetos
Jogo de bridge com estados concorrentes
Jogando rubber
Vulnerabilidade N - S
Não vulnerável
jogo N - S
Vulnerável
jogo N - S
N-S vence rubber
Vulnerabilidade L - O
Não vulnerável
jogo L - O
Vulnerável
jogo L - O
L - O vence rubber
Transição Automática



Disparada quando a atividade vinculada a
um estado termina
O "evento" que causa a transição é o
término da atividade
Exemplo: Máquina de vender no estado
correspondente a atividade testar item e
calcular troco pode disparar uma de
quatro transições automáticas.
Ações de Entrada e de Saída



Ações vinculadas ao ato de entrar ou
sair de um estado
Não adicionam poder de expressão,
mas permitem uma representação mais
concisa
Exemplo: Controle de uma porta de
garagem (p. 135)
Envio de Eventos



Uma ação pode ser especificada como enviar um
certo evento para outro objeto.
Notação:
enviar E (atributos)
(palavra enviar pode ser omitida)
Exemplo: Uma linha telefônica envia o evento
ligar(número-de-telefone) para o comutador quando
um número completo é discado.
número completo / ligar(número-de-telefone)
Sincronização de Eventos
Concorrentes



Um objeto pode executar várias
atividades de forma concorrente
(paralela).
As atividades não são necessariamente
sincronizadas, mas todas devem
terminar para que ocorra transição de
estado.
Exemplo: Caixa automática.
Sincronização de Eventos
Concorrentes
Emitindo
Faça : entregar dinheiro
dinheiro
recolhido
Pronta para
reinicializar
Preparação
Faça : ejetar cartão
cartão
recolhido
Download

estados