Você está na página 1de 30

UML – Diagramas de Estados

(Statechart Diagrams)

versão 1.1

João Pascoal Faria

Novembro 2001

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 1

Introdução

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 2


Objectivo
n Um diagrama de estados especifica uma máquina de estados,
com estados (duradoiros e em número finito) e transições entre
estados (instantâneas) causadas por eventos (instantâneos)

n Pode também especificar as acções (instantâneas) e actividades


(duradoiras) realizadas em resposta a eventos ou durante a
permanência em estados, respectivamente

n Usado normalmente para modelar o ciclo de vida dos objectos de


uma classe (objecto visto como máquina de estados)

n Em geral, serve para modelar a dinâmica de um sistema ou


objecto cujo estado evolui por saltos (transições instantâneas) em
resposta a eventos, com um número finito de estados
estado evento
(de sistema,
objecto, etc.)

tempo
UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 3

Comportamento e ciclo de vida de


objectos ou sistemas reactivos (1)
n Um diagrama de estados é útil para modelar o comportamento e
o ciclo de vida de um objecto ou sistema reactivo

n Objecto/sistema reactivo: funciona por resposta (reacção) a


estímulos (eventos)
• Comportamento reactivo ≠ comportamento invocável (operações)
• Sistema reactivo ≠ sistema transformacional (tipo filtro Unix)
• Sistemas de interacção com o utilizador (com formulários, botões,
etc.) são tipicamente reactivos
• Sistemas de tempo real (ex: semáforo) podem ser vistos como
sistemas reactivos que reagem a eventos temporais (timeout, ...)
• Sistemas reactivos geralmente têm memória - um estado interno que
acumula o efeito dos estímulos recebidos no passado e afecta a
resposta a estímulos futuros

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 4


Comportamento e ciclo de vida de
objectos ou sistemas reactivos (2)
n Ciclo de vida de um objecto/sistema: as sequências de estados
por que pode passar durante a sua vida em resposta a eventos,
em conjunto com as respostas a esses eventos, ou seja:
• os estados possíveis (exemplo - estado civil: solteiro, casado, ...)
• as transições de estado possíveis (exemplo: pode passar de solteiro
para casado, mas não o contrário)
• os eventos que causam essas transições (exemplo: o casamento
implica a passagem ao estado de casado)
• as acções do objecto em resposta a esses eventos (ex: despedida de
solteiro)

n Objecto como máquina de estados


n Objectos da mesma classe têm o mesmo ciclo de vida, pelo que
basta construir um diagrama de estados por classe relevante
• Interacções entre objectos aparecem pouco explícitas, como trocas de
mensagens

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 5

Relação com outros diagramas


dinâmicos
n Diagramas de estados focam o fluxo (passagem) de controlo de
estado para estado num objecto, mostrando todas as sequências
possíveis de funcionamento de um único objecto
• Bom para especificação
• Comunicação entre objectos do mesmo sistema aparece de forma pouco
explícita, através de eventos gerados (como acções) na máquina de estados
de um objecto que são testados (como eventos) na máquina de estados
doutro objecto

n Diagramas de interacção (sequência ou colaboração) focam o


fluxo (passagem) de controlo de objecto para objecto numa
sequência particular de funcionamento de um sistema
• Comunicação entre objectos aparece de forma explícita
• Bom para ilustração mas mau para especificação

n Diagramas de actividades focam o fluxo de controlo de actividade


para actividade numa actividade de mais alto nível (operação,
caso de utilização, etc.) de um objecto ou sistema

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 6


Notação e conceitos básicos

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 7

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

• Sequência de mudança de estado:


- Ocorre o evento associado à transição e a condição de guarda é verdadeira
- É interrompida a actividade associada ao estado de origem, se não tinha já terminado
- É executada a acção á saída do estado de origem
- É executada a acção associada à transição
- É executada a acção à entrada do estado de destino
- É iniciada a actividade associada ao estado de destino

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 8


Estados
n Um estado é uma condição ou situação na vida de um objecto,
durante a qual o objecto satisfaz alguma condição, realiza
alguma actividade ou espera por algum evento
• Exemplo (relativamente ao estado civil de uma pessoa): solteira, casada, ...

