Beruflich Dokumente
Kultur Dokumente
(Statechart Diagrams)
versão 1.1
Novembro 2001
Introdução
tempo
UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 3
Notação básica
Estado 1
do / actividade evento(parâmetros) [condição ] / acção
entry / acção Estado 2
exit / acção
evento / acção transição
Eventos
n Um evento é uma ocorrência significativa que tem uma
localização no tempo (instante de tempo do evento) e no espaço
n No contexto de uma máquina de estados, um evento pode ter
como resposta uma transição (mudança de estado) e/ou uma
acção
n Os eventos são instantâneos
• O que interessa é que se lhe possa atribuir um instante de tempo de
ocorrência
«signal»
Event
time
«signal»
User Input Event
device
«signal» «signal»
Mouse Event Key Pressed
position character
Eventos temporais
n Evento de tempo relativo:
• Representa a passagem de um certo tempo desde um certo instante
• Notação: after(período-de-tempo)
• Por omissão, tempo conta desde a entrada no estado de origem da
transição a que está associado o evento
• Também se usa a palavra chave timeout quando não se quer precisar
o período de tempo
• Exemplo: after(5 segundos)
Transições
n Uma transição é uma relação entre dois estados indicando que
um objecto no 1º estado realizará uma certa acção (opcional) e
passará ao 2º estado quando um evento especificado ocorrer se
uma condição especificada (opcional) for satisfeita
n É associada a estados
• Inicia-se ao entrar no estado
• Termina por si só ou é interrompida na saída do estado (causada por
um evento)
Acções
n Uma acção é uma computação atómica executável que resulta numa
mudança de estado ou no retorno de um valor
• A mudança de estado pode ser noutro objecto
• Não tem duração (pelo menos no modelo) e não pode ser interrompida
• Ocorre em resposta a um evento
• Exemplo (num telefone): poisa auscultador / pára sinal de marcar
• Acções são associadas a transições (mais comum) ou estados
paralisado
Vez das Vitória das brancas
pretas xeque-mate
Estado inicial
(criação do objecto e início Estado final
da máquina de estados)
(fim da máquina de estados
e destruição do objecto)
Exemplo: Semáforo
N N
O E O E
after( 30 seg )[ tem carros
Norte/Sul pode na pista esquerda N/S ] Norte/Sul pode
S S
seguir em frente virar à esquerda
S S
Aberto
Fechado acciona
A fechar
Desligado
Subestados sequenciais
estado composto
(ou super-estado
Falecimento
ou contorno)
Casamento do cônjuge Divórcio
Equivale a várias
transições, com origem
Casado Separação judicial Separado em cada um dos
judicialmente
subestados!
Evita explosão
combinatória de
Falecimento
transições!
Frente
subida subida
Primeira Segunda Terceira
redução
paragem redução
Subestados concorrentes
Preparação do despertador X
E
Selecção do programa
comuta(banda) sintoniza(frequência) Subestados
concorrentes de
banda programa “Preparação do
Selecção escolhida Selecção do escolhido despertador”
da Banda Programa
Alarme
ligado
Activa ção do alarme
Emissão (Multibanco)
{
compartimento de variáveis
password: String = “ ”
fails: Integer = 0
entry / set echo invisible
compartimento de actividade
interna { exit / set echo normal
do / echo typing
help / display help
Eventos diferidos
n Uma acção possível em resposta a um evento é “defer”,
que significa guardar o evento até chegar a um estado
capaz de o “consumir”
n É aplicável num par “evento/acção” interno a um estado
n Exemplo (máquina de fax):
Repouso
Diagrama pincipal:
[troco=0] [troco>0]
do/ move o braço do/ move o braço para do/ tira item da
para a fila correcta braço a coluna correcta braço prateleira tirado
pronto pronto
B
A B1 interrupt
C
resume
H
B2
estado histórico
W
p s
A E C
u q
r t
B F D
abstracção
p s
A C
W q
r D
B
Exemplos e exercícios
minutos
alarme
horas tempo off radio alarme
desligar sintonia
dormir
vol
18:35 89.5 FM
- Diagrama principal
Rádio-despertador
Interruptor
radio alarme
Desligado Funcionar Despertador
off do/ radio activo radio
Hora despertar
botão minutos
carregado
Mostra Põe minutos
do/ mostra botão minutos do / incrementa
hora despertar livre minutos despertar
mod 60
botão horas botão horas
carregado livre
Põe horas
do/ incrementa
horas despertar
mod 24
Hora actual
Mostra
do/ mostra
hora actual
botão tempo botão tempo
carregado livre
Despertador
minuto [hora_actual =
hora_despertar] Despertar desligar/desliga Latente
Armado
do/ incrementa
do/ rádio activo
10 minutos minutos mod 60
minuto [hora actual
desligar - hora despertar>60]
/desliga 60 minutos / desliga
Adormecer
dormir do/ rádio activo
aquisição Disponível
mediante
devolução empréstimo
requisição
Emprestada
Estados de um Sócio
inscrição
Activo Inactivo
renovação
desistência
esgotado prazo
devolução / avisa
levantamento requisitante
desistência
Espera
esgotado prazo devolução
levantamento /
avisa requisitante devolução
Requisição Requisição
Anulada Prevê já vários exemplares por publicação e Encerrada
possibilidade de requisição ficar em lista de
espera!
Exercícios
Exercício 2: Auto-rádio
n (ASI 4/2/97) Modele o mecanismo a seguir descrito, através de um
diagrama de estados:
• Um auto-rádio tem um mecanismo anti-roubo baseado num código secreto com 4 dígitos.
• O auto-rádio encaixa numa gaveta que é montada na viatura, e que permite a sua fácil
extracção. Quando se retira o auto-rádio da respectiva gaveta (cortando-lhe assim a
alimentação), este fica num modo de “segurança”, que é também o modo inicial.
• Quando se liga o auto-rádio (alimentação e interruptor), no modo de “segurança”, este
começa por exigir o código secreto, antes de entrar no modo de funcionamento normal.
Para a introdução do código secreto, o auto-rádio dispõe de teclas correspondentes aos
dígitos de “0” a “9” e uma tecla de “Enter”.
• Uma vez em modo de funcionamento normal, o simples desligar do i nterruptor, sem
cortar a alimentação, não provoca a passagem ao modo de “segurança”; isto é, ao voltar
a ligar o interruptor, este não exige a introdução do código secreto.
• No caso de o utilizador introduzir um código errado, dispõe de mais 2 tentativas. Ao fim
de 3 tentativas falhadas (sem nenhuma tentativa bem sucedida pelo meio), o auto-rádio
fica completamente bloqueado, só podendo ser desbloqueado na fábrica, mediante o
mesmo código secreto. O número de tentativas falhadas é memorizado mesmo que se
desligue o auto-rádio (interruptor e/ou alimentação).
Exercício 4 - resolução
outro caracter c / output(c) outro caracter c / output(c)
'"' / output('"')
Normal Dentro de
string
'"' / output('"')
Dentro de Dentro de
comentário // comentário /*
EOF / output('/')
Em todos os outros outro
'*' '*'
estados, EOF caracter c
salta simplesmente
para o fim
Possível fim de
comentário /*