Sunteți pe pagina 1din 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)

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

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

: Log

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

3 : registra("login", umaPessoa)

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 normal : Entregador oMensageiro : Mensageiro

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

[caso contrrio]

2 : despacha()

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

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

S-ar putea să vă placă și