n Escolha dos estados e relação com atributos e ligações:


• Foi dito anteriormente que o estado de um objecto é dado pelos valores de
atributos e ligações com outros objectos que mantém num dado momento
• Essa definição conduz, em geral, a demasiados estados
• Ora, no diagrama de estados, interessa apenas distinguir estados que
apresentam diferentes respostas a eventos
• Assim, os estados que interessa considerar aqui correspondem, em geral, a
conjuntos de valores de atributos e ligações (possivelmente expr essos por
condições), e ignoram-se atributos e ligações irrelevantes para o
comportamento do objecto

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 9

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

n Os eventos podem ser de vários tipos:


• Sinais - eventos simbólicos sinalizados explicitamente
• Chamadas - invocação de operações (porque não também o retorno?)
• Eventos temporais - passagem de tempo ou ocorrência de um data-hora
• Eventos de mudança - uma condição tornar-se verdadeira

n Os eventos podem ter parâmetros [ exemplo: dígito-marcado(5) ]

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 10


Sinais (eventos simbólicos)
n Sinais são modelados por classes com estereótipo «signal»
• Parâmetros (argumentos) do sinal são atributos da classe
• Hierarquias de sinais são modeladas como hierarquias de generalização

n Envio de sinal representado por acção send


• Receptor pode ser conhecido do emissor ou não (graças a mecanismo
publish/subscribe)

n Sinais em linguagens de programação


• Sinais assíncronos, enviados imediatamente (kill, suspend, ... ) ou de forma
diferida (eventos em COM+) para processos concorrentes, usando primitivas
do sistema operativo
• Sinais síncronos, em que a geração do evento provoca a chamada de rotinas
que tratam o evento (event handlers) no mesmo processo, usando primitivas
das linguagens de programação (eventos em C# e Visual Basic.NET)
• Excepções, representadas por objectos lançados com "throw" e apanhados
com "catch", em que o lançamento da excepção provoca o retorno automático
de vários níveis de chamadas e o salto para uma rotina de tratamento de
excepções no mesmo processo

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 11

Exemplo de hierarquia de sinais

«signal»
Event
time

«signal»
User Input Event
device

«signal» «signal»
Mouse Event Key Pressed
position character

«signal» «signal» «signal» «signal»


Mouse Down Mouse Up Control Key Pressed Printable Key Pressed

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 12


Chamadas
n Um chamada representa a invocação de uma operação
• Para quem faz a chamada (ponto de vista do actuador), trata-se de
uma acção
• Para quem testa se a operação foi chamada (ponto de vista do
observador), trata-se de um evento

n Um chamada é geralmente síncrona


• Quando uma operação de um objecto invoca uma operação noutro
objecto, o controlo passa para o 2º objecto

n Nome do evento tem a sintaxe da invocação da operação


• Exemplo: insert(record)
• Diferença entre evento e acção por contexto

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 13

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)

n Evento de tempo abosluto:


• Representa a chegada a um certo instante de tempo (data e/ou hora)
• Notação: when(instante-de-tempo)
• Exemplo: when(11:59PM)

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 14


Eventos de mudança
n Um evento de mudança (change event) é um evento que
representa o facto de uma condição se tornar verdadeira
n Notação: when(expressão booleana)
n A expressão booleana pode ser usada para marcar um
tempo absoluto (ver atrás) ou para o teste contínua de uma
expressão
n Exemplo: when(altitude < 1000)

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 15

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 Duas transições a sair do mesmo estado devem ter eventos


diferentes ou condições mutuamente exclusivas, para que o
diagrama de estados seja determinístico

n Se, num dado estado, ocorrer um evento que não corresponde a


nenhuma transição, nenhuma transição é disparada e o evento é
ignorado

n Transição automática: transição sem evento


• Tem como evento implícito o fim da actividade associada ao estado de origem
• Se tiver uma condição, fica à espera que a condição seja satisfeita

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 16


Actividades
n Uma actividade é uma execução contínua (ongoing
execution) não atómica numa máquina de estados
• Tem duração
• Pode ser interrompida
• Pode ter fim (termina por si só) ou não (só termina se for
interrompida)

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)

n Exemplo (num telefone): do / dá sinal de marcar

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 17

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

