Diagrama de sequencia

17

Click here to load reader

Transcript of Diagrama de sequencia

Page 1: Diagrama de sequencia

Diagrama de Seqüência

Leonardo Gresta Paulino Murta

[email protected]

Page 2: Diagrama de sequencia

O que é?

• Diagrama criado para modelagem a interação entre objetos

– Detalha como objetos colaboram para implementar um cenário de caso de uso

– Útil para ajudar na identificação dos métodos das classes

Leonardo Murta Diagrama de Seqüência 2

Page 3: Diagrama de sequencia

A 1 km de distância...

• Caixas representando objetos

• Linhas verticais representando a vida do objeto

• Linhas horizontais representando troca de mensagens

Leonardo Murta Diagrama de Seqüência 3

Page 4: Diagrama de sequencia

A 1 metro de distância...dos objetos

• Os objetos são de algum tipo definido no diagrama de classes– O nome de um objeto é da forma nome : classe

• Em situações onde um nome específico não pode ser identificado (ex.: pedro : Pessoa), utilize:– Um nome genérico (ex.: umaPessoa : Pessoa)

– Um nome único (ex.: aPessoa : Pessoa)

– Ou omita o nome (ex.: : Pessoa)

• Uma linha pontilhada sai do objeto representando o momento da sua criação em diante– Quanto mais para baixo, mais tempo passou

Leonardo Murta Diagrama de Seqüência 4

pedro : Pessoa umaPessoa : Pessoa

Page 5: Diagrama de sequencia

A 1 metro de distância...Das mensagens

• A interação entre objetos é representada por mensagens– Para outros objetos– Para o mesmo objeto

(auto-mensagem)

• Uma mensagem contém a assinatura do método que está sendo chamado

• Uma barra de ativação indica o escopo de execução do método

Leonardo Murta Diagrama de Seqüência 5

umaPessoa : Pessoa : ControleSeguranca : Log

1 : login(umaPessoa): Boolean

2 : autentica(umaPessoa)

3 : registra("login", umaPessoa)

Page 6: Diagrama de sequencia

A 1 metro de distância...Das mensagens

• Mensagem de criação– Aponta diretamente para

o objeto e é marcada com <<create>>

• Mensagem de retorno– Opcional, e normalmente

é omitida

– Usa seta tracejada

• Marca de destruição– Indica o término da vida

de um objeto com um “X”

Leonardo Murta Diagrama de Seqüência 6

Page 7: Diagrama de sequencia

Mas como representar um algoritmo mais complexo?

• Exemplo:

Para cada item de produto

Se o valor do produto for maior que 10000 então

Despacha com cuidado

Caso contrário

Despacha normalmente

Se precisa de confirmação

Envia confirmação

Leonardo Murta Diagrama de Seqüência 7

Page 8: Diagrama de sequencia

Repetições

• O diagrama de seqüência permite que repetições sejam feitas durante o fluxo

• Para isso são utilizados quadros (frames) do tipo loop

Leonardo Murta Diagrama de Seqüência 8

loop

[para cada item de pedido]

Page 9: Diagrama de sequencia

Decisões

• O diagrama de seqüência permite que decisões sejam tomadas durante o fluxo

• Para isso são utilizados quadros (frames) do tipo altou opt com condições de guarda

Leonardo Murta Diagrama de Seqüência 9

opt

[umPedido.precisaConfirmacao()]

alt

[item.valor > 10000]

[caso contrário]

Page 10: Diagrama de sequencia

Exemplo

Leonardo Murta Diagrama de Seqüência 10

loop

[para cada item de pedido][para cada item de pedido]

alt

[item.valor > 10000]

[caso contrário]

[item.valor > 10000]

[caso contrário]

opt

[umPedido.precisaConfirmacao()][umPedido.precisaConfirmacao()]

umPedido : Pedido cuidadoso : Entregador normal : Entregador oMensageiro : Mensageiro

1 : despacha()

2 : despacha()

3 : envia()

Page 11: Diagrama de sequencia

Outros quadros disponíveis

• Além dos quadros do tipo loop, opt e alt, existem outros tipos, entre eles:

– par: Contém vários seguimentos e todos são executados em paralelo

– region: Determina uma região crítica, que deve ter somente uma thread em execução em um dado momento

Leonardo Murta Diagrama de Seqüência 11

Page 12: Diagrama de sequencia

Chamada síncrona x assíncrona

• É possível utilizar dois tipos de chamada de métodos no diagrama de seqüência:– Chamada síncrona (seta cheia): a

execução fica bloqueada até o retorno do método

– Chamada assíncrona (seta vazia): a execução continua em paralelo ao método que foi chamado (fork implícito)

Leonardo Murta Diagrama de Seqüência 12

Page 13: Diagrama de sequencia

Quando usar diagrama de seqüência?

• Para representar em alto nível a interação entre diferentes objetos visando atender a um caso de uso

• Para ajudar a encontrar os métodos do diagrama de classes

• Cuidado: não use diagrama de seqüência...

– Para métodos muito simples (ex.: get e set)

– Para definição precisa de como será o código

Leonardo Murta Diagrama de Seqüência 13

Page 14: Diagrama de sequencia

Exercício rápido

• Qual diagrama utilizar para enxergar:

– Os processos de negócio do cliente?

– As possibilidades de interação entre o cliente e o sistema?

– O detalhamento de uma determinada possibilidade de interação entre o cliente e o sistema?

– A estrutura das várias classes de objetos do sistema?

– O comportamento de um objeto no decorrer da sua vida?

– A interação entre os diferentes objetos do sistema para atender a alguma funcionalidade do sistema?

Leonardo Murta Diagrama de Seqüência 14

Page 15: Diagrama de sequencia

Exercício

• Elabore um diagrama de seqüência para o algoritmo Quicksort (versão ingênua)

– 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 saída ordenada

Leonardo Murta Diagrama de Seqüência 15

Page 16: Diagrama de sequencia

Bibliografia

• Fowler, Martin. 2003. UML Distilled: A Brief Guide to the Standard Object Modeling Language. 3rd ed. Addison-Wesley Professional.

Leonardo Murta Diagrama de Seqüência 16

Page 17: Diagrama de sequencia

Diagrama de Atividades

Leonardo Gresta Paulino Murta

[email protected]