Sie sind auf Seite 1von 50

9.

Modelagem de estados
Introduo
Diagramas de transio de estados
Identificao dos elementos de um diagrama
de estados
Construo de diagramas de transio de
estados
Modelagem de estados no processo de
desenvolvimento
Objetos do mundo real se encontram em estados
particulares a cada momento.
uma jarra est cheia de lquido
uma pessoa est cansada.
Da mesma forma, cada objeto participante de um
sistema de software orientado a objetos se encontra
em um estado particular.
Um objeto muda de estado quando acontece algum
evento interno ou externo ao sistema.
Durante a transio de um estado para outro, um
objeto realiza determinadas aes dentro do sistema.
Quando um objeto transita de um estado para outro,
significa que o sistema no qual ele est inserido
tambm est mudando de estado.
Os estados e as transies de estados de um
objeto constituem seu ciclo de vida.
Atravs da anlise das transies entre estados dos
objetos de um sistema de software, podem-se prever
todas as possveis operaes realizadas, em funo de
eventos que possam ocorrer.
O diagrama da UML que utilizado para realizar esta
anlise o diagrama de transio de estado (DTE)
A UML tem um conjunto rico de notaes para desenhar
um DTE.
Estados
Transies
Evento
Ao
Atividade
Transies internas
Estados aninhados
Estados concorrentes
Situao na vida de um objeto em que ele satisfaz a
alguma condio ou realiza alguma atividade.
funo dos valores dos atributos e (ou) da
O atributo reservado deste objeto livro tem valor
verdadeiro.
Uma conta bancria passa para o vermelho quando o seu
saldo fica negativo.
Um professor est licenciado quando no est
ministrando curso algum durante o semestre.
Um tanque est na reserva quando nvel de leo est
abaixo de 20%.
Um pedido est atendido quando todos os seus itens
esto atendidos.
Estados podem ser vistos como uma abstrao dos
atributos e associaes de um objeto.
A notao UML para representar um estado
um retngulo com bordas arredondadas.
Notao da UML para estados:
O estado inicial indica o estado de um objeto
quando ele criado. S pode haver um estado
inicial em um DTE.
Essa restrio serve para definir a partir de que ponto
um DTE deve comear a ser lido.
O estado final representado como um crculo
eclipsado e indica o fim do ciclo de vida de um
objeto.
opcional e pode haver mais de um estado final em
um DTE.
Os estados esto associados a outros pelas
transies.
Uma transio mostrada como uma linha
conectando estados, com uma seta apontando
para um dos estados.
Quando uma transio entre estados ocorre, diz-
se que a transio foi disparada.
Uma transio pode ser rotulada com uma
expresso da seguinte forma:
Uma transio possui um evento associado.
Um evento algo que acontece em algum
ponto no tempo e que pode modificar o
estado de um objeto:

