Вы находитесь на странице: 1из 16

:s

UML-1550

~
oi
...
'"
--'
o que é o Diagrama de Máquina de
o
<o­
..:
o
Estados?
::>

~
Q
'iW

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

:- mais comumente utilizado para os objetos de


ao
o
'"
oo
:>
I­ uma classe.
=t

233

=t

=­ o diagrama de estados visa o estudo do comportamento do objeto. Ele descreve as etapas


pelas quais um objeto passa durante sua existência. Objetos cujas mudanças de estado sejam


: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

INSTITUTO INFNET - 233


::I

UML-I550

<i
c
~
o
'co­o:
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

e----";>::{ Estado! JI------.:::-I::{ EstadoZ Jt----';3oI>@

234

Estado é a situação na qual o objeto se encontra em determinado momento. O estado inicial


(ou estado de criação) indica o estado em que o objeto se encontra após a sua criação. O estado
final é usado para identificar um estado do qual não há mais volta, ou seja, o último estado de um
objeto.
Só pode haver um estado inicial e ele tem que ser desenhado no diagrama. Estados finais são
opcionais e pode haver mais de um.
Existem autores que utilizam o desenho do próprio estado (em vez da descrição do caso de
-

uso) para indicar quais as ações fazem parte dele.


O desenho do estado é representado por um retângulo com cantos arredondados. Os estados
são ligados por transições que indicam a ocorrência de uma mudança de estado.A transição é
composta por três partes:
Evento: qualquer evento que possa ativar a mudança entre os estados.
-
~

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.

INSTITUTO INFNET • 234


..

,..
: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

Liberar Cadastro Liberar

~
Pendente Liberado Moderado
r"'oderar

Cancelar Co

~ Cada tro Negado Bloqu ar Liberar

:3 Cancelado
[ segunda vez ]
Bloqueado

'"-----'"

::I
:=t
::I

INSTITUTO INFNET • 235

::I

----------- ._----------- ------ - - - ­


UML-I550
I
,

<i.
c
~
o

Desenho do Estado í.

«
o
::>
c
w

z
LL
• Outra forma de desenhar um estado é separá
~
a:
co.. lo em dois compartimentos: um para o nome e
in
o
c
«
outro para transições internas ao estado.
>
a:

·!
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

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

INSTITUTO INFNET • 236


::íI UML-1550

3
<i
e:...,
:3 o
<l:
Transição

-o:
I.>
::l

:]I a
er
I-

'"Z"­ • Sintaxe:
~
- evento(parâmetros) / condição de guarda / ação
:]I o'e,"

'"oc • Evento - é a especificação de uma ocorrência que irá


-o:
>
a: ocasionar a alteração de estado do objeto.
~ UJ
'"a:
UJ

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

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

.l..l..l.""'u...... '-J ...... _ 0 ..."'" .......... L4


ó • LL.l.l..I.L4 '-" '-J O""'ó"""Á..I...I. ..._ . u.'-J ,-,,-,,v •• "-'Á '-J ....,,.. _..1..1. ... "'" LI.l.V'1."'-'LL.l, 0_ U.

"segunda vez" for verdadeira então o método cancelar é executado e a transição é ativada.
::I

::I

:=!

::!

INSTITUTO INFNET - 237


::!

UML-1550

<i
o
':i
o

Exemplos dos Componentes

«
o
:::>
o
w

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:

- Senha inválida, falha detectada.

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
••

INSTITUTO INFNET - 238


UML-1550

<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

INSTITUTO INFNET - 240

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

Quando Usar O Diagrama de Estados?


• Nem todas as classes podem ser representadas por
um diagrama de estados, simplesmente por não
possuir estados a serem analisados.
• Se a classe tem um atributo status (ou situação) é um
indicativo de que o objeto terá comportamentos
diferentes de acordo com os valores atribuídos neste
atributo.
'5 • Esta indicação pode ser vista por associação com
o
2 minimalidade 0, indica que o estado da classe pode
ser diferente se tiver esta associação.
242

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=-:

INSTITUTO INFNET - 242


:=­ UML-1550

::11

~
:iI ~

o
Classes - Estados
""

<li:
t>
~
~
~

:ti Diagrama de Classes


z
~
:r::

~ ~
'"
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

=­ Os relacionamentos do diagrama de classes também podem informar estados de uma classe.


Na figura acima, no diagrama de classes, a Pessoa pode ou não estar relacionada com uma


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
::J
C
W

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

ffJti: desta atividade é dado início à coleta de informações

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

244

No exemplo apresentado teremos que desenhar um diagrama de estados para uma pesquisa. i:

i!

INSTITUTO INFNET - 244


=­ UML-1550

=­ ~
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

.:c.. - Fechar pesquisa

: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'.
-
~

-
~

-
~

-
~

-
!!

INSTITUTO INFNET • 246


..

'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

=­ Depois de empregar os passos anteriores o desenho do diagrama se torna muito fácil.


Lembre-se que o diagrama pode ser enriquecido com outras características do sistema como

=­::I a ação, condições de guarda, agrupamento de estados e o compartimento de transições internas.


: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

INSTITUTO INFNET - 248


:I
UML-155D

:3

=-
<i
c

....I
o
-o:
Exemplo: Banco Money


«
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

Вам также может понравиться