Aula10 diagrama colaboracao

638 visualizações

Publicada em

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
638
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
10
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Aula10 diagrama colaboracao

  1. 1. UML – Diagramas de Colaboração Zeferino Saugene MSc. (zsaugene@ustm.ac.mz) Dr. Edgar Gemo (errgemo@ustm.ac.mz)Questões O que são diagramas de colaboração? Em que situações se utilizam diagramas de colaboração? Que relação existe entre os diagramas de sequência e os diagramas de colaboração? Que tipos de fluxo de controlo podem ser representados num diagrama de colaboração? Como é que se representam processos e comunicação entre processos num diagrama de colaboração?
  2. 2. Introdução Diagramas de colaboração e diagramas de sequência são colectivamente designados diagramas de interacção Um 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.) Os 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 Diagrama de colaboração = diagrama de objectos + diagrama de sequência 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 numeradasTipos de objectos em diagramas decolaboração Objecto 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 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
  3. 3. Tipos de ligações em diagramas decolaboração Como 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 Assim, 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 Objectos 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 Um 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: 1:tratar() p: Pedido 1.1: «become» p: Pedido estado=“Pendente” estado=“Satisfeito”
  4. 4. Mensagens As 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 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 Há 3 tipos de fluxos de controlo, correspondentes a diferentes tipos de mensagens e sistemas de numeração: plano, encaixado e assíncrono Valores de retorno e argumentos de uma mensagem também podem ser indicados com fluxos de dados 1: msg 1: ret:=msg(args) ou args retFluxo de controlo plano (flat) Caso em que há uma sequência simples de mensagens indiferenciadas, numeradas 1, 2, etc. Tipo de seta: (mensagem indiferenciada) Exemplo: comunicação telefónica quem chama: Pessoa 2: dá sinal de marcar 1: levanta auscultador 4: termina sinal de marcar 3: marca(5) 7: dá sinal de chamada 5: marca(1) 9: pára sinal de chamada 6: marca(1) 11: dá sinal de conexão terminada 12: poisa auscultador : Linha telefónica 8: levanta auscultador 7: toca o telefone 10: poisa auscultador 9: pára de tocar quem é chamado:Pessoa
  5. 5. Fluxo de controlo encaixado(nested) Caso em que há sub-sequências de mensagens numeradas de forma hierárquica (com ponto) Tipo 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 Exemplo: {new} ob1:C1 ob2:C2 ob3:C3 1: f() 1.1: criar() «self» 2: h() 1.2: g() “Aplanado”: {new} ob1:C1 ob2:C2 ob3:C3 1: f() 2: criar() «self» 4: h() 3: g()Exemplo: Tratar pedido de stock :Janela de Selecção de Pedidos 1: tratar() «local» : Pedido 1.1: * tratar() {new}e2: Encomenda {new} : Linha de Pedido 1.1.3: [e=“não”] criar() 1.1.1: e :=existe?(q) 1.1.2: [e=“sim”] retirar(q) : Item de Stock 1.1.2.1: b:=baixo?() «self» {new} 1.1.2.2: [b=“sim”] criar() e1:Encomenda {new}
  6. 6. Fluxo de controlo assíncrono Caso em que há múltiplos fios (threads) de controlo, em múltiplos objectos activos concorrentes que trocam entre si mensagens assíncronas Tipo de seta: (mensagem assíncrona) Sequências concorrentes são designadas por letras (A, B, etc.) • 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 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 A3:destruir 1/ A1:criar {transient}Mensagem assíncrona queinicia fio de controlo leva s2: Subtransacçãoa letra do novo fio de A2:ok «self»controlo 1:criar {transient} A2/1.1: f:=restam subtransacções? t : Transacção B2/1.2: f:=restam subtransacções? «self» {transient} B3:destruir 1/B1:criar s2: Subtransacção B2:ok «self»
  7. 7. Exemplo: Forno robotizado : Factory Manager :Factory Scheduler job 1: start(job) curJob:TransferJob A5,B4/ 2: completed(job) «local» job :Factory JobMgr 1/ B1: start(job) 1/ A1: start(job) B4: completed(job) A5: completed(job) :Robot A3: ready :Oven :RobotMgr :OvenMgr B3: done A2: openDoor A3/B2:takeMaterial (job.location) B3/A4: closeDoor :RobotArm :OvenDoorExercício 1: Cancela automática (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. Modelize este comportamento através de um diagrama de colaboração em UML. Represente o sistema (cancela, sensor e maquineta) por um objecto composto.

×