n Acção à entrada num estado: entry /acção


• equivale a associar a acção a cada transição que entra no estado

n Acção à saída de um estado: exit/acção


• equivale a associar a acção a cada transição que sai do estado

n Acção em resposta a evento interno a um estado: evento/acção


• difere de auto-transição, porque não são executadas acções à saída e entrada e não é
interrompida a actividade associada ao estado

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 18


Exemplo: Jogo de xadrez
Estado Transição

Vez das xeque-mate Vitória das pretas


brancas
paralisado
Empate
jogada das brancas jogada das pretas

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)

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 19

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

after( 30 seg )[ sem carros


na pista esquerda N/S ]
after( 15 seg ) after( 15 seg )
after( 30 seg )[ sem carros
na pista esquerda E/O ]

Este/Oeste pode Este/Oeste pode


N virar à esquerda seguir em frente N
after( 30 seg )[ tem carros
na pista esquerda E/O ]
O E O E

S S

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 20


Exemplo: Menu popup

cursor deslocado / realça item do menu

botão direito em baixo / mostra menu popup


Inactivo Menu
visível

botão dirteito em cima / apaga menu popup e


lança acção associada ao item seleccionado

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 21

Exemplo: Porta com motor


A abrir

entry/ motor para cima


exit/ motor desligado

acciona porta aberta

Aberto
Fechado acciona

porta fechada acciona

A fechar

entry/ motor para baixo


exit/ motor desligado

Como seria este diagrama com as acções associadas às transições?

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 22


Exemplo: Telefone (fazer chamadas)
no descanso no descanso
Inactivo
levantado

Sinal de marcar tempo máximoTempo máximo


do/toca sinal do/ toca apito
dígito(n) tempo máximo
dígito(n) Mensagem gravada
Discando número do/ passa mensagem
número número válido inválido
Sinal de ocupado ocupado
do/sinal ocupado lento Ligando
do/ busca ligação
ramal
Sinal de interrompido ocupado encaminhada
do/ sinal ocupado rápido Tocando
do/ toca campaínha
resposta/ liga linha
no descanso/ desliga linha mensagem dada
Ligado
chamado desliga/desliga linha

Desligado

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 23

Subestados sequenciais

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 24


Exemplo: Estado civil
subestadossequenciais
Nascimento

Solteiro Viúvo Divorciado

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!

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 25

Exemplo: Transmissão automática


carrega R
Transição dirigida a Ponto Marcha
(subestado inicial de) morto atrás
estado composto
carrega N
Estado composto
carrega F carrega N

Frente
subida subida
Primeira Segunda Terceira

redução
paragem redução

Transição com origem em super -


estado e dirigida a sub-estado
Subestados sequenciais de “Frente”

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 26


Subestados sequenciais
n Vários estados de um diagrama (e transições entre esses estados) podem
ser agrupados num único estado composto

n Os primeiros estados passam a chamar-se subestados sequenciais


• Subestados – por estarem encaixados dentro doutro
• Sequenciais – por não ser possível estar em dois estados simultaneamente

n Estado composto pode ser visto simplesmente como um contorno


n Estados e transições agrupados no estado composto formam um diagrama
de estados encaixado, podendo ter estado inicial e final
n Também se chama a isto composição “ou”
• Estar no estado composto é estar no 1º subestado ou...ou no n-ésimo subestado

n Também se chama a isto generalização de estados


• O estado composto é também chamado um superestado
• Estar num subestado é estar também no respectivo superestado

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 27

Transições com estados compostos


n Podem-se definir transições com origem no estado composto
• Equivale a repetir a mesma transição com origem em cada um dos subestados
(excepto n). Por outras palavras, os subestados herdam a transição.
• Simplifica-se o diagrama porque se desenha 1 transição em vez de n
transições (tantas quantos os subestados), evitando-se a explosão
combinatória de transições!
• A transição pode ser dirigida a um subestado ou a um estado externo

n Podem-se definir transições com destino ao estado composto


• Equivale a definir a mesma transição com destino ao respectivo estado inicial
(ou melhor, ao estado apontado por n), que tem de estar definido

n Vantagem comum: abstracção de detalhes do estado composto


