Você está na página 1de 16

Diagrama de Seqncia

Viviane Torres da Silva


viviane.silva@ic.uff.br
http://www.ic.uff.br/~viviane.silva/2010.1/es1

O que ?
 Diagrama criado para modelagem da interao entre objetos
Detalha como objetos colaboram para implementar um cenrio de
caso de uso
til para ajudar na identificao dos mtodos das classes

 Caixas representando objetos


 Linhas verticais representando a vida do objeto
 Linhas horizontais representando troca de mensagens

Objetos
 Os objetos so de algum tipo definido no diagrama de classes
O nome de um objeto da forma nome : classe

 Em situaes onde um nome especfico no pode ser


identificado (ex.: pedro : Pessoa), utilize:
Um nome genrico (ex.: umaPessoa : Pessoa)
Um nome nico (ex.: aPessoa : Pessoa)
Ou omita o nome (ex.: : Pessoa)

 Uma linha pontilhada sai do objeto (linha de vida)


representando o momento da sua criao em diante
Quanto mais para baixo, mais tempo passou

pedro : Pessoa

Mensagens
 A interao entre objetos representada por mensagens
Para outros objetos
Para o mesmo objeto (auto-mensagem)

 Uma mensagem contm a assinatura do mtodo que est


sendo chamado
 Uma barra de ativao indica o escopo de execuo do
mtodo

Mensagens

umaPessoa : Pessoa

: ControleSeguranca

1 : login(umaPessoa): Boolean
2 : autentica(umaPessoa)

3 : registra("login", umaPessoa)

: Log

Mensagens
 Mensagem de criao
Aponta diretamente para o objeto e marcada com <<create>>

 Mensagem de retorno
Opcional, e normalmente omitida
Usa seta tracejada

 Marca de destruio
Indica o trmino da vida de um objeto com um X

Mensagens

Mas como representar um algoritmo mais complexo?


 Exemplo:
Para cada item de produto
Se o valor do produto for maior que
10000 ento
Despacha com cuidado
Caso contrrio
Despacha normalmente
Se precisa de confirmao
Envia confirmao

Repeties
 O diagrama de seqncia permite que repeties sejam feitas
durante o fluxo
 Para isso so utilizados quadros (frames) do tipo loop

loop
[para cada item de pedido]

Decises
 O diagrama de seqncia permite que decises sejam
tomadas durante o fluxo
 Para isso so utilizados quadros (frames) do tipo alt ou opt
com condies de guarda
alt

If + else

[item.valor > 10000]

[caso contrrio]

if
opt
[umPedido.precisaConfirmacao()]

Exemplo
umPedido : Pedido

cuidadoso : Entregador

loop
[para cada item de pedido]
alt
[item.valor > 10000]
1 : despacha()

[caso contrrio]

2 : despacha()

opt
[umPedido.precisaConfirmacao()]
3 : envia()

normal : Entregador

oMensageiro : Mensageiro

Outros quadros disponveis


 Alm dos quadros do tipo loop, opt e alt, existem outros
tipos, entre eles:
par: Contm vrios seguimentos e todos so executados em paralelo
region: Determina uma regio crtica, que deve ter somente uma
thread em execuo em um dado momento

Chamada sncrona x assncrona


 possvel utilizar dois tipos de chamada de mtodos no
diagrama de seqncia:
Chamada sncrona (seta cheia): a execuo fica bloqueada at o
retorno do mtodo
Chamada assncrona (seta vazia): a execuo continua em paralelo ao
mtodo que foi chamado (fork implcito)

Quando utilizar diagrama de seqncia?


 Para representar em alto nvel a interao entre diferentes
objetos visando atender a um caso de uso
 Para ajudar a encontrar os mtodos do diagrama de classes
 Cuidado: no use diagrama de seqncia...
Para mtodos muito simples (ex.: get e set)
Para definio precisa de como ser o cdigo

Exerccio
 Elabore um diagrama de seqncia para o algoritmo
Quicksort (verso ingnua)
Primeiro elemento da lista de entrada o piv
Cria outras duas listas com os elementos menores e maiores que o
piv
Ordena recursivamente as outras duas listas
Concatena a lista de menores ordenada, o piv e a lista de maiores
ordenada, criando a lista de sada ordenada

Bibliografia
 Fowler, Martin. 2003. UML Distilled: A Brief Guide to the
Standard Object Modeling Language. 3rd ed. Addison-Wesley
Professional.
 Vrias transparncias foram produzidas por Leonardo Murta
http://www.ic.uff.br/~leomurta

Você também pode gostar