Академический Документы
Профессиональный Документы
Культура Документы
UML-1550
~
oi
...
'"
--'
o que é o Diagrama de Máquina de
o
<o
..:
o
Estados?
::>
~
Q
'iW
I
l!:J
Z
e,
• Representa os estados que um objeto pode
~
c: possuir, e a ordem pela qual ele passa por
~ oe,
ao
o
c
..:
estes estados, desde sua criação até sua
>
c:
::I ltJ
'"
;:J
c:
destruição.
O
<ao • Estuda o ciclo de vida de uma classe, um caso
:3 ao
o
!:::
lU
c: de uso, um pacote ou uma operação, mas é
E
233
=t
=
:I.
complexas e difíceis de entender podem ficar mais claros com o uso deste tipo de diagrama.
Corno os diagramas na UML são complementares, o diagrama de classe deve ter urna
propriedade para a informação do estado do objeto criado e o diagramade caso de uso deve prever
a alteração do estado deste objeto nas várias etapas do seu ciclo de vida.
O diagrama de estados pode ser usado para descrever atores, subsistemas, operações e
:I
objetos mas comumente é utilizado para objetos.
:I
:I
:I
=t
=t
:I
UML-I550
<i
c
~
o
'coo:
Componentes _
co:
o
=>
c
w
t;;
Z
u..
• Estado
C?;
a::
o
o.
(fJ
• Transição
o
c
co:
>
- Evento
a::
w
(fJ
w
a:: -Ação
o
.co:
(fJ
(fJ
o
- Condição de Guarda
!::
w
a::
Õ
(fJ
• Estado inicial e final
o
(fJ
o
c
o
I
e----";>::{ Estado! JI------.:::-I::{ EstadoZ Jt----';3oI>@
234
Condição de guarda: condição que deve ser avaliada como verdadeira para que a mudança
de estados ocorra.
Ação: método que será chamado(ou expressão executada) no início da transição caso ela seja
ativada.
,..
:31
UML-1550
:a'
=- -
.<:>
~E
Estados
~ 'Z" • São as situações de um objeto nas na quais ele
Lo
~
:I: satisfaz alguma condição, aguarda um evento
~ ~
§
ou realiza alguma atividade.
~
=-
~
""~
z
Título
~,
.,.,
-número
:s O
.,~
-cliente
-dataEmissão
-dataVencimento
CadastrarR gamento [ prazo vencido1
c -dataPagamento
:::
::li g -juros
-multa
"----,---~ CadastrarPagamento ~_~
-sítuação
:2
235
~
Como dito anteriormente, um diagrama de estados pode ser baseado em uma classe, mas
~ podem existir classes sem estados a serem modelados. Portanto um sistema pode ter vários
diagramas de estados e uma classe pode ter mais de um diagrama de estado associado.
~ O exemplo acima mostra uma classe que representa um título a receber. Este título tem um
atributo situação que pode conter os valores Aberto, Pago e Vencido.
:3
Considere um sistema de fórum no qual os usuários devem ser aprovados após inscrição,
podem ser moderados, bloqueados e desbloqueados:
:=J
~
Pendente Liberado Moderado
r"'oderar
Cancelar Co
:3 Cancelado
[ segunda vez ]
Bloqueado
'"-----'"
::I
:=t
::I
::I
·!
w
ffl
a:
o Digitando Senha
.«
in
...... Nome do Estado
in
entry rsetCaracterDeEco(char) !
o
t:
w
a:
i5
dofvalidarCaracter
exitlsetCaracterDeEcoO
...... Compartimento de ·
in
o
Transições Internas
rJ) ji
c o;
c
o
I
236
ti
i
Esta divisão é opcional e adotada em situações onde muitos métodos sejam chamados nas .
,
;;;
diferentes etapas da transição de estados. Possui os seguintes elementos:
Compartimento de Nome: local onde conterá o nome do estado. •i
Compartimento de Transições Internas: lista as ações ou atividades executadas enquanto
o objeto estiver no estado em foco. I i
As palavras reservadas que aparecem antes das ações na área de transições internas
identificam o evento que é disparado:
Entry - identifica uma ação que é executada na entrada do estado.
Exit - identifica uma ação que é executada na saída do estado.
Do - identifica uma atividade executada continuamente enquanto o objeto estiver no estado.
Include - é uma chamada a uma submáquina.
Ainda considerando o sistema de fórum: o estado de bloqueado deve verificar quantas vezes
já ocorreu. Caso seja a segunda vez, o usuário deve ter sua conta cancelada:
Se for o segundo
Bloqueado bloqueio, o método
r-----------------r~-------------
verificarBloqueio ativa o
entryIverificarBloqueio
estado Cancelado
3
<i
e:...,
:3 o
<l:
Transição
o
-o:
I.>
::l
:]I a
er
I-
'"Z" • Sintaxe:
~
- evento(parâmetros) / condição de guarda / ação
:]I o'e,"
o
>«
• Ação - atividade atômica que não pode ser
'"
~ '"too UJ
!I:
interrompida, é executada no início da transição.
s • Condição de Guarda - a transição será ativada
'"o
~ O)
o
c
o
apenase se a condição for verdadeira. Aparece entre
I
colchetes '[ ]' na transição.
::2
237
~ Na transição (a seta entre estados) fica com o nome do evento ou o que foi responsável na
mudança de estado do objeto.
Na alteração do estado de um objeto pode ser necessário executar alguns métodos, isso é
:::I
representado através da ação, que também poderá aparecer na transição ou dentro do estado.
A condição de guarda também é exibida na transição.
:=I No sistema de fórum, uma solução alternativa para passar de Liberado para Cancelado seria
a verificação da condição diretamente na transição entre estes dois estados:
:=i
:::I Bloquear : [ segunda vez] I cancelar
Liberado .... Cancelado I
-
:3 o sigr. condição
"segunda vez" for verdadeira então o método cancelar é executado e a transição é ativada.
::I
::I
:=!
::!
UML-1550
<i
o
':i
o
.«
Exemplos dos Componentes
o
«
o
:::>
o
w
I
W
Z
• Estados:
u..
;!;
te
o
- Pronto, em Manutenção, Checando, Finalizando,
e,
Cf)
o Efetuando Transação, em Consulta, em Internação
o
«
>
te
w • Eventos:
ffJ
te.
o
.«
- Cadastrar Empregado, Demitir Funcionário.
Cf)
Cf)
o
!::
w
• Ações:
te
Õ
Cf)
o
- identificarf.artaot), validaeSenhat).
Cf)
o
o
~
• Condições de Guarda:
238
Observe que o evento é o que faz com que o objeto mude de estado, seu conceito está
intimamente ligado ao da transição.
,
--.
1
•
I
••
<i
c
~
o
.<t
Máquina de Estados
~
o
=>
c
w
li;
z
u,
• Os superestados são utilizados para minimizar
:!:
a desorganização do diagrama de estados.
-
o:
o
n. ~
CIl
o
o
:; • Os superestados são compostos de dois ou
o:
w
CIl
W
0:,
mais subestados de uma mesma transição.
o
'<t
-
CIl
CIl
o
I:: ~
w
o:
Õ
CIl
o
CIl
o ~
o
oI
'~
A máquina de estados (ou Superestado ou Estado Composto) foi criada para agrupar estados
e facilitar a leitura do diagrama.
-
'E
E
=
~
UML-155D
=-
~
~
<:
::;,
:'!'
:ir
Diagrama de Estados
ã
z.....
~
::
~ L
~
;;:
=-
:>
I: adicionar!
...'"'"
I:
remover
passageiro
<:
'"
:: [10 minut s antes da [10 minutos antes da
:iI o
~
I:
decol gem] decolagem]
~
:õi adicionando passageiros
=-
::
o adicionar passageiro [cheio}
,.'!; Jdlcionarl r-=:-:-'l------.:..-~-----.:.--7tr'-=_::_'
5 remover
p~elro
'--r--/"õ:::::::::=-=-===-'-----.J ~
~
241
::I
::I
Nas figuras exibidas percebemos a facilidade da leitura permitida pelo super-estado.
Perceba que tanto o vôo aberto quanto lotado passam para a situação fechado, independente
=
::I
da situação anterior o que faz com que o voa passe para fechado são os 10 minutos antes da
decolagem.
::I
:I
:I
::I
.....,
--=
::
:I
.....,
iiiiiiiiIá
INSTITUTO INFNET - 241
~--
UML-1550
o uso do Diagrama de Estados é facultativo, ele só será utilizado quando houver necessidade -e
-z
de representar os estados de uma classe, é o estudo do ciclo de vida que um obejto poderá trilhar.
~...
===
e=-:
::11
~
:iI ~
o
Classes - Estados
""
o
<li:
t>
~
~
~
~ ~
'"
c
Empresa
0..1 l..n nome
Pessoa
::::l
<li: dt nascimento
=-
> emprega
:r::
'"
'"
i!U.
:r::
o
""'" Diagrama de Estados
'"
:31 o
ii
:r::
C
- Classe Pessoa
r. .1
=-
'"o ., CadastrarDemissão
'"
o ( Empregado) :::.\..Desempregado)
::::l
e
1\ CadastrarOcupação I
~
243
=
Empresa, ou seja, a pessoa pode estar empregada ou não. Pode ser interessante representar essa
mudança de estados, conforme representado abaixo.
::I
:2
~
~
INSTITUTO INFNET - 243
UML-l55D
!
<i.
c
~
o
.«
Exemplo
o
«
o
::J
C
W
I
W
Z
• Precisamos controlar uma pesquisa, quando ela é
u,
~
ti:
criada inicia-se a definição dos parâmetros (qual o
oD.
rJl
oC
local para pesquisa, quais os questionários serão
«
6:w utilizados, qual o público será abordado, etc.), depois
o
.«
rJl
rJl
na rua, depois essas entrevistas serão digitadas e
~
W
ti:
então ao término desta etapa, será feito o fechamento
i5
rJl
o da pesquisa, onde elas serão totalizadas (entrevistas
rJl
oC
o
OKere' .
I
244
No exemplo apresentado teremos que desenhar um diagrama de estados para uma pesquisa. i:
i!
= ~
Eventos do Sistema
~ -
.:c:>
~
::li ""
;;:
Z
Lo
• 10 Identifique os eventos do sistema que
~
~ alteram o estado do objeto
:I i:
~ - Cadastrar pesquisa
:<
=- .........
>
z::
z::
- Digitar entrevista
:I :ti
~
=-
~
~
:I
245
::I
Para facilitar o desenho do modelo vamos passar por dois passos iniciais que são:
::I identificação dos eventos e a identificação dos estados.
Na identificação dos eventos temos que buscar as ações que podemos fazer, no sistema, para
:I a classe em questão, ou seja, temos que identificar quais são as ações no sistema que alteram o
estado da Pesquisa.
=
::I
:I
:I
:J
:J
::J
::í
INSTITUTO INFNET - 245
:!
UML-I550
•'I
~
~
o
'00:
O
00
00:
U
::>
Estados -
i
LU
lüz
u,
• 2° Identifique os estados
~
lI:
O
Cl.
(f)
O
O
00:
- Em definição
- Entrevistando -
~
-
>
lI:
LU
- Finalizada li!
ffJlI:
O
'00:
-
(f)
1B
t::
i!
LU
lI:
Õ
(f)
-
O
(f)
O
li!!
O
~
I 246
-
~
-
~
Volte ao passo anterior e para cada evento identificado teremos uma alteração do estado do
objeto, agora é nomear esses estados.
Quando identificamos o Cadastrar Pesquisa como um evento que altera o estado da Pesquisa,
qual o estado da Pesquisa será alterada ?
No exemplo citado foi entendido que quando a pesquisa é cadastrada ela entra com a situação =
-
~
'Em definição'.
-
~
-
~
-
~
-
~
-
!!
'iiii
:11I
UML-1550
=:11 ~
- Diagrama
.<:::>
~
=- :u:
:;;:
z
.L
• 3° Desenhe o Diagrama
=-
~
;!;
........
L
~ .( Em Definição
<:
---l
=-
>
'"
'"
...'"
'"
..3
.< Digitar Entrevista
Entrevistar
:JI :u:
I \
•
II
~ .(Entrevistandol Finalizada ~
---l
=-
) Fechar Pesquisa ~
~
3 )
~,
:5
= 247
:11
=
:I
=
=
:s
:I
~
....
;;;;;;;a
INSTITUTO INFNET • 247
UML-15õC
<i
o
~
o
'<1;
Exemplo: Banco Money
o<I;
U
::l
o
w
lu
z
• A abertura de uma conta corrente permite que o
u.
~ cliente utilize-a normalmente.
o'a."
cn
o
o
• Caso a conta não seja movimentada durante seis
<I;
> meses ela fica inativa, só podendo voltar a atividade
'"cnw.
w
a:
o
após solicitação a agência.
'<1;
cn
cn
o • Por ordem judicial, a conta pode ser bloqueada e
!:::
w
'cn"
Õ
desbloqueada.
o
cn
oo
• O cliente pode encerrar a conta a qualquer momento.
~ O encerramento não fecha a conta imediatamente, ela
fica suspensa durante 30 dias e só então é finalizada.
248
:3
=-
<i
c
>
....I
o
-o:
Exemplo: Banco Money
o
«
o
::>
~
c
""
>
""z
"
~ OrdemJudicial
o:
::I oa
O)
o
o
-c ' - - - - - / [ fim da ordem judicial] '--_..,.---_-/
>
o:
~
ur
O)
ur
a:
o
-o:
li>
<Xl
:I o
>
W
lZ:
Õ
o'"
~ '"
o
c
o
>
=-
~
249
:I
::a
;I
:li
:JI
::I
::
~
=
~
INSTITUTO INFNET - 249
::I