Diagramas de Colaboração

Introdução
- Dois tipos de diagramas podem ser usados para mostrar as interações (mensagens) entre
objetos
- Diagramas de Sequência
- Diagramas de Colaboração
- Os dois tipos de diagramas são chamados diagramas de interação
- O objetivo é de mostrar como as pós-condições dos contratos serão realizadas
- O diagrama de sequência é mais simples de usar quando se deseja mostrar apenas as
sequências de interações
- O diagrama de colaboração é mais adequado quando se deseja expressar mais detalhes da
colaboração entre objetos
- Exemplo de um diagrama de sequência:

- Exemplo de um diagrama de colaboração

- No exemplo acima:
- A mensagem façaPagamento é enviada a uma instância de uma TPDV
- O TPDV envia a mensagem façaPagamento a uma instância de Venda
- O objeto da classe Venda cria uma instância de um Pagamento
Sobre a importância de diagramas de interação
- Uma das coisas mais difíceis de fazer no projeto de um sistema é a atribuição de responsabilidades a objetos e a consequente
colaboração entre objetos
- Os diagramas de interação ajudam muito a construir o sistema e uma boa parcela do
tempo deve ser dedicado à sua construção
- É principalmente aqui que bons princípios de projeto
serão usados
- Esta seção discute apenas a notação empregada em
diagramas de colaboração
- Seções subsequentes tratarão da distribuição de responsabilidades entre objetos e
apresentar padrões de projeto
Como criar diagramas de colaboração
- Criar um diagrama separado para cada operação do sistema sendo desenvolvida na
iteração corrente.
Para cada mensagem de operação do sistema, um diagrama é consttuído com essa mensagem
inicial
- Se o diagrama ficar complexo (não cabe numa única página), quebre-o em diagramas
menores
- Usando o contrato das operações (principalmente as pós-condições) e os Use Cases
como ponto de partida, projete um sistema de objetos interagindo entre si para realizar as
tarefas. Aplique padrões de projeto para desenvolver um bom projeto
Relação entre diagramas de colaboração e outros artefatos

- O Use Cases sugerem os eventos do sistema, os quais são mostrados explicitamente nos
diagramas de sequência do sistema
- Uma primeira aproximação do efeito das operações do sistema é descrita nos
contratos
- As operações do sistema são mensagens que iniciam um diagrama de interação, o qual
ilustra como os objetos realizam a tarefa
Notação básica para diagramas de colaboração
Classe e instâncias

Links
- Um link é uma conexão entre dois objetos
- É uma instância de uma associação
- Indica alguma forma de navegabilidade e visibilidade

Mensagens
- Observe o número de sequência das mensagens

Parâmetros
- O tipo do parâmetro é opcional

Valor de retorno

Sintaxe de mensagem
- Pode-se usar a sintaxe UML (como acima) ou de outra linguagem (Java, por exemplo)
Mensagens a "this"

Iteração
- A iteração é mostrada com um número de sequência e um *
- A mensagem é enviada repetidamente

- Valores de recorrência podem ser incluídos

- Mais de uma mensagem pode ser enviada na iteração

Criação de instâncias
- A mensagem de criação independente de linguagem é "create"
- O estereótipo «new» pode ser usado

Sequenciamento de mensagens
- A primeira mensagem não é numerada

- Tem várias alternativas para numerar as demais mensagens, incluindo um esuqema
hierárquico

Mensagens condicionais
- A mensagem só é enviada se o teste resultar em TRUE

Caminhos condicionais mutuamente exclusivos

Coleções
- Um conjunto de instâncias (multiobjeto)

Mensagens para coleções
- Na UML 1.1, uma mensagem enviada para uma coleção vai para o objeto-coleção e não
para todos os objetos da coleção
- Na UML 1.0, a mensagem ia para todos os objetos

- Outros exemplos de mensagens para objetos e coleções

Mensagens para a classe (métodos estáticos)
- Classe não está sublinhada

proj1-4 programa anterior
próxima