Baixe o app para aproveitar ainda mais
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
Compartilhar