Buscar

7 UML DiagramasEstados

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Unified Modeling Language
Diagramas de Estados
José Correia, Maio 2006
(http://paginas.ispgaya.pt/~jcorreia/)
José Correia UML - Diagramas de Estados 2
Questões
? O que são diagramas de estados e em que situações se utilizam?
? Qual a diferença entre os diagramas de estados e os diagramas de 
sequência e de colaboração?
? O que é um estado? Como se representa?
? O que é um evento? Como se representa?
? O que é uma transição? Como se representa?
? O que é uma acção? Como se representa?
? O que é uma condição? Como se representa?
? O que é uma actividade? Como se representa?
? O que são sub-estados sequenciais? E sub-estados concorrentes?
? etc.
José Correia UML - Diagramas de Estados 3
Introdução
? Os objectos têm estado e comportamentos (como já é sabido...)
? Os diagramas de estados permitem modelar a dinâmica de 
sistemas, ou objectos, cujo estado evolui por saltos (transições 
instantâneas), com um número finito de estados
• é o caso dos objectos computacionais ...
estado 
(de sistema 
ou objecto)
tempo
transição
José Correia UML - Diagramas de Estados 4
Exemplo: Login num sistema de Banca on-line
José Correia UML - Diagramas de Estados 5
Notas sobre o exemplo anterior
? Login num sistema de Banca on-line
• a ligação (registo no sistema) consiste na introdução de um número 
válido da Segurança Social (SSN - social security number) e do número 
de identificação pessoal (PIN - personal id number), seguida da 
submissão dos dados para validação
• a ligação pode ser dividida em 4 estados não-sobrepostos
- ‘Getting SSN’, ‘Getting PIN’, ‘Validating’ e ‘Rejecting’
• a partir de cada estado resulta um conjunto completo de transições que 
determinam o estado seguinte
• enquanto está no estado ‘Validating’, o objecto não espera por um evento
exterior para disparar uma transição. Em vez disso, executa uma 
actividade
- o resultado dessa actividade determina o estado seguinte
José Correia UML - Diagramas de Estados 6
Notação
? Os Estados são representados por rectângulos de cantos 
arredondados contendo o nome do estado 
• ‘Getting SSN’, ‘Getting PIN’, ‘Validating’ e ‘Rejecting’
? As Transições são representadas por setas de um estado para outro
• o diagrama anterior tem duas auto-transições (self-transition), uma em 
‘Getting SSN’ e outra em ‘Getting PIN’
? Os Eventos e Condições, que disparam as transições, são escritos 
ao lado das setas (ex: Press Key [key != tab] )
? A Acção que ocorre como resultado de um evento ou condição, é
expressa na forma /acção (ex: /Display key)
? O estado inicial (círculo preto) é um estado fictício (dummy state) 
para iniciar a acção
? Os estados finais também são dummy states que terminam a acção
José Correia UML - Diagramas de Estados 7
Definição
? Os diagramas de estados são um dos vários tipos de diagramas 
disponíveis em UML para modelar os aspectos dinâmicos de um 
sistema
• os diagramas de interacção (sequência ou colaboração) focam o fluxo 
de controlo de objecto para objecto (numa interacção)
• os diagramas de estados focam o fluxo (passagem) de controlo de 
estado para estado (num mesmo objecto ou sistema)
- captura o comportamento dinâmico (event-oriented)
? Um diagrama de estados …
… é um grafo cujos nós representam os estados possíveis dos objectos
... e cujos arcos dirigidos representam as transições de estado
... provocadas por eventos e/ou condições
José Correia UML - Diagramas de Estados 8
Diagrama de Transição de Estados
? Um diagrama de estados
• especifica uma máquina de estados, com estados (duráveis) e transições 
entre estados (instantâneas) causadas por eventos (instantâneos)
- a cada transição de estado corresponde um único evento
- se ocorrer um evento a que não corresponda uma transição de estado, esse 
evento é ignorado
• descreve o comportamento de uma única classe de objectos
- objectos da mesma classe têm o mesmo ciclo de vida, pelo que basta construir 
um diagrama de estados por classe de objectos relevante
- é criado para objectos que tenham um comportamento dinâmico significativo
José Correia UML - Diagramas de Estados 9
Diagrama de Transição de Estados
? Objectivo
• modelizar o ciclo de vida de uma classe
• modelizar objectos reactivos (user interfaces, devices, etc)
José Correia UML - Diagramas de Estados 10
ciclo de vida de objectos ou sistemas
? Um diagrama de estados permite modelar o comportamento interno 
de um objecto, subsistema ou sistema global, isto é, as sequências de 
estados por que pode passar durante o seu ciclo de vida em resposta 
a uma sequência de eventos, ou seja:
• os estados possíveis
- exemplo do estado civil: solteiro, casado, ...
• as transições entre estados
- 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 operações que são executadas, dentro de um estado (actividades) ou 
durante uma transição (acções), em resposta a esses eventos
José Correia UML - Diagramas de Estados 11
Estados
? 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
? Escolha dos estados e relação com atributos e ligações
• o estado de um objecto é dado pelos valores de atributos e ligações com 
outros objectos que mantém num dado momento
• interessa apenas distinguir estados que apresentam diferentes respostas 
a eventos
- os atributos e ligações (possivelmente expressos por condições) que não 
afectam o comportamento de um objecto devem ser ignorados
- todas as combinações de valores de atributos e ligações que originam a 
mesma resposta a eventos devem ser agrupados num único estado
• só os objectos é que têm estado; as ligações não
José Correia UML - Diagramas de Estados 12
Eventos
? No contexto de uma máquina de estados, um evento é uma 
ocorrência de um estímulo que pode disparar uma transição entre 
estados
? Os eventos são instantâneos
• ou melhor, têm uma duração desprezável
- em função da escala temporal que estamos a adoptar
? Um Evento…
… é algo que acontece num dado instante no tempo
… pode ter parâmetros
- exemplo: dígito-marcado(1)
… pode ser interno ou externo
- ver explicação mais à frente...
José Correia UML - Diagramas de Estados 13
Transições
? 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
• notação: arco dirigido etiquetado com evento[condição]/acção
? 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
• no exemplo do banco on-line, ver transições a sair do estado ‘Validating’
? Uma transição sem evento tem como evento implícito o fim da 
actividade associada ao primeiro estado
• se tiver uma condição, fica à espera que a condição seja satisfeita
José Correia UML - Diagramas de Estados 14
Exemplo: Jogo de Xadrez
Vez das 
brancas
Vez das 
pretas 
Vitória das pretas
Vitória das brancas
Empatejogada das 
pretas
perante xeque-mate
paralisado
jogada das 
brancas
perante 
xeque-mate
paralisado
Estado inicial
(criação do objecto e início 
da máquina de estados)
Estado final
(fim da máquina de estados 
e destruição do objecto)
Estado Transição
José Correia UML - Diagramas de Estados 15
Estados, Eventos e Transições
? Um estado especifica a resposta de um objecto a eventos recebidos
• o estado de um objecto depende da sequência de eventos que foram 
recebidos até então
? A respostade um objecto a eventos origina uma transição de estado
• e pode incluir o desenrolar de uma determinada acção
? A cada transição de estado corresponde um único evento
? O intervalo de tempo entre dois eventos corresponde a um estado em 
que o objecto se encontra
? Os eventos representam pontos no tempo (separam estados)
? Os estados representam intervalos de tempo (que separam os 
eventos)
José Correia UML - Diagramas de Estados 16
Condições
? Uma condição é função booleana dos valores dos objectos, válida 
num determinado intervalo de tempo
• condições não são eventos!
- os eventos não têm duração temporal
? O estado de um objecto pode ser definido através de uma condição
? As condições podem ser usadas como “guardas” nas transições 
(condições de guarda) de estado
• uma transição “guardada” dispara quando o evento correspondente ocorre 
e a condição booleana é verdadeira
• no exemplo da Banca on-line, ver as transições que dependem das 
condições [valid] e [not valid] a partir do estado ‘Validating’
José Correia UML - Diagramas de Estados 17
Tipos de Eventos
? Os eventos podem ser internos (passados entre objectos internos ao 
sistema) ou externos (passados entre o sistema e os actores)
• evento interno
- exemplo: excepção de overflow
• eventos externos
- exemplos: botão pressionado, interrupt causado por um sensor
? Os eventos podem ser de vários tipos:
• eventos de mudança (uma condição tornar-se verdadeira)
• eventos temporais (passagem de tempo ou ocorrência de uma data-
hora)
• chamadas (invocação de operações)
• sinais (eventos sinalizados explicitamente com um nome)
José Correia UML - Diagramas de Estados 18
Tipos de Eventos: Eventos Temporais
? 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, 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)
? Evento de tempo absoluto
• representa a chegada a um certo instante de tempo (data e/ou hora)
• notação: when(instante-de-tempo)
• exemplo: when(11:59PM)
José Correia UML - Diagramas de Estados 19
Tipos de Eventos: Eventos de Mudança
? Um evento de mudança (change event) é um evento que representa 
o facto de uma condição se tornar verdadeira
? Notação: when(expressão booleana)
? A expressão boolena pode ser usada para marcar um tempo absoluto 
(ver atrás) ou para o teste contínuo de uma expressão
? Exemplo: when(altitude < 1000)
José Correia UML - Diagramas de Estados 20
Exemplo: Semáforos
Norte/Sul pode 
seguir em frente 
Norte/Sul pode 
virar à esquerda
Este/Oeste pode 
seguir em frente
timeout
Este/Oeste pode 
virar à esquerda
timeout
timeout [ sem carros 
na pista esquerda E/O ]
timeout [ há carros na 
pista esquerda E/O ]
timeout [ há carros na 
pista esquerda N/S ]
timeout [ sem carros na 
pista esquerda N/S ]
timeout - passagem de um certo tempo desde 
a entrada no estado origem da transição 
N
O E
S
N
S
O E
N
O E
S
N
O E
S
José Correia UML - Diagramas de Estados 21
Tipos de Eventos: Chamadas
? Uma 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
• a diferença entre evento e acção é feita pelo contexto
? Uma chamada é, geralmente, síncrona
• quando uma operação de um objecto invoca uma operação noutro 
objecto, o controlo passa para o 2º objecto
? Nome do evento tem a sintaxe da invocação da operação
• exemplo: insert(record)
José Correia UML - Diagramas de Estados 22
Tipos de Eventos: Sinais
? Um sinal é a ocorrência de um estímulo (evento) assíncrono
comunicado entre objectos
? Um sinal representa um objecto com nome que é lançado (thrown) 
assincronamente por um objecto e é recebido (caught) por outro
• modelizado por classe com estereótipo «signal»
• parâmetros do sinal são atributos da classe
• dependência com estereótipo «send» entre operação que lança um sinal 
e a classe que representa o sinal
? Uma excepção é um sinal
• excepções são suportadas pela maioria das linguagens de programação 
actuais (ex.: Java, C++)
• são o tipo mais frequente de sinais internos que precisamos de modelar
? Lançamento de sinal representado por acção send ou throw
José Correia UML - Diagramas de Estados 23
Actividades
? Uma actividade é uma operação, associada a um estado, que se 
desenvolve durante um certo intervalo de tempo
• as actividades são elementos básicos dos diagramas de actividades
- que iremos ver a seguir...
? Uma actividade ...
… inicia-se ao entrar no estado (quando é feita a transição)
… tem duração
… termina por si só, ou pode ser interrompida (por eventos)
? Notação: do/actividade
? Exemplos:
• no banco on-line: do/validate SSN and PIN
• num telefone: do/dá_sinal_de_marcar
José Correia UML - Diagramas de Estados 24
Exemplo: Telefone (fazer chamadas)
Inactivo
Desligado
Sinal de ocupado
Sinal de interrompido
Tempo máximo
Mensagem gravada
no descanso
levantado
dígito(n)
tempo máximo
número válido
número 
inválidonúmero 
ocupado
ramal 
ocupado
resposta/ liga linha
chamado desliga/desliga linha
mensagem 
dada
Ligado
Tocando
Ligando
Discando
Sinal de marcar
dígito(n)
tempo máximo
encaminhada
no descanso
do/toca sinal do/ toca apito
do/ passa mensagem
do/ busca ligação
do/ toca campainha
do/sinal ocupado lento
do/ sinal ocupado rápido
no descanso/ desliga linha
José Correia UML - Diagramas de Estados 25
Acções
? Uma acção
• ocorre em resposta a um evento
- as acções estão associadas a eventos
• é (representa) uma operação instantânea
- intervalo de tempo insignificante face à granularidade de tempo representada 
no diagrama de estados
- não tem duração (pelo menos no modelo) e não pode ser interrompida
• resulta numa mudança de estado ou no retorno de um valor
- a mudança de estado pode ser noutro objecto
? Notação: evento/acção
? Exemplos:
• no banco on-line: Cancel/Quit
• num telefone: poisa_auscultador/pára_sinal_de_marcar
José Correia UML - Diagramas de Estados 26
Exemplo: Porta de Garagem com motor
? Diagrama com as acções associadas às transições
Porta 
Fechada
Porta Aberta
comando accionado /
ligar motor no sentido A
porta foi aberta /
desligar o motor
porta foi fechada /
desligar o motor
Porta a 
Abrir
comando accionado /
ligar motor no sentido A
comando accionado /
ligar motor no sentido F
Porta a 
Fechar
José Correia UML - Diagramas de Estados 27
Acções à entrada e saída de estados
? As operações podem estar associadas a um estado ou a uma 
transição de estado
? Acção à entrada num estado: entry/acção
• equivale a associar a acção a cada transição que entra no estado
? Acção à saída de um estado: exit/acção
• equivale a associar a acção a cada transição que sai do estado
? Ordem das operações (Actividades e Acções)
• acções na transição de chegada
• acções na entrada ( entry/ )
• actividade ( do/ )
• acções na saída ( exit/ )
• acções na transição de saída
José Correia UML - Diagramas de Estados 28
Exemplo: Porta de Garagem com motor
? Diagrama com acções de entrada e saída
Porta a Abrir
entry/ ligar motor no sentido A
Porta a Fechar
entry/ ligar o motor no sentido F
comando
accionado porta foi aberta
porta foi fechada
comando
accionado
comando accionado
Porta Fechada
entry/ desligar o motor
Porta Aberta
entry/ desligar o motor
José Correia UML- Diagramas de Estados 29
Acções internas
? As acções podem representar operações de controlo internas 
(atribuição de valores aos atributos, criação de outros eventos)
• exemplo: incrementar contador sempre que ocorre um dado evento
? Acção interna
• ocorre em resposta a um evento interno a um estado
• difere de uma auto-transição, porque não são executadas acções à saída 
e entrada e não é interrompida a actividade associada ao estado
? Notação: evento/acção
? Um evento pode causar uma acção sem disparar a transição de 
estado
José Correia UML - Diagramas de Estados 30
Estado 1
do/actividade 1
entry/acção 1A
exit/acção 1C
evento/acção 1B
evento(atributos) [condição]/acção
transição
Estado 2
Sequência de operações numa 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 (actividade 1), se 
não tinha já terminado
? é executada a acção à saída (acção 1C) do estado de origem
? é executada a acção associada à transição de estados
? é executada a acção à entrada (acção 2A) no estado de destino
? é iniciada a actividade associada ao estado de destino (actividade 2)
do/actividade 2
entry/acção 2A
exit/acção 2C
evento/acção 2B
José Correia UML - Diagramas de Estados 31
Exemplo: Menu pop-up
? Acções de um menu pop-up
Inactivo Menuvisível 
botão direito em baixo /
mostra menu pop-up
botão direito em cima /
apaga menu pop-up e lança acção 
associada ao item seleccionado
cursor deslocado /
realça item do menu
José Correia UML - Diagramas de Estados 32
Sub-Estados
? Vários estados de um diagrama (e transições entre esses estados) 
podem ser agrupados num único estado composto
? Um sub-estado é um estado que se encontra definido dentro de outro 
(super)estado
• a ideia subjacente ao conceito de sub-estado é a abstracção
- uma máquina de estados pode ser descrita com diferentes níveis de 
abstracção e de detalhe conforme seja necessário ou relevante em cada 
momento
? Um estado que tenha um conjunto de sub-estados mais detalhados 
designa-se por estado composto
• o estado composto pode ser visto simplesmente como um contorno
? Um estado composto pode conter quer sub-estados sequenciais
(disjuntos), quer sub-estados concorrentes (ortogonais)
José Correia UML - Diagramas de Estados 33
Sub-estados sequenciais
? Os estados e transições agrupados no estado composto formam um 
diagrama de estados encaixado, podendo ter estado inicial e final
? Também se chama a isto generalização de estados
• o estado composto é também chamado um super-estado
• estar num sub-estado é estar também no respectivo super-estado
? A generalização de estados é uma associação (composição) “ou”
• estar no estado composto é estar no 1º sub-estado ou,…, ou no n-ésimo 
sub-estado
• ou seja, não é possível estar em dois (sub)estados simultaneamente
? Os sub-estados herdam as transições e acções dos seus super-
estados
José Correia UML - Diagramas de Estados 34
Exemplo: Transmissão automática
? Diagrama de estado do sistema de transmissão de movimento de um 
automóvel automático
Estado composto
Ponto 
morto
Marcha 
atrás
Frente
Primeira Segunda Terceira
Primeira Segunda Terceira
subida
redução
subida
reduçãoparagem
carrega N
carrega N
carrega R
(reverse)
carrega F
(forward)
José Correia UML - Diagramas de Estados 35
Sub-estados sequenciais:
Transições com estados compostos
? Podem-se definir transições com origem no estado composto
• equivale a repetir a mesma transição com origem em cada um dos sub-
estados (excepto ?)
- por outras palavras, os sub-estados herdam a transição
• simplifica-se o diagrama porque se desenha 1 transição em vez de n 
transições (tantas quantos os sub-estados)
• a transição pode ser dirigida a um sub-estado ou a um estado externo
José Correia UML - Diagramas de Estados 36
Sub-estados sequenciais:
Transições com estados compostos
? 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 ?)
- que tem de estar definido
? No entanto, também se podem definir transições que atravessam o 
estado composto, com origem ou destino em sub-estados
• o estado inicial é apenas um estado inicial por omissão
José Correia UML - Diagramas de Estados 37
Sub-estados sequenciais:
Propriedades de estados compostos
? Um estado composto pode ter todas as propriedades dos estados 
simples...
... mas, normalmente, só tem o nome, que mesmo assim é opcional
? Um estado composto pode ter acções à entrada e à saída
• ao entrar no estado composto, executa primeiro as acções à entrada no 
estado composto...
... e depois as acções à entrada no sub-estado de destino
• ao sair do estado composto, executa primeiro as acções à saída do sub-
estado de origem...
... e depois as acções à saída do estado composto
José Correia UML - Diagramas de Estados 38
Sub-estados sequenciais:
Propriedades de estados compostos
? A actividade do estado composto é detalhada pelos sub-estados e 
transições entre eles
• isto é, pelo diagrama de estados encaixado
? 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
José Correia UML - Diagramas de Estados 39
Sub-estados concorrentes
? Um estado (estado composto) pode ser detalhado através de vários 
sub-diagramas concorrentes
? Sub-diagramas correspondem a componentes (grupos de atributos e 
ligações ou sub-objectos) mais ou menos independentes do objecto 
dono do diagrama
• o mesmo evento pode disparar transições em vários sub-diagramas
? Sub-diagramas também são mais precisamente chamados sub-
estados concorrentes (têm nome, etc., como os estados)
José Correia UML - Diagramas de Estados 40
Sub-estados concorrentes
? Dependências entre componentes podem ser expressas através de 
condições de guarda
• um componente testar o estado doutro
? Os componentes são divididos por linhas a traço interrompido
? Também se chama a isto composição “e”
• estar no estado composto é estar no 1º e ... e no nº sub-estado 
concorrente
? Notar que, a um nível mais global, os vários objectos (e portanto os 
respectivos diagramas de estados) são concorrentes entre si
José Correia UML - Diagramas de Estados 41
Exemplo: Concorrência num objecto
Preparação do despertador
Selecção 
da Banda
Selecção do programa
Activação do alarme
Selecção do 
Programa
banda 
escolhida
comuta(banda) sintoniza(frequência)
Selecção 
da Hora
hora 
escolhida
marca(hora)
programa 
escolhido
Subestados 
concorrentes de 
“Preparação do 
despertador”
Sai quando 
terminarem os dois 
subdiagramas 
concorrentes
Alarme 
ligado
Ao entrar, inicia os 
dois subdiagramas 
concorrentes
José Correia UML - Diagramas de Estados 42
O mesmo exemplo sem sub-estados concorrentes
Preparação do despertador
Selecção da 
Banda e Hora
Selecção do 
Programa e Hora
banda 
escolhidacomuta(banda)
sintoniza(frequência)
marca(hora)
programa 
escolhido
marca(hora)
Selecção 
da Hora hora 
escolhida
marca(hora)
Selecção da 
Banda
hora 
escolhida programa 
escolhidoSelecção do 
Programa
sintoniza(frequência)comuta(banda)
banda 
escolhida
hora 
escolhida
José Correia UML - Diagramas de Estados 43
Sincronização: separação e fusão
? Separação (ou bifurcação) - Quando um objecto passa a fazer várias actividadesconcorrentemente (ordem irrelevante)
• transição para estado com sub-diagramas concorrentes activa cada um deles
? Fusão (ou junção) - Quando as actividades concorrentes têm que terminar antes de 
passar ao estado seguinte
• sub-diagramas que não estejam na fusão são automaticamente terminados
? Exemplo: Actividades desenvolvidas por máquina ATM no fornecimento do dinheiro e 
cartão
Emissão (Multibanco)
Preparação
do/ liberta cartão
pronto
Concluído
do/ liberta dinheiro
recolhe dinheiro
recolhe cartão
José Correia UML - Diagramas de Estados 44
Exemplo: Leilão
? O seguinte diagrama de estados modeliza um leilão (auction) com 
dois sub-estados concorrentes:
• processamento da(s) oferta(s) (processing the bid – ‘Bidding’)
• autorização do pagamento (authorizing the payment)
? A entrada no leilão implica a bifurcação (fork) em duas sequências 
separadas (threads)
? Cada sub-estado tem um estado de saída para marcar o fim da 
sequência
? A não ser no caso de uma saída anormal (Canceled or Rejected), a 
saída do estado composto ocorre quando ambos os sub-estados 
tiverem terminado
José Correia UML - Diagramas de Estados 45
Exemplo: Leilão (cont.)
José Correia UML - Diagramas de Estados 46
Sistemas reactivos
? Os diagramas de estados são particularmente úteis para modelar o 
comportamento de objectos ou sistemas reactivos
• sistemas que funcionam por resposta (reacção) a estímulos (eventos)
• sistemas de interacção com o utilizador (com formulários, botões, etc.) 
são tipicamente reactivos
• 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
• Sistemas de tempo real (ex.: semáforo) podem ser vistos como sistemas 
reactivos que reagem a eventos temporais (timeout, ...)
? Objectos podem combinar comportamentos reactivos (resposta a 
eventos) com comportamentos invocáveis (operações)
• o mesmo comportamento pode ser visto nas duas perspectivas
José Correia UML - Diagramas de Estados 47
Diagramas de estados vs.
Diagramas de interacção
? Um diagrama de estados mostra todos os comportamentos possíveis 
de um objecto
• passagem de controlo entre estados
? Um diagrama de interacção (sequência ou colaboração) mostra um 
comportamento possível de um conjunto de objectos
• passagem de controlo entre objectos
? Envio de uma mensagem é uma acção
? Recepção de mensagem é um evento
? Intervalo de tempo entre duas mensagens corresponde à
permanência num estado
José Correia UML - Diagramas de Estados 48
Relação com o modelo de objectos
? Um diagrama de estados descreve o comportamento de uma dada 
classe de objectos
• um objecto pode passar por diferentes estados ao longo do tempo, mas 
preserva a sua identidade (não muda de classe)
• diferenças inerentes ao objecto são modelizadas por classes diferentes
• diferenças temporárias são modelizadas por estados
? Os estados são representados por valores específicos dos atributos
e ligações de cada classe de objectos
? Os eventos são representados por operações no modelo de objectos
José Correia UML - Diagramas de Estados 49
Referências
Estes apontamentos foram baseados em:
? “UML – Unified Modeling Language”, Curso em Tecnologia de 
Objectos, FEUP, Novembro 2000
Ademar Aguiar, Gabriel David, João Pascoal Faria
? “Desenvolvimento OO – Construção do modelo dinâmico através da 
linguagem UML”, ISPGaya, Novembro 1998
César Toscano
? “Practical UML: A Hands-On Introduction for Developers”,
TogetherSoft Corporation
? “UML, Metodologias e Ferramentas CASE”, Alberto Rodrigues da 
Silva, Carlos Videira, Maio 2001

Outros materiais