CBSI Curso de Bacharelado em Sistemas de Informação UML Diagramas de Interação Prof. Dr. Sandro Ronaldo Bezerra Oliveira srbo@ufpa.br www.ufpa.br/srbo Análise e Projeto de Sistemas Faculdade de Computação Instituto de Ciências e Exatas e Naturais Universidade Federal de Pará Objetivos Definição Notação Diagrama de Sequência Diagrama de Colaboração 1
Interações Interações mostram os aspectos dinâmicos de um sistema, enfatizando a troca de mensagens entre objetos. Interações são usadas para modelar o fluxo de controle para uma operação, uma classe, um componente, um subsistema, ou para um sistema inteiro. Dois digramas podem ser usada\os para modelar as interações: diagramas de sequência e diagramas de colaboração. Utilidades Modelar as interações em um sistema é uma das técnicas mais poderosas para a descoberta das classes e das operações do sistema. Diagramas de interação facilitam o entendimento de sistemas com comportamento complexo. Diagramas de interação são especialmente úteis para sistemas orientados a objetos porque a funcionalidade nesses sistemas geralmente é distribuída em muitas classes diferentes. 2
Objetos e papéis As interações acontecem entre objetos (ou outras instâncias) e não classes. Os objetos em uma interação podem ser concretos ou prototípicos um objeto concerto p da classe Pessoa pode representar uma pessoa real. um objeto prototípico p da classe Pessoa pode representar qualquer instância da classe Pessoa. Nos diagramas de interação, objetos que desempenham papéis diferentes podem ser modelados como objetos diferentes. Links Um link é uma coleção entre dois objetos, pela qual mensagens podem ser trocadas. Sempre que uma classe tiver uma associação com outra classe, pode haver um link entre os objetos dessas classes. Pessoa daraument o() alocar() + em pregado 1..* p: Pessoa alocar 0..* +empregador Empresa e: Empresa 3
Mensagens Definição formal: uma mensagem é a especificação de uma comunicação entre objetos, onde são passadas informações, com a esperança de que ocorra alguma atividade Na maioria das vezes, uma mensagem resulta na execução de uma operação Tipos principais de mensagens Chamada (Call) Retorno (Return) Envio (Send) Criação (Create) Destruição (Destroy) Tipos de Digramas de Interação Diagramas de Sequência Diagramas de Colaboração 4
Diagramas de Sequência Objetivo Um diagrama de sequência mostra uma interação, isto é, uma sequência de mensagens trocadas entre vários objetos num determinado contexto Enfatiza a comunicação e passagem de controle entre objetos ao longo do tempo. Útil para descrever uma sequência particular de funcionamento, mas não muitas sequências alternativas e ciclos nem ações realizadas por um objeto que não envolvem comunicação com outros objetos 5
Objetos e Linhas de Vida Cada objeto participante é representado por uma caixa em cima duma linha vertical a traço interrompido (linha de vida) Podem aparecer atores (objectos externos ao sistema), normalmente ao iniciar as interações O tempo cresce de cima para baixo objecto1:classe1 objecto2: :Classe3 mensagem Mensagens Uma mensagem é uma comunicação entre objetos (emissor e receptor) que veicula informação na expectativa de provocar uma resposta (ação ou atividade) Uma ação de um objeto capaz de provocar uma resposta em outro objeto pode ser modelada como uma mensagem do primeiro para o segundo objeto Uma mensagem é representada por uma seta horizontal, do emissor para o receptor, com o nome e possíveis argumentos Tipos de mensagens: síncrona - o emissor fica parado à espera de resposta corresponde tipicamente a chamada de operação/procedimento no receptor retorno de mensagem síncrona desnecessário indicar quando se usam barras de ativação 6
Mensagens assíncrona - o emissor não fica parado à espera de resposta corresponde tipicamente a envio de sinal entre dois objectos concorrentes simples ou indiferenciada - não se decide se é síncrona, de retorno ou assíncrona usadas normalmente na modelação de interacções na fronteira do sistema (entre actores e o sistema representado por um ou mais objectos) Criação e destruição de objetos Criação de objeto é representada por mensagem dirigida à própria caixa que representa o objeto (em vez de ser dirigida à linha de vida) Mensagem de criação pode ter estereótipo «create» ob1:c1 Destruição de objeto é representada por um X no fim da linha de vida do objecto Mensagem de destruição pode ter estereótipo «destroy» Pode ocorrer na recepção de mensagem ob1:c1 ou no retorno de chamada Objeto pode auto destruir-se 7
Mensagens condicionais, iteradas e com retorno O valor de retorno de uma mensagem síncrona pode ser indicado na chamada, com atribuição :=, ou na mensagem de retorno Exemplo: ret := msg(args) Nome ret será usado em mensagens e condições a seguir Também se escrever ret na mensagem de retorno Uma mensagem condicional é indicada por uma condição de guarda entre parênteses retos [ ] Exemplo: [x<0] invert(x,color) A mensagem só é enviada se a condição se verificar Condições permitem mostrar várias sequências alternativas num único diagrama Uma mensagem iterada é indicada com asterisco *, seguido ou não de uma fórmula de iteração Exemplo: *[i:=1..n] update(i) Barra de Ativação Uma barra de ativação mostra o período de tempo durante o qual um objeto está a executar uma ação, quer diretamente quer indiretamente através de um procedimento chamado inclui situação em que está à espera de retorno de uma chamada síncrona não inclui situação em que um processo está adormecido à espera de receber uma mensagem assíncrona que o acorde Em termos de processos, significa que o objeto tem um processo ou thread activo associado A sua indicação é opcional Retorno de chamada é implícito no fim da barra de ativação Chamadas recursivas provocam barras empilhadas 8
Exemplo: Fazer chamada telefônica {b-a < 10 seg.} quem chama: Pessoa a b marca temporal restrição temporal nesta altura decorre a conversaçã o Retira Telefone Gancho dá sinal de marcar marca (1º dígito) termina sinal de marcar marca (2º dígito)... marca (último dígito) dá sinal de chamada pára sinal de chamada :Sistema telefónico dá sinal de conexão terminada Põe telefone gancho toca o telefone Retira Telefone pára Gancho de tocar Põe telefone gancho quem é chamado: Pessoa mensagem simples Exemplo: Tratar pedido em Estoque :Janela de Seleção de Pedidos tratar() :Pedido * tratar() :Item de Pedido e:=existe?(q) :Produto Quantidade pedida Para cada linha do pedido [e= sim"]retirar(q) b:=baixo?() Para repor estoque [b= sim ] criar() [e= nao ] criar() e1:encomenda e2:encomend a Para poder satisfazer pedido criação de objecto 9
Relação com outros diagramas Relação com diagramas de colaboração Diagramas de sequência e de colaboração coletivamente designam-se diagrama de interação Diagrama de colaboração = diagrama de objetos + diagrama de sequência Relação com diagramas de casos de utilização A um caso de utilização podem corresponder vários diagramas de sequência, para descrever sequências normais e sequências excepcionais de funcionamento Inicialmente, o sistema pode ser representado por um único objeto; depois de conhecida a sua estrutura interna, podem-se representar objetos internos ao sistema Relação com diagramas de atividades Adequados para mostrar ações realizadas por um objeto que não envolvem comunicação com outros objetos Diagramas de Colaboração 10
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? Introdução Diagramas de colaboração e diagramas de sequência são coletivamente designados diagramas de interação Um diagrama de interação mostra um padrão de interação entre vários objetos, com objetos e mensagens trocadas entre esses objetos por uma certa ordem num determinado âmbito (caso de uso, operação, etc.) Os diagramas de colaboração dão ênfase à estrutura organizacional dos objetos 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 objetos + diagrama de sequência Um diagrama de colaboração é um grafo com objetos (instâncias de classes) e ligações (instâncias de associações) através das quais fluem mensagens numeradas 11
Diagramas de Colaboração versus de Sequência Diagramas de Sequência enfatizam a ordenação das mensagens trocadas entre os objetos. Diagramas de colaboração enfatizam a organização dos objetos em uma interação. Praticamente tudo que pode ser mostrado em um diagrama de sequência pode também ser mostrado em um diagrama de colaboração. Diagramas de colaboração podem ser trans formados em diagramas de sequência e viceversa. Exemplo: Comunicação telefônica quem chama: Pessoa 2: dá sinal de marcar 1: levanta 4: termina sinal de marcar auscultador 7: dá sinal de chamada 3: marca(5) 9: pára sinal de chamada 5: marca(1) 11: dá sinal de conexão 6: marca(1) terminada 12: poisa auscultador : Linha telefónica 8: levanta auscultador 10: poisa auscultador quem é chamado:pessoa 7: toca o telefone 9: pára de tocar 12
Exemplo: Tratar Pedido de Produto :Janela de Seleção de Pedidos «local» 1: tratar() : Pedido e2: Encomenda {new} {new} : Item de Pedido 1.1: * tratar() 1.1.3: [e= não ] criar() 1.1.1: e :=existe?(q) 1.1.2: [e= sim ] retirar(q) : Produto {new} «self» e1:encomenda {new} 1.1.2.1: b:=baixo?() 1.1.2.2: [b= sim ] criar() Modelando o fluxo de controle através de Diagramas de Colaboração Defina o contexto da interação, se sistema, subsistema, classe, ou um Use Case. Identifique quais objetos participam da interação. Coloque os objetos mais importantes no centro do diagrama. Defina as propriedades iniciais dos objetos. Especifique os links entre objetos. Eles permitem a passagem das mensagens. 13
Modelando o fluxo de controle através de Diagramas de Colaboração Começando com a mensagem que inicia a interação, coloque a numeração sequencial nas mensagens. Se necessário use aninhamento (1.1, 1.2). Se precisar especificar limitações de tempo e espaço, adorne a mensagem com uma marca apropriada. Se precisar especificar o fluxo de controle mais formalmente, coloque pré e pós condições nas mensagens. 14