Pedido realizado
Fatura paga
Cheque devolvido
Os eventos relevantes a um sistema de
software podem ser classificados em nos
seguintes tipos.
1. Evento de chamada: recebimento de uma
mensagem de outro objeto.
2. Evento de sinal: recebimento de um sinal.
3. Evento temporal: passagem de um intervalo de
tempo predefinido.
4. Evento de mudana: uma condio que se torna
verdadeira.
Evento de chamada
Corresponde ao recebimento de uma mensagem de
outro objeto.
Pode-se pensar neste tipo de evento como uma
solicitao de servio de um objeto a outro.
Evento de sinal
Neste evento o objeto recebe um sinal de outro objeto
que pode faz-lo mudar de estado.
A diferena bsica entre o evento de sinal e o evento de
chamada que neste ltimo o objeto que envia a
mensagem fica esperando a execuo da mesma.
No evento de sinal, o objeto remetente continua o seu
processamento aps ter enviado o sinal.
Evento de temporal
Corresponde passagem de um intervalo de
tempo predefinido.
O objeto pode interpretar a passagem de um certo
intervalo de tempo como sendo um evento.
especificado com a clusula after seguida de um
parmetro que especifica um intervalo de tempo.
after(30 segundos): indica que a transio ser
disparada 30 segundos aps o objeto ter entrado no
estado atual.
Corresponde a uma condio que se torna
verdadeira.
representado por uma expresso de valor
lgico (verdadeiro ou falso) e especificado
utilizando-se a clusula when.
when(saldo > 0): significa que a transio
disparada quando o valor do atributo saldo for
positivo.
Eventos temporais tambm podem ser
definidos utilizando-se a clusula when.
when(data = 13/07/2002)
when(horrio = 00:00h)
A ocorrncia de um evento A relevante pode
ocasionar a ocorrncia de um evento B
relevante para outro objeto.
No exemplo a seguir, alm da transio de
estados, o evento OutroEvento (relevante a
objetoAlvo) tambm disparado.
uma expresso de valor lgico que
condiciona o disparo de uma transio.
A transio correspondente disparada se e
somente se o evento associado ocorre e a
condio de guarda verdadeira.
Uma transio que no possui condio de guarda
sempre disparada quando o evento ocorre.
A condio de guarda pode ser definida
utilizando-se parmetros passados no evento
e tambm atributos e referncias a ligaes
da classe em questo.
Ao transitar de um estado para outro, um
objeto pode realizar uma ou mais aes.
Uma ao uma expresso definida em
termo dos atributos, operaes, associaes
da classe ou dos parmetros do evento
tambm podem ser utilizados.
A ao associada a uma transio
executada se e somente se a transio for
disparada.
Semelhantes a aes, atividades so algo que
deve ser executado.
No entanto, uma atividade pode ser
interrompida (uma ao no pode).
Por exemplo, enquanto a atividade estiver em
execuo, pode acontecer um evento que a
interrompa.
Outra diferena: uma atividade sempre est
associada a um estado (ao contrrio, uma
ao est associada a uma transio).
Pode ser que o prximo estado de um objeto
varie de acordo com uma condio.
Se o valor da condio for verdadeiro, o objeto vai para
um estado E1; se o valor for falso, o objeto vai para
outro estado E2.
como se a transio tivesse bifurcaes, e cada
transio de sada da bifurcao tivesse uma condio
de guarda.
Essa situao pode ser representada em um DTE
atravs de um ponto de juno.
Pontos de juno permitem que duas ou mais
transies compartilhem uma trajetria de
transies.
De uma forma geral, pode haver um nmero
ilimitado de transies saindo de um ponto
de juno.
Pode haver tambm uma transio de sada
que esteja rotulada com a clusula else.
Se as outras condies forem falsas, a transio da
clausula else disparada.
Pontos de juno permitem que duas ou mais
transies compartilhem uma trajetria de
transies.
De uma forma geral, pode haver um nmero
ilimitado de transies saindo de um ponto
de juno.
Pode haver tambm uma transio de sada
que esteja rotulada com a clusula else.
Se as outras condies forem falsas, a transio da
clausula else disparada.
No compartimento adicional de um retngulo de
estado podem-se especificar aes ou atividades
a serem executadas.
Sintaxe geral: evento / [ao | atividade]
H trs clusulas predefinidas: entry,exit,do
Clusula entry
Pode ser usada para especificar uma ao a ser realizada
no momento em que o objeto entra em um estado.
A ao desta clusula sempre executada,
independentemente do estado do qual o objeto veio.
como se a ao especificada estivesse associada a todas as
transies de entrada no estado.
Clusula exit
Serve para declarar aes que so executadas
sempre que o objeto sai de um estado.
sempre executada, independentemente do
estado para o qual o objeto vai.
como se a ao especificada estivesse associada a
todas as transies de sada do estado.
Clusula do
Usada para definir alguma atividade a ser
executada quando o objeto passa para um
determinado estado.
Ao contrrio da clusula entry, serve para
especificar uma atividade, em vez de uma
ao.
uma transio que no faz o objeto mudar de
estado;
prefervel usar a seguinte ordem de
declarao:
entry, do, transies internas, exit;
Importante:
Caso haja entry e exit em um estado a ordem de
execuo a seguinte:
Exit, ao reflexiva, entry e por fim as demais
aes ou atividades.
Podem haver estados aninhados dentro de
outros estados;
O estado que contm outros estados dito
composto.
Torna o diagrama de transio de estados
mais legvel

