Você está na página 1de 18

Diagrama de Seqncia

Viviane Torres da Silva viviane.silva@ic.uff.br http://www.ic.uff.br/~viviane.silva/2012.2/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 A condio entre [ ] a condio de execuo do 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 A condio entre [ ] a condio da deciso
If + else
alt [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 definio precisa de como ser o cdigo

Exerccio
Uma loja que vende roupas possui um sistema capaz de controlar a venda e o estoque. Cada roupa possui um preo, um cdigo e uma descrio. Um roupa pode possuir vrios exemplares. Cada exemplar tem um tamanho e uma cor associados. Os clientes da loja so cadastrados pelo nome e quando a venda realizada, o sistema guarda informao de qual(is) foi(foram) o(s) exemplar(es) vendido(s) para o cliente. Faa um diagrama de seqncia que modele um sistema capaz de respondendo as perguntas abaixo:
Quais so os cdigos de barra das roupas compradas por um cliente? Quais so os cliente que j compraram um exemplar da roupa com cdigo de barra 123? Quantos exemplares possuem a roupa com cdigo de barra 123? Qual o tamanho da roupa 123 comprada pela cliente Ana?

Exerccio 2 (parte I/II)


Um sistema de gerenciamento de submisses de artigos para um evento automatiza o processo de envio de artigos para o evento, de distribuio de artigos para os revisores, de envio das avaliaes sobre os artigos para os autores e de envio da verso final do artigo modificada de acordo com as avaliaes feitas pelos revisores. Vrios eventos podem ser gerenciados ao mesmo tempo. Cada evento possui um ttulo, um nico gerente, vrios revisores, vrios autores e composto por um conjunto de artigos submetidos para o evento. Um mesmo artigo s pode ser submetido para um nico evento. Todas as pessoas que acessam o sistema de gerenciamento de submisses de artigos possuem um nome, uma instituio qual pertencem, um email, um login e uma senha. Um artigo pode ser sido escrito por vrios autores, possui um ttulo, um resumo, um corpo de texto e uma rea. Todo artigo tem no mnimo 2 e no mximo 4 revisores e cada revisor pode fazer a reviso de at 3 artigos. Um revisor possui reas de expertise e s pode revisar os artigos destas reas. A reviso de um artigo feita por um revisor contm uma nota dada pelo revisor e um comentrio.

Exerccio 2 (parte II/II)


Seguindo este diagrama e adicionando os mtodos necessrios, faa um diagrama de seqncia para cada um dos itens abaixo representando todos os gets e sets necessrios. Revisor deseja alterar a nota da reviso do artigo cujo ttulo ES1. Gerente quer saber quais so os nomes dos autores que enviaram artigos para o evento cujo ttulo SBES. Gerente quer saber quais so os artigos cujas notas de reviso esto acima de 7,0 para todos os eventos dos quais gerente. Gerente quer saber quais so os ttulos dos artigos que cada um dos revisores do SBES pode revisar. (Dica: utilize uma instancia da classe que deseja realizar a tarefa para iniciar o diagrama de seqncia)
0..* Revisor 1..* 2..4 1 1..* 0..*

Pessoa +nome: String +instituicao: String +email: String +login: String +senha: Intger

Gerente 1 0..* Evento +titulo: String 0..* 0..* Autor

Revisao +nota: Intger +comentario: String 1..* Area +nome: String 1 0..* 0..3 0..* Artigo +titulo: String +resumo: String +corpo: String

0..*

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