Diagramas de Interação Prof. Anderson Cavalcanti UFRN-CT-DCA Diagramas de Interação • Foco até o momento levantamento de requisitos; • Foco neste momento projeto de objetos; • Durante o projeto de objetos, é desenvolvida uma solução lógica baseada em objetos. Diagramas de Interação • O cerne dessa solução diagramas de interação – Ilustram como os objetos colaboram entre si para atender aos requisitos • Esses diagramas ajudam a transformar o modelo de domínio em diagrama de classes (modelo de projeto); • Para a criação dos diagramas de interação é necessário levar em consideração: – Padrões de atribuição de responsabilidades; – Padrões de projeto. Notação de um Diagrama de Interação • Ilustra como os objetos mensagens); • Tipos de diagramas utilizados: interagem (trocam – Diagrama de colaboração (communication – UML 2.0); – Diagrama de seqüência; • Cada tipo possui pontos fortes e fracos. Diagrama de Colaboração • Forma de grafo ou rede Diagrama de Seqüência • Ilustra o transcorrer do tempo • Objetos colocados lado a lado Pontos Fortes e Pontos Fracos Exemplo de Diagrama de Colaboração: fazerPagamento Leitura do Diagrama • A mensagem fazerPagamento é enviada para uma instância de um Registro (PDV). Mensagem essa enviada da interface; • O objeto Registro envia a mensagem fazerPagamento para uma instância de Venda; • A instância de Venda cria uma instância de Pagamento. Exemplo de Diagrama de Seqüência: fazerPagamento • A leitura é semelhante ao diagrama de colaboração. Criando Diagramas de Interação • Dicas: – Crie os diagramas de interação em duplas – Invista tempo – um dia inteiro, se for preciso Notação Comum para Diagramas de Interação • Ilustração de classes e instâncias Notação Comum para Diagramas de Interação • Sintaxe básica das expressões de mensagens – retorno := mensagem(param1 : tipo) : tipoRetorno – exemplos: • espec:=obterEspecProduto(id) • espec:=obterEspecProduto(id:ItemID) • espec:=obterEspecProduto(id:ItemID):EspecProduto Notação Básica para os Diagramas de Colaboração • Ligação – Uma conexão entre dois objetos – indica que alguma forma de navegabilidade e de visibilidade entre eles é possível (fluxo de mensagens); – Simbolizada por uma linha ligando os objetos. Notação Básica para os Diagramas de Colaboração • Mensagens – Representada por uma expressão, uma seta e um número de seqüência Notação Básica para os Diagramas de Colaboração • Mensagens para “self” ou “this” – Representa o envio de uma mensagem do objeto para ele próprio Notação Básica para os Diagramas de Colaboração • Criação de instâncias – Pode ser representada de duas formas: mensagem padrão “criar” ou uma mensagem de qualquer nome com o esteriótipo “create” Notação Básica para os Diagramas de Colaboração • Numeração da seqüência das mensagens – Os números de ordem das mensagens obedecem ao seguinte esquema: • A primeira mensagem, vinda da interface, não é numerada; • A ordem e o aninhamento das mensagens são mostrados por um esquema de numeração formal, no qual as mensagens aninhadas têm um número agregado (mensagem pai). Notação Básica para os Diagramas de Colaboração • Numeração da seqüência das mensagens Notação Básica para os Diagramas de Colaboração • Numeração da seqüência das mensagens Notação Básica para os Diagramas de Colaboração • Mensagens condicionais – Uma mensagem condicional é representada adicionando uma condição entre colchetes após o número de seqüência Notação Básica para os Diagramas de Colaboração • Caminhos condicionais mutuamente exclusivos – Mostra caminhos alternativos para a execução – Altera a numeração de ordem das mensagens Notação Básica para os Diagramas de Colaboração • Iteração – Representa a execução repetida de uma mesma mensagem – É indicada com um asterisco após o número de seqüência, e opcionalmente uma cláusula indicando a condição de repetição Notação Básica para os Diagramas de Colaboração • Iteração sobre uma coleção (multiobjeto) – É muito comum em várias situações que seja necessário iterar sobre uma coleção – O termo mutiobjeto é utilizado para denotar uma coleção de instâncias de outra classe Notação Básica para os Diagramas de Colaboração • Mensagem para uma classe – Um objeto pode executar diretamente um método de uma classe, sem a necessidade de uma instância, se esse método for estático; – Representado com uma mensagem comum. Notação Básica para um Diagrama de Seqüência • Ligações – Não são mostradas diretamente • Mensagens – Representada por uma expressão de mensagem sobre uma seta ligando a origem e o destino; – Muitas ferramentas permitem que sejam ilustrados dois tipos de mensagens: síncronas ou assíncronas : • Síncronas (seta cheia) – A origem espera a resposta para continuar o seu trabalho; • Assíncronas (seta aberta) – A origem continua. Notação Básica para um Diagrama de Seqüência • Mensagens Notação Básica para um Diagrama de Seqüência • Mensagens Notação Básica para um Diagrama de Seqüência • Ilustração de retornos – É opcional a ilustração dos retornos das mensagens, pode ser utilizado para ilustrar o conteúdo do retorno Notação Básica para um Diagrama de Seqüência Notação Básica para um Diagrama de Seqüência • Mensagens para “self” ou “this” – Mensagem enviada do objeto para ele próprio Notação Básica para um Diagrama de Seqüência • Criação de instâncias – Um novo objeto é inserido no diagrama como o destino de uma mensagem criar Notação Básica para um Diagrama de Seqüência • Linhas de vida e destruição de objetos – As linhas tracejadas indicam a extensão da vida de um objeto no diagrama – Para ilustrar o descarte de um objeto usa-se a mensagem estereotipada <<destroy>> e um X interrompendo a linha de vida do mesmo Notação Básica para um Diagrama de Seqüência • Mensagens condicionais – Mensagem que só acontece se uma determinada condição for satisfeita (condição entre colchetes) Notação Básica para um Diagrama de Seqüência • Caminhos condicionais mutuamente exclusivos – A notação normal ilustra duas mensagens saindo de um mesmo ponto de origem – Na impossibilidade pode-se se usar a notação abaixo (ilustrando um mesmo instante de tempo) Notação Básica para um Diagrama de Seqüência • Iteração para uma mensagem única – Quando uma única mensagem é enviada repetidas vezes, indica-se com um asterisco seguido da condição da repetição – A condição pode ser uma expressão lógica ou a especificação de um laço controlado (intervalo) Notação Básica para um Diagrama de Seqüência • Iteração de uma série de mensagens – Cerca-se o conjunto de mensagens que se repetem com um retângulo e ilustra-se na base do retângulo a condição da repetição Notação Básica para um Diagrama de Seqüência • Iteração sobre uma coleção – Uma mensagem enviada para cada elemento de uma coleção de objetos Notação Básica para um Diagrama de Seqüência • Mensagens diretamente para classes – Mensagens enviadas diretamente para classes (como é o caso dos métodos estáticos) Referências • ALLEIXO, F. Notas de aula da disciplina de Análise e Projeto Orientado a Objeto, CEFET/RN, 2007. • SCOTT, K. O Processo Unificado Explicado. Ed. Bookman, 2003.