• O estado composto pode até ser detalhado separadamente

n No entanto, também se podem definir transições que atravessam


o estado composto, com origem ou destino em subestados
• O estado inicial é apenas um estado inicial por omissão

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 28


Propriedades de estados compostos
n Um estado composto pode ter todas as propriedades dos estados simples,
mas normalmente só tem o nome, que mesmo assim é opcional

n Um estado composto pode ter acções à entrada e à saída


• Ao entrar no estado composto, executa primeira as acções à entrada no estado
composto, e depois as acções à entrada no subestado de destino
• Ao sair do estado composto, executa primeira as acções à saída do subestado de origem,
e depois as acções à saída do estado composto

n A actividade do estado composto é detalhada pelos subestados e


transições entre eles, isto é, pelo diagrama de estados encaixado
n Em alternativa, pode-se dar um nome à actividade do estado composto
(com “do/...”) , e detalha-se essa actividade separadamente (com o
mesmo diagrama de estados encaixado)
• As acções à entrada e à saída são representadas no 1º diagrama
• Uma actividade pode ser detalhada por um diagrama de estados ou actividade

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 29

Subestados concorrentes

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 30


Subestados concorrentes
n Um estado (estado composto) pode ser dividido em duas ou mais
regiões concorrentes, separadas por linhas a traço interrompido,
representando subestados concorrentes (que , por sua vez, têm
normalmente subestados sequenciais)
n Subestados concorrentes correspondem a aspectos do objecto
(grupos de atributos e ligações ou sub-objectos) que evoluem de
forma mais ou menos independente
n Dependências entre regiões podem ser expressas através de
condições de guarda (num componente testar o estado doutro)
n Também se chama a isto composição “e”:
• Estar no estado composto é estar no 1º e ... e no nº subestado concorrente

n Notar que, a um nível mais global, os objectos (e portanto os


respectivos diagramas de estados) são concorrentes entre si

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 31

Exemplo: Concorrência num objecto

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

Ao entrar, inicia os marca(hora)


dois subdiagramas hora Sai quando
concorrentes terminarem os dois
Selecção escolhida subdiagramas
concorrentes
da Hora

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 32


O mesmo exemplo sem subestados
concorrentes
Preparação do despertador
sintoniza(frequência)
programa
banda Selecção do escolhido Selecção
comuta(banda) escolhida Programa e Hora da Hora hora
escolhida

Selecção da marca(hora) marca(hora)


Banda e Hora hora
escolhida
marca(hora) hora comuta(banda) sintoniza(frequência)
escolhida banda programa
Selecção da escolhida Selecção do escolhido
Banda Programa

Tem-se (quase) o produto cartesiano dos estados do diagrama anterior!

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 33

Sincronização: separação e fusão


n Separação - quando um objecto passa a fazer várias actividades
concorrentemente (ordem irrelevante)
• transição para estado com subdiagramas concorrentes activa cada um deles

n Fusão - quando as actividades concorrentes têm que terminar


antes de passar ao estado seguinte
• subdiagramas que não estejam na fusão são automaticamente terminados

Emissão (Multibanco)

do/ liberta cartão


pronto recolhe cartão
Preparação Concluído

do/ liberta dinheiro


recolhe dinheiro

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 34


Conceitos avançados

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 35

Variáveis num estado


n Um estado pode ter um compartimento de variáveis
n Estas variáveis são atributos da classe dona do diagrama de
estados, distinguidos porque são usadas ou afectadas por
acções no diagrama de estados
n Todos os compartimentos (nome, variáveis e actividade
interna) são opcionais
Typing Password