Exemplo (Despertador )
um tipo especial de estado composto;
Um objeto em um estado concorrente pode
se encontrar em
dois ou mais estados semelhantes;
Exemplo, um refrigerador.
Um bom ponto de partida para identificar
estados analisar os possveis valores de
seus atributos e as ligaes que ele pode
realizar com outros objetos.
No entanto, a existncia de atributos ou
ligaes no suficiente para justificar a
criao de um DTE.
O comportamento de objetos dessa classe deve
depender de tais atributos ou ligaes.
J que transies dependem de eventos para
ocorrer, devem-se identificar estes eventos
primeiramente.
Alm disso, deve-se examinar tambm se h
algum fator que condicione o disparo da
transio.
Se existir, este fator deve ser modelado como uma
condio de guarda da transio.
Um bom ponto de partida para identificar
eventos a descrio dos casos de uso.
Os eventos encontrados na descrio dos
casos de uso so externos ao sistema.
Contudo, uma transio pode tambm ser
disparada por um evento interno ao sistema.
De uma forma geral, cada operao com
visibilidade pblica de uma classe pode ser
vista como um evento em potencial.
Uma outra fonte para identificao de
eventos associados a transies analisar as
regras de negcio.
Um cliente do banco no pode retirar mais de R$
1.000 por dia de sua conta.
Os pedidos para um cliente no especial devem ser
pagos antecipadamente.
O nmero mximo de alunos por curso igual a
30.
Os diagramas de estados so desenhados por
classe.
Desvantagem: dificuldade na visualizao do estado
do sistema como um todo.
Em sistemas grandes a construo do DTE
bastante complexa;

Essa desvantagem parcialmente compensada


pelos diagramas de interao.
Nem todas as classes de um sistema
precisam de um DTE.
Somente classes que exibem um comportamento
dinmico relevante.
Objetos cujo histrico precisa ser rastreado pelo
sistema so tpicos para se construir um diagrama
de estados.
1. Identifique os estados relevantes para a classe.
2. Identifique os eventos relevantes. Para cada
evento, identifique qual a transio que ele
ocasiona.
3. Para cada estado: identifique as transies
possveis quando um evento ocorre.
4. Para cada estado, identifique os eventos internos
e aes correspondentes.
5. Para cada transio, verifique se h fatores
que influenciam no seu disparo. (definio de
condies de guarda e aes).
6. Para cada condio de guarda e para cada
ao, identifique os atributos e ligaes que
esto envolvidos.
7. Defina o estado inicial e os eventuais
estados finais.
8. Desenhe o DTE.
Os DTEs podem ser construdos com base
nos diagramas de interao e nos diagramas
de classes.
Durante a construo do DTE para uma
classe, novos atributos e operaes podem
surgir.
Essas novas propriedades devem ser adicionadas
ao modelo de classes.
A construo de um DTE freqentemente leva
descoberta de novos atributos para uma
classe
principalmente atributos para servirem de
abstraes para estados.
o Alm disso, este processo de construo
permite identificar novas operaes na classe
pois os objetos precisam reagir aos
eventos que eles recebem.
O comportamento de um objeto varia em
funo do estado no qual ele se encontra.
Pode ser necessria a atualizao de uma ou
mais operaes de uma classe para refletir o
comportamento do objetos em cada estado.
Por exemplo, o comportamento da operao
sacar() da classe ContaBancria varia em
funo do estado no qual esta classe se
encontra
saques no podem ser realizados em uma conta
que esteja no estado bloqueada.

Das könnte Ihnen auch gefallen