PSOO - 2021-02 - Diagrama de Sequência.pptx

JooPedroLopes42 5 views 19 slides Oct 24, 2025
Slide 1
Slide 1 of 19
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19

About This Presentation

teste


Slide Content

Projeto de Software Orientado a Objetos Diagrama de Sequencia Prof. André Lucio

Diagrama de Sequência Os Diagramas de Sequência são usados para modelar a interação entre os objetos. Em outras palavras, esses diagramas modelam a troca de mensagens entre os objetos , ou seja, ajudam a definir os comportamentos (métodos) das classes.

Diagrama de Sequência Os Diagramas de Sequência podem ser usados para apoiar a identificação de classes, atributos e métodos necessários para implementar os casos de uso em um sistema orientado a objetos. Assim, com o apoio dos Diagramas de Sequência o modelo de classes elaborado inicialmente vai evoluindo até um modelo de classes de implementação. Os Diagramas de Sequência são, normalmente, usados durante a transição da Análise OO para o Projeto OO e na própria fase de Projeto OO.

Diagrama de Sequência O Diagrama de Sequência modela a troca de mensagens entre objetos tendo por base uma linha de tempo , ou seja, a ordem em que as mensagens são enviadas é capturada nesse diagrama. Tempo

Diagrama de Sequência Mensagens modelam responsabilidades e se transformarão, ao final da fase de projeto, em métodos das classes. Objetos Mensagem síncrona Mensagem reflexiva Retorno Condição de guarda Mensagem com retorno Linha de vida Tempo

Diagrama de Sequência Sintaxe geral das mensagens: *[condição] valor := mensagem (parâmetro:tipo) : tipo onde: mensagem É o nome da mensagem enviada para o outro objeto (único elemento obrigatório). valor É uma "variável" que vai receber o valor retornado pela mensagem. parâmetro É um valor enviado na mensagem (podem existir zero ou vários parâmetros). tipo É o tipo do parâmetro ou do retorno da mensagem. condição É uma expressão booleana que define se a mensagem vai ou não ser enviada. * É um marcador que indica que a mensagem será enviada enquanto a condição for verdadeira (loop).

Diagrama de Sequência Exemplos: calcularSalario() aumentarSalario(percentual) [percentual > 0] aumentarSalario(percentual) novoSalario := aumentarSalario(percentual) : float [percentual > 0] novoSalario := aumentarSalario(percentual) *[existe item] registrarItem(código, quantidade)

Diagrama de Sequência Existem duas formas de modelar o valor retornado pela mensagem: Retorno (seta pontilhada) Atribuição (:=)

Diagrama de Sequência Mensagem síncrona (seta preenchida) é aquela em que o objeto chamador envia a mensagem para outro objeto e fica aguardando o retorno do objeto chamado antes de prosseguir. Processamento mono thread : apenas um objeto está em execução em um dado momento. Mensagem assíncrona (seta sem preenchimento) é aquela em que o objeto chamador envia a mensagem para outro objeto e continua o processamento sem aguardar o retorno do objeto chamado. Processamento multi thread : vários objetos podem estar em execução em um dado momento.

Diagrama de Sequência Quando as mensagens são síncronas, apenas um objeto está em execução em determinado momento no tempo: Tempo

Diagrama de Sequência Quando as mensagens são síncronas, apenas um objeto está em execução em determinado momento no tempo: Tempo

Diagrama de Sequência Traduzindo essas mensagens para chamadas de métodos na linguagem Java: cc.recuperarSaldo(); this.somarRendimentos(); if (saldo > 0) ok = cc.transferir(contaDestino, valor); total = cc.recuperarRendimentos();

Diagrama de Sequência Para entender o cenário completo, imagine que o cliente recebeu a mensagem síncrona processa() : processa()

Diagrama de Sequência Nesse caso, as classes Cliente e ContaCorrente teriam os seguintes métodos: public class Cliente { public void processa() { cc.recuperarSaldo (); cc.recuperarRecibos ( dataInicial , dataFinal ); total = cc.recuperarRendimentos (); if (saldo > 0) ok = cc.transfere ( contaDestino , valor); } } public class ContaCorrente { public void recuperarSaldo () { } public void recuperarRecibos (Date dataIni , Date dataFim ) { } public float recuperarRendimentos () { total = this.somarRendimentos (); return total; } public void somarRendimentos () { } public boolean transfere( ContaCorrente destino, float valor) { } ... }

Diagrama de Sequência Uma alteração importante na UML 2.0 foi a introdução de frames e seus tipos . Frame: define um contexto parametrizável em um diagrama de sequência, possibilitando desvios de fluxo e também o seu reuso . <tipo> nome [<parâmetros>]

Diagrama de Sequência optional (opt) : define um bloco de mensagens que são enviadas somente se uma determinada condição for satisfeita (condição de guarda). Equivalente a um if-then. saldo = cc.recuperarSaldo(); if (saldo > 0) limite = cc.recuperarLimite(); imprimir(saldo, limite);

Diagrama de Sequência alternative (alt) : define blocos de mensagens que são enviadas se as condições associadas a cada um deles for satisfeita. Apenas um conjunto é executado. Equivalente a um if-then-elseif-then-elseif-then-elseif... saldo = cc.recuperarSaldo(); if (tipoConta == 'E') limite = cc.recuperarLimite(); else if (tipoConta == 'P') rendimento = recuperarRendimento(); imprimir(saldo, limite, rendimento);

Diagrama de Sequência break : equivalente ao opt , só que após a execução do bloco a execução de todo o diagrama é interrompida ( return ). saldo = cc.recuperarSaldo(); if (saldo < 0) { enviarMsg("Saldo insuficiente"); return; } imprimir(saldo);

Diagrama de Sequência loop : define um bloco de mensagens que são enviadas em loop. comprovantes = cc.recuperarComprovantesPagto(); for (Comprovante c in comprovantes) { pag = c.recuperarValorPago(); jur = c.recuperarJuros(); imprimir(pag, jur); }
Tags