{
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

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 36


Transições complexas
n Uma transição complexa é uma transição com múltiplos estados
fonte (normalmente de subdiagramas concorrentes) ou múltiplos
estados de destino (normalmente de subdiagramas concorrentes)

n Representa uma separação e/ou fusão de controlo em/de fios de


controlo concorrentes

n Aplicável mesmo sem subdiagramas concorrentes

n Desenha-se com uma barra forte (barra de sincronização):

Estado fonte 1 Estado destino 1


ev1
... ...
Estado fonte n evn Estado destino m

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 37

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

enviar fax chegada de fax

A enviar fax A receber faz


chegada de fax/defer enviar fax/defer

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 38


Descrição de eventos compostos
com diagramas de estados
n Um evento composto corresponde a uma sequência de
eventos mais simples
• O instante da ocorrência do evento composto é o instante da
ocorrência do último evento da sequência
• Exemplo: o evento composto “introduzir número” é uma sequência
de uma ou mais ocorrências do evento “introduzir dígito”, seguido de
uma ocorrência do evento “enter”

n Um evento composto pode ser definido através de um


diagrama de estados (máquina de estados) que funciona
como um “detector de eventos”
• Detector sequencial: a detecção do evento composto corresponde à
chegada a um estado final com o nome do evento
• Detector cíclico: o evento composto é sinalizado explicitamente,
podendo ser lançado vários vezes

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 39

Exemplo: Máquina de vendas (1)

Diagrama pincipal:

moeda ( montante ) / põe balanço Recolhe dinheiro


Inactivo moeda( montante) / adiciona ao balanço
cancelar / devolve moedas
[item vazio] escolhe(item) [troco<0]

do/ testa item e calcula troco

[troco=0] [troco>0]

do/ entrega(item) do/ faz troco

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 40


Exemplo: Máquina de vendas (2)
Detalhe do evento composto “escolhe(item)”:
dígito (n)

dígito (n) escolhe(item)


do/ inicializa item do/ acrescenta dígito
limpa aceita

Detalhe da actividade “entrega(item)”:

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

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 41

Estados históricos (history states)


n Estado histórico (dentro de um estado composto) – refere-
se ao último subestado em que se encontrava o estado
composto
n Útil para reentrar num estado composto no subestado em
que se encontrava anteriormente
n Não é aplicável na primeira entrada

B
A B1 interrupt
C

resume
H

B2
estado histórico

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 42


Resíduos de subestados (stubs)
n Aplicáveis quando se escondem os detalhes de um estado
composto, mas há transições que o atravessam

W
p s
A E C
u q
r t
B F D
abstracção

p s
A C
W q
r D
B

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 43

Exemplos e exercícios

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 44


Exemplo: Rádio-despertador (a rever)

minutos
alarme
horas tempo off radio alarme
desligar sintonia
dormir

vol
18:35 89.5 FM

q obter o diagrama de estados


• o botão dormir faz tocar durante uma hora (desligar cala-o logo)
• ao chegar ao instante do alarme, começa a tocar durante 1 hora (desligar só desliga
durante 10 minutos)

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 45

- Diagrama principal
Rádio-despertador
Interruptor
radio alarme
Desligado Funcionar Despertador
off do/ radio activo radio

Botão de sintonia Botão de volume


sintoniza(freq) ajusta(nível)/alterar nível
Ruído Estação Cortado Activo
dessintoniza [nível=0] ajusta(nível)/
alterar nível
Altifalante
Display [em Estação e Activo e
(Funcionar ou Despertar
botão alarme ou Adormecer)]
carregado Desligado Tocar
Hora actual Hora despertar
do/ mostra botão alarme do/ altera hora [em (Ruído ou Cortado)
hora actual livre despertar ou (Desligado ou Armado
ou Latente)]

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 46


- Subdiagrama Hora despertar

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

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 47

- Subdiagrama Hora actual

Hora actual

Mostra
do/ mostra
hora actual
botão tempo botão tempo
carregado livre

botão horas botão minutos


Acerta horas livre Altera hora carregado Acerta minutos
do/ incrementa do/ mostra do/ incrementa
horas mod 24 botão horas hora actual botão minutos minutos mod 60
carregado livre

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 48


- Subdiagrama Despertador

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

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 49

Caso de estudo: Biblioteca

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 50


Estados de uma Publicação

consulta / incrementa contador

aquisição Disponível

mediante
devolução empréstimo
requisição

Emprestada

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 51

Estados de um Sócio

evento ocorre quando a condição se


torna verdadeira

when(esgotado prazo da inscrição e não tem


exemplares emprestados) / avisa sócio

inscrição
Activo Inactivo

renovação
desistência

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 52


Estados de uma Requisição
requisição[ publicação
requisição[ publicação disponível ] /
indisponível ] / coloca em empresta exemplar
lista de espera
Significa que ocorreu a devolução ou
aquisição de um exemplar ou que
Espera uma requisição à espera de
disponibilidade levantamento foi anulada, na condição
publicação disponível / de não existir outra requisição à
avisa requisitante espera de disponibilidade mais antiga
do que esta
Espera
levantamento

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!

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 53

Exercícios

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 54


Exercício 1: Sistema de portas
n (ASI,10/2/99) Modele o funcionamento do seguinte sistema
de portas através de um diagrama de estados em UML:
• À entrada de um edifício existem duas portas: uma porta interior e
uma porta exterior
• Por razões de segurança, as duas portas não podem estar abertas
simultaneamente
• De ambos os lados (interior e exterior) de cada porta, há um botão
de abrir
• Quando se carrega no botão de abrir uma porta, se a outra porta
estiver trancada, a porta é destrancada durante 5 segundos,
permitindo a sua abertura manual
• As portas fecham-se por acção de molas e ficam imediatamente
trancadas
• Em cada porta há um sensor que detecta o seu fecho.

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 55

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).

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 56


