Buscar

6 UML DiagramasColaboracao

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Unified Modeling Language
Diagramas de Colaboração
José Correia, Maio 2006
(http://paginas.ispgaya.pt/~jcorreia/)
José Correia UML - Diagramas de Colaboração 2
Interacções
? Sempre que existe uma ligação (link) entre instâncias, pode ocorrer 
uma ou mais interacções
• uma interacção é a especificação do comportamento de um conjunto de 
instâncias, representado pela sua troca de mensagens, num determinado 
contexto, e com vista à concretização de um dado objectivo
? Pode-se encarar um diagrama de objectos como a representação dos 
aspectos estáticos de uma interacção
? Contudo, uma interacção vai mais longe, ao introduzir uma sequência 
dinâmica de mensagens que podem fluir entre esses objectos
? Desta forma, os diagramas de interacção podem ser considerados 
como uma extensão dos diagramas de objectos
José Correia UML - Diagramas de Colaboração 3
Diagramas de Colaboração
? Um diagrama de colaboração é um grafo...
... com objectos (instâncias de classes)
... e ligações (instâncias de associações)
... através das quais fluem mensagens numeradas
José Correia UML - Diagramas de Colaboração 4
Notação
? Um rectângulo representa um objecto
• instância de uma classe
? As linhas de um objecto para outro representam ligações
• instâncias de associações entre as classes
? As setas representam mensagens
• enviadas de um objecto para outro
? Os números de sequência indicam a ordem de transmissão das 
mensagens
José Correia UML - Diagramas de Colaboração 5
Diagramas de colaboração vs.
outros diagramas
? Os diagramas de colaboração transmitem a mesma informação que 
os diagramas de sequência, mas...
... em vez dos tempos em que as mensagens são enviadas
... dão ênfase à estrutura organizacional dos objectos que enviam e 
recebem mensagens
? Um diagrama de colaboração não mostra o tempo como uma 
dimensão separada
• a sequência de interacções é representada usando-se números
? Diagrama de Colaboração = Diagrama de Objectos + Diagrama de Sequência
José Correia UML - Diagramas de Colaboração 6
Mensagens
? As setas representam mensagens
• a recepção de uma mensagem traduz-se na chamada de uma operação 
no objecto receptor
- cf. com Diagramas de Classes
? Num diagrama de colaboração, cada mensagem tem um número de 
sequência
• a mensagem de nível mais elevado tem o número 1
• as mensagens ao mesmo nível (enviadas durante a mesma chamada), 
têm o mesmo prefixo decimal, mas sufixos de 1, 2, ...N, de acordo com a 
altura em que ocorrem
? As mensagens podem estar encadeadas
• encadeamento das operações respectivas
José Correia UML - Diagramas de Colaboração 7
1: ret:=msg(args)
Mensagens (cont.)
? As mensagens fluem (passam) através de ligações entre objectos
• as ligações são usadas para transportar ou, de alguma forma, 
implementar a distribuição de mensagens
• as ligações funcionam para as mensagens como canais de comunicação
? O fluxo (passagem) de uma mensagem é indicado por uma seta, do 
emissor para o receptor, acompanhada de uma string com
• número de sequência da mensagem seguido do separador “:”
• nome da mensagem e argumentos entre parêntesis
? Recordar (diagramas de sequência...) que há 3 tipos de mensagens
• síncronas, assíncronas e indiferenciadas
José Correia UML - Diagramas de Colaboração 8
Tipos de Ligações
? Para além das ligações que representam instâncias de associações, 
pode ser necessário indicar ligações mais dinâmicas
? Em qualquer extremo de uma ligação, pode-se indicar o tipo de 
ligação (do ponto de vista do objecto no outro extremo) através de um 
estereótipo
• «association» - instância de associação
- tipo de ligação por omissão
• «parameter» - parâmetro de operação do objecto que faz a chamada
• «local» - variável local de operação do objecto que faz a chamada
• «global» - variável global
- usada pelo objecto no outro extremo da ligação
• «self» - auto-ligação
- para enviar mensagens para o próprio
José Correia UML - Diagramas de Colaboração 9
Fluxo de controlo plano (flat)
? Caso em que há uma sequência simples de mensagens 
indiferenciadas, numeradas 1, 2, ... N
? Exemplo: comunicação telefónica
quem chama: Pessoa
: Linha telefónica
1: levanta auscultador
3: marca(1)
5: marca(1)
6: marca(2)
12: poisa auscultador
quem é chamado:Pessoa
2: dá sinal de marcar
4: termina sinal de marcar
7: dá sinal de chamada
9: pára sinal de chamada
11: dá sinal de conexão terminada
7: toca o telefone
9: pára de tocar
8: levanta auscultador
10: poisa auscultador
José Correia UML - Diagramas de Colaboração 10
Exemplo: Comprar bebida
? Nota: O Rational Rose e outras ferramentas que suportam UML, geram os 
diagramas de colaboração automaticamente a partir dos diagramas de 
sequência
 : Interface
 : Cliente
 : Registradora
 : Dispensa
3: Guardar(dinheiro)
7: Troco(dinheiro)
4: Pedir(tipoBebida)
5: Entregar(bebida)
1: Inserir(dinheiro)
2: Selecionar(tipoBebida)
6: Entregar(bebida)
8: DevolveTroco(dinheiro)
José Correia UML - Diagramas de Colaboração 11
Exemplo: Envio/Recepção de faxes
Emissor : 
Maq Fax
 : 
Central
Receptor : 
Maq Fax
1: enviar(numero)
6: desligar
4: LigacaoEstabelecida()
9: ImprimirReportConfirmacao()
5: enviar(fax) 2: estabelecerLigacao()
7: ConexaoTerminada()
3: LigacaoEstabelecida()
8: ConexaoTerminada()
José Correia UML - Diagramas de Colaboração 12
Dinâmica de Objectos e Ligações
? Existem restrições standard que podem ser usadas para ilustrar o 
momento da criação ou destruição de objectos / ligações durante a 
execução duma interacção
• {new} – objecto/ligação criado durante a interacção
• {destroyed} – objecto/ligação destruído durante a interacção
• {transient} – criado e seguidamente destruído durante a interacção
• notação: colocar a restrição junto do objecto ou ligação pretendido
? Um objecto pode mudar de estado (valores de atributos e ligações) 
durante a execução duma interacção
• notação: ligar réplicas do objecto com a mensagem «become»
p: Pedido
estado=“Pendente”
1:tratar() p: Pedido
estado=“Satisfeito”
1.1: «become»
José Correia UML - Diagramas de Colaboração 13
Fluxo de controlo encaixado (nested)
? Caso em que há sub-sequências de mensagens numeradas de forma 
hierárquica (com ponto)
• pode iniciar uma sub-sequência de mensagens
• também aplicável entre objectos activos concorrentes, quando um deles envia um 
sinal e espera que uma sub-sequência de comportamento se complete no outro
? Exemplo:
? “Aplanado”:
1: f() 1.1: criar()
1.2: g()
ob2:C2 ob3:C3
2: h()
{new}
«self»
ob1:C1
1: f() 2: criar()
3: g()
ob2:C2 ob3:C3
4: h()
{new}
«self»
ob1:C1
auto-ligação (para 
enviar mensagens 
para o próprio)
José Correia UML - Diagramas de Colaboração 14
Exemplo: Tratar Pedido de Stock
«local»
:Janela de Selecção de Pedidos
: Pedido
: Linha de Pedido
e1:Encomenda
: Item de Stock
e2: Encomenda
«self»
{new}
{new}
{new} {new}
1: tratar()
1.1.2.1: 
b:=baixo?()
1.1: * tratar()
1.1.1: e :=existe?(q)
1.1.2: [e=“sim”] retirar(q)
1.1.3: [e=“não”] criar()
1.1.2.2: [b=“sim”] criar()
José Correia UML - Diagramas de Colaboração 15
Exemplo: Reserva num hotel
José Correia UML - Diagramas de Colaboração 16
Fluxo de controlo concorrente
? Caso em que há múltiplos fios (threads) de controlo, em múltiplos 
objectos activos concorrentes que trocam entre si mensagens 
assíncronas
? Sequências concorrentes são designadas por letras (A, B, ...)
• a sequência principal não leva nenhuma letra
- é como se tivesse letra dummy
? Uma mensagem pode ter uma parte inicial, chamada predecessor, 
constituída por uma lista de nºs de sequência de mensagens 
precedentes (de outros fios de controlo)
• os elementosda lista são separados por vírgula e a lista é terminada com 
“/”
• Exemplo: A3,B4 / C3:update()
- mensagem C3 é a seguir às mensagens A3 e B4 (explicitamente) e a seguir à
mensagem C2 (implicitamente)
José Correia UML - Diagramas de Colaboração 17
Exemplo:
Transacção com subtransacções concorrentes
t : Transacção
s1:
Subtransacção
{transient}
{transient}
s2: 
Subtransacção
{transient}
«self»
«self»
«self»
A2:ok
1/ A1:criar
1:criar
1/B1:criar
A2/1.1: f:=restam subtransacções?
B2:ok
A3:destruir
B3:destruir
B2/1.2: f:=restam subtransacções?
Mensagem assíncrona que 
inicia fluxo de controlo leva 
a letra do novo fluxo de 
controlo
José Correia UML - Diagramas de Colaboração 18
Tipos de Objectos
? Objecto passivo (situação normal) – objecto que contém dados, mas 
não inicia actividade de controlo; pode enviar mensagens enquanto 
processa um pedido recebido
• Notação: rebordo normal
? Objecto activo – objecto que possui um processo ou fio de controlo 
(thread) e pode iniciar actividade de controlo
• Notação: rebordo espesso
• Podem-se indicar estereótipos «process» e «thread»
? Actor – objecto externo que normalmente inicia uma interacção
• Notação: ícone de pessoa
? Objecto composto – objecto que agrega outros objectos 
(componentes) por relação de composição
• Notação: objectos componentes e ligações entre componentes dentro do 
objecto composto
José Correia UML - Diagramas de Colaboração 19
Exemplo mais avançado: Forno robotizado
:OvenMgr
:Robot :Oven
:Factory Scheduler
: Factory Manager
curJob:TransferJob
job
job«local»
:OvenDoor
:Factory JobMgr
:RobotMgr
:RobotArm
1: start(job)
1/ B1: start(job)
A2,B2/ 2: completed(job)
1/ A1: start(job)
B4: completed(job) A5: completed(job)
A2: openDoor
B3/A4: closeDoor
A3/B2:takeMaterial
(job.location)
A3: ready
B3: done
José Correia UML - Diagramas de Colaboração 20
Diagramas de Colaboração: Resumo
? Capturam o comportamento dinâmico (message-oriented)
? Mostram interacções de objectos organizadas à volta de objectos e 
das ligações entre si
? O diagrama de colaboração dá mais ênfase ao relacionamento entre 
os objectos
? Objectivo:
• modelizar o fluxo de controlo
• ilustrar a coordenação da estrutura de objectos e controlo
• realçar o relacionamento estático entre os objectos
José Correia UML - Diagramas de Colaboração 21
Referências
Estes apontamentos foram baseados em:
? “UML – Unified Modeling Language”, Curso em Tecnologia de 
Objectos, FEUP, Novembro 2000
Ademar Aguiar, Gabriel David, João Pascoal Faria
? “UML – Diagramas de Interacção”, ISPGaya, Novembro 1998
César Toscano
? “Practical UML: A Hands-On Introduction for Developers”,
TogetherSoft Corporation
? “UML, Metodologias e Ferramentas CASE”, Alberto Rodrigues da 
Silva, Carlos Videira, Maio 2001

Outros materiais