Post on 13-Dec-2014
description
Prof. Marcello Thiry <marcello.thiry@gmail.com>
PROGRAMAÇÃO ORIENTADA A OBJETOS
Unidade 2 (parte 3)
3º período
marcello.thiry@gmail.com
2
marcello.thiry@gmail.com
3
Visão estática
Visão dinâmica
marcello.thiry@gmail.com
4
Visão estática
Visão dinâmica
marcello.thiry@gmail.com
Diagrama de Sequência
Diagrama Comportamental
Diagrama de Interação
Mostra a interação de objetos organizada no tempo
Permite visualizar a troca de mensagens entre os objetos
Mostra a implementação de uma ou mais “operações”
Mostra os “métodos” destas operações
5
marcello.thiry@gmail.com
6
Operações e mensagens
Uma mensagem é uma solicitação feita por um objeto cliente a um objeto fornecedor
Como resultado desta solicitação, o objeto fornecedor irá modificar seu estado ou irá retornar algum valor
Para invocar uma operação de um objeto, deve-se enviar uma mensagem para este objeto
6
marcello.thiry@gmail.com
7
Representação de uma mensagem...
marcello.thiry@gmail.com
8
Representação de uma mensagem...
Objetos que estão interagindo
marcello.thiry@gmail.com
9
Representação de uma mensagem...
Mensagem do objeto “cliente” para o objeto “fornecedor”
marcello.thiry@gmail.com
10
Representação de uma mensagem...
Mensagem do objeto “cliente” para o objeto “fornecedor” Sentido da mensagem
marcello.thiry@gmail.com
11
Representação de uma mensagem...
fornecedor.getSalarioBruto()
getSalarioBruto() é uma operação da classe “Funcionario”
marcello.thiry@gmail.com
12
Representação de uma mensagem...
cliente está invocando o método da operaçãogetSalarioBruto() que será executado pelo objeto fornecedor
marcello.thiry@gmail.com
Variável em cliente que recebe o resultado da execução
marcello.thiry@gmail.com
Notação para representar o retorno do controle da execução
(retorno da chamada)
marcello.thiry@gmail.com
controle da execução
Como funciona...
marcello.thiry@gmail.com
envio da mensagem
controle da execução
marcello.thiry@gmail.com
Executa
Acabou: retornar ocontrole
marcello.thiry@gmail.com
Retorno do controle da execução
marcello.thiry@gmail.com
O controle da execução retornou para o objeto que mandou a mensagem
marcello.thiry@gmail.com
Chamada de procedimento (mensagem síncrona)
marcello.thiry@gmail.com
Mensagens síncronas
Representa um fluxo de controle aninhado
Chamada a uma operação
Mensagem bloqueante
O objeto “cliente” fica esperando (bloqueado) pela execução da operação no objeto “fornecedor”
O objeto “cliente” só poderá fazer uma nova ação quando receber o controle de volta
21
marcello.thiry@gmail.com
Mensagens síncronas
Por ser uma mensagem bloqueante, utilizamos uma notação para indicar o retorno do controle ao objeto que originou a mensagem
22
marcello.thiry@gmail.com
23
Um exemplo...
marcello.thiry@gmail.com
24
Um exemplo...
objetos
marcello.thiry@gmail.com
25
Um exemplo...
tempo
marcello.thiry@gmail.com
26
Um exemplo...
Não interessamodelar quem chamou ou
para quem vai
marcello.thiry@gmail.com
27
Um exemplo...
marcello.thiry@gmail.com
28
Um exemplo...
marcello.thiry@gmail.com
29
Um exemplo...
Este diagrama mostra a implementação da operação (método)
consultarSaldo(int) da classe TerminalBancario
marcello.thiry@gmail.com
30
marcello.thiry@gmail.com
31
marcello.thiry@gmail.com
32
marcello.thiry@gmail.com
33
marcello.thiry@gmail.com
Por convenção, objetos são colocados da esquerda para a direita, conforme a participação deles na interação
Mas os objetos podem ser colocados em qualquer ordem
marcello.thiry@gmail.com
Linha de vida (Lifeline)
Representa um objeto que participa da interação
Não faz sentido definir multiplicidade
A linha de vida (linha tracejada) representa o tempo de vida do objeto
Somente objetos ainda vivos podem enviar e receber mensagens
- Notação para indicar que o objeto não existe mais- O objeto foi destruído
marcello.thiry@gmail.com
Foco de controle / Ativação
Indica os períodos em que o objeto participa ativamente da interação
Quando o objeto está executando um método
É possível ter dois objetos ativos ao mesmo tempo?
marcello.thiry@gmail.com
Os dois estão ativos!
Foco de controle / Ativação
marcello.thiry@gmail.com
Os dois estão ativos!
Foco de controle / Ativação
marcello.thiry@gmail.com
Auto-mensagem (self-message)
A mensagem é enviada para o próprio objeto
marcello.thiry@gmail.com
Auto-mensagem (self-message)
marcello.thiry@gmail.com
Auto-mensagem (self-message)
Duas auto-mensagenschamadas em sequência
marcello.thiry@gmail.com
Auto-mensagem (self-message)
Mostrando a implementação da auto-mensagem 1
Múltiplas camadasde ativação
marcello.thiry@gmail.com
Guarda (Guard)Representa uma
condição: a mensagem é enviada somente se a condição for atendida
marcello.thiry@gmail.com
Fragmento “alt” (alternativas)
marcello.thiry@gmail.com
Fragmento “alt” (alternativas)
Área executada se e somente se a condição for
verdadeira
marcello.thiry@gmail.com
Fragmento “alt” (alternativas)
marcello.thiry@gmail.com
Fragmento “alt” (alternativas)
SE
SENÃO, SE
SENÃO, SE
marcello.thiry@gmail.com
Fragmento “loop” (laços)
marcello.thiry@gmail.com
Fragmento “loop” (laços)
marcello.thiry@gmail.com
Fragmento “loop” (laços)
No mínimo, X vezes
No máximo, Y vezes
marcello.thiry@gmail.com
Criação de objetos
Construtor
O objeto “conta”pode receber e enviar mensagens
marcello.thiry@gmail.com
Referências52
Grady Booch, James Rumbaugh, and Ivar Jacobson. The Unified Modeling Language User Guide. 2nd ed. Addison-Wesley, 2005.
Ricardo Pereira e Silva. UML 2 em Modelagem Orientada a Objetos. Visual Books, 2007.
OMG (Object Management Group), OMG Unified ModelingLanguage v2.5, 2012. http://www.omg.org/spec/UML/2.5/Beta1/PDF/
marcello.thiry@gmail.com
Referências53
Martin Fowler. UML Distilled: A Brief Guide to the Standard Object Modeling Language. 3th ed. Addison-Wesley, 2003.
marcello.thiry@gmail.com
marcello.thiry@gmail.com