Exercício 3: Telefone de cartões
n (ASI 3/4/98) Considere um telefone público de cartões que
funciona normalmente de acordo com o seguinte cenário:
• estando o telefone em repouso (auscultador poisado e mostrador desligado),
o utilizador levanta o auscultador;
• aparece quase imediatamente no mostrador a mensagem “introduza c artão”;
• o utilizador introduz o cartão na ranhura;
• aparece quase imediatamente no mostrador o número de períodos disponíveis
no cartão;
• o utilizador digita o número pretendido (os dígitos aparecem imediatamente
no mostrador e são imediatamente transmitidos para a central);
• passadas uma fracções de segundo ou escassos segundos após ter sido digitado
o último dígito, o telefone emite um sinal sonoro indicando que o número
pretendido está a ser chamado (sinal de chamada, proveniente da central);
• o sinal de chamada pára, indicando que o número chamado atendeu;
• decorre então a conversação (enquanto decorre a conversação, aparecem no
mostrador os períodos disponíveis no cartão, que são actualizados há medida
que chegam os impulsos da central);
• (continua)

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 57

Exercício 3: Telefone de cartões


(cont.)
• o utilizador poisa o auscultador;
• o utilizador pressiona num botão para sair o cartão (só nesse momento é que
desaparece do mostrador a indicação dos períodos disponíveis), e recolhe o
cartão.

n Considere ainda os seguintes modos de funcionamento


alternativos:
• No caso de pretender efectuar uma segunda chamada, o utilizador não
precisa de retirar o cartão (isto é, não precisa de pressionar o botão para sair
o cartão). Basta poisar o auscultador e voltar a levantá-lo.
• Passados 5 segundos desde que se poisa o auscultador, o cartão sai
automaticamente.
• Se, no momento de taxar um impulso, o cartão já não tiver mais períodos
disponíveis, a chamada é cortada automaticamente pelo telefone automático
(surge então um sinal contínuo que desaparece quando se poisa o
auscultador).

n Modele o funcionamento acima descrito através de um diagrama


de estados em UML.

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 58


Exercício 4
n Modele através de uma máquina de estados um programa
(tipo filtro Unix) que lê do standard input código fonte em
Java e escreve no standard output o mesmo código sem
comentários
• O programa deve ler e escrever caracter a caracter
• A chegada de um caracter c ao standard input deve ser modelada
como um evento input(c)
• O fim dos dados de entrada deve ser modelada pelo evento EOF
• A escrita de um caracter c no standard output deve ser modelada
pela acção output(c)

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 59

Exercício 4 - resolução
outro caracter c / output(c) outro caracter c / output(c)

'"' / output('"')

Normal Dentro de
string

'"' / output('"')

outro caracter '/'


c / output('/'); '"' / output('/'); '\' / output('\')
output(c) output('"')
'\n' /
outpu caracter c / output(c)
t('\n') Possível início '/'
de comentário
A seguir a
outro caracter c
outro caracter c
'\'
'*'
'/'

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 /*

UML – DIagramas de estados, v. 1.1, João Pascoal Faria, Novembro 2001 60