Aula10 diagrama colaboracao

Portal_do_estudante_ADS 1,045 views 7 slides Nov 13, 2012
Slide 1
Slide 1 of 7
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7

About This Presentation

No description available for this slideshow.


Slide Content

UML – Diagramas de Colaboração
UZeferino Saugene MSc. ([email protected])
UDr. Edgar Gemo ([email protected])
Questões
UO que são diagramas de colaboração?
UEm que situações se utilizam diagramas de colaboração?
UQue relação existe entre os diagramas de sequência e os 
diagramas de colaboração?
UQue tipos de fluxo de controlo podem ser representados 
num diagrama de colaboração?
UComo é que se representam processos e comunicação entre 
processos num diagrama de colaboração?

Introdução
UDiagramas de colaboração e diagramas de sequência são 
colectivamente designados diagramas de interacção
UUm diagrama de interacção mostra um padrão de interacção 
entre vários objectos, com objectos e mensagens trocadas entre 
esses objectos por uma certa ordem num determinado âmbito 
(caso de uso, operação, etc.)
UOs diagramas de colaboração dão ênfase à estrutura 
organizacional dos objectos que enviam e recebem mensagens, 
enquanto que os diagramas de sequência dão ênfase àordem 
temporal das mensagens
UDiagrama de colaboração = diagrama de objectos + diagrama de 
sequência
UUm 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 mensagensnumeradas
Tipos de objectos em diagramas de 
colaboração
UObjecto passivo - objecto que contém dados, mas não inicia 
actividade de controlo; pode enviar mensagens enquanto 
processa um pedido recebido
• Notação: rebordo normal
UObjecto 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»
UActor - objecto externo que normalmente inicia uma interacção
• Notação: ícone de pessoa
UObjecto 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

Tipos de ligações em diagramas de 
colaboração
UComo todas as mensagens têm de passar por 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
UAssim, 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 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)
Dinâmica de objectos e ligações
UObjectos e ligações podem ser criados e/ou destruídos 
durante a execução duma interacção
• Notação: junto de um objecto ou ligação indicar
- {new} - criado durante a interacção
- {destroyed} - destruído durante a interacção
- {transient} - criado e destruído durante a interacção
UUm objecto pode mudar de estado (valores de atributos e 
ligações) durante a execução duma interacção
• Notação: replicar o objecto, ligando as réplicas com mensagem 
«become»
• Exemplo:
p: Pedido
estado=“Pendente”
1:tratar() p: Pedido
estado=“Satisfeito”
1.1: «become»

Mensagens
fAs mensagens fluem (passam) através de ligações entre objectos
• Ligações são usadas para transportar ou de alguma forma implementar a
distribuição de mensagens 
• Ligações funcionam para as mensagens como canais de comunicação 
fO 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
fHá 3 tipos de fluxos de controlo, correspondentes a diferentes 
tipos de mensagens e sistemas de numeração:  plano, encaixado e 
assíncrono
fValores de retorno e argumentos de uma mensagem também 
podem ser indicados com fluxos de dados
ret
1: msg
args
1: ret:=msg(args)ou
Fluxo de controlo plano (flat)
fCaso em que há uma sequência simples de mensagens 
indiferenciadas, numeradas 1, 2, etc. 
fTipo de seta:                      (mensagem indiferenciada)
fExemplo: comunicação telefónica
quem chama: Pessoa
: Linha telefónica
1: levanta auscultador
3: marca(5)
5: marca(1)
6: marca(1)
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

Fluxo de controlo encaixado 
(nested)
fCaso em que há sub-sequências de mensagens numeradas de 
forma hierárquica (com ponto)
fTipo de seta:                        (mensagem síncrona)
• Pode iniciar uma sub-sequência de mensagens
• Aplicada normalmente com chamadas de procedimentos ordinárias
• 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
fExemplo:
f“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
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()

Fluxo de controlo assíncrono
UCaso em que há múltiplos fios (threads) de controlo, em múltiplos 
objectos activos concorrentes que trocam entre si mensagens 
assíncronas
UTipo de seta:                      (mensagem assíncrona)
USequências concorrentes são designadas por letras (A, B, etc.)
• a sequência principal não leva nenhuma letra (como se tivesse letra dummy)
UUma 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 elementos da 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)
Exemplo: Executar transacção com 
subtransacções concorrentes
t : Transacção
s2: 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 fio de controlo leva 
a letra do novo fio de 
controlo

Exemplo: 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)
A5,B4/ 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
Exercício 1: Cancela automática
U(ES, 9/1/98) Um parque de estacionamento dispõe de um cancela 
automática para saída de viaturas, ligada a um sensor de veículos 
sob a cancela e uma maquineta com ranhura para introdução de 
cartão de estacionamento e mostrador de mensagens. A saída de 
uma viatura processa-se normalmente da seguinte forma: 
• O condutor dirige a sua viatura para junto da cancela e introduz o cartão de 
estacionamento na ranhura disponível para o efeito na maquineta. No caso do 
cartão estar em situação regular (estacionamento pago e não foi  excedido  o 
tempo  disponível  para  a  saída  após  o  pagamento),  afixa  a  mensagem  "Boa 
viagem" no mostrador, e envia uma ordem de levantamento para a cancela. A 
maquineta  espera  então  receber  do  sensor  de  veículos  sob  a  cancela  uma 
sequência de notificações de activação e desactivação, após o que envia uma 
ordem de descida para a cancela e volta à situação inicial.
UModelize este comportamento através de um diagrama de 
colaboraçãoem UML. Represente o sistema (cancela, sensor e 
maquineta) por um objecto composto.
Tags