Análise e Projeto Orientados a Objetos Diagramas de interação Diretoria Acadêmica de Gestão e Tecnologia da Informação Curso de Tecnologia em Análise e Desenvolvimento de Sistemas
Introdução Os diagramas de interação ilustram como os objetos interagem (trocam mensagens). Aspecto dinâmico. Veremos: Diagrama de colaboração (de comunicação na UML 2). Diagrama de sequência. 2
Diagrama de colaboração 3
Diagrama de sequência 4
Exemplo: fazer pagamento 5
Exemplo: fazer pagamento 6
Exemplo: fazer pagamento class Registro{ public void fazerpagamento(double quantia){ venda.fazerpagamento(quantia); class Venda{ public void fazerpagamento(double quantia){ Pagamento p = new Pagamento(quantia); venda é uma instância da classe Venda disponível na classe Registro. 7
Notação comum para diagramas de interação Ilustração de classes e instâncias: 8
Notação comum para diagramas de interação Sintaxe básica das expressões das mensagens: retorno := mensagem(param : tipo): tiporetorno Exemplos: espec := obterespecproduto(id) espec := obterespecproduto(id : ItemID) espec := obterespecproduto(id : ItemID):EspecProduto 9
colaboração Uma linha entre dois objetos indica que de alguma forma a navegabilidade entre eles é possível. Mensagens são representadas por uma expressão, uma seta e um número de sequência. Atente para o aninhamento de mensagens indicada pela numeração de nível. 10
colaboração class Registro{ public void msg1(){ venda.msg2(); venda.msg3(); venda.msg4(); class Venda{ public void msg4(){ registro.msg5(); 11
colaboração Mensagens reflexivas (para self ou this): um objeto envia uma mensagem para ele próprio. class Registro{ public void msg1(){ this.limpar(); 12
colaboração Criação de instâncias: mensagem com o identificador criar ou com qualquer identificador acompanhado do estereótipo «create». 13
colaboração Mensagem condicional: é representada por uma condição entre colchetes. class ClasseA{ public void msg1(){ if(cor == Color.RED){ b.calcular(); 14
colaboração Caminhos condicionais mutuamente exclusivos. 15
colaboração class A{ public void msg1(){ if (teste1) b.msg1(); else d.msg4(); e.msg6(); class D{ public void msg4(){ c.msg5(); class B{ public void msg2(){ c.msg3(); 16
colaboração Iteração: representa a execução repetida de uma mesma mensagem. O asterisco indica a iteração. A condição de repetição pode ser indicada. 17
colaboração class Simulador{ public void executarsimulacao(){ for (int i = 0; i < N; i++){ num = random.proxint();... 18
sequência Foco de controle ou ativação: indica o contexto de execução de uma operação. Retorno das operações: pode ser representado por uma mensagem de retorno (linhas tracejadas) ou ser indicado na própria expressão da mensagem. 19
sequência 20
Mensagem reflexiva sequência 21
Criação de instância. sequência 22
sequência Mensagem condicional (UML 1.x). 23
sequência Mensagem condicional (UML 2.x). 24
sequência Mensagens condicionais mutuamente exclusivas (UML 2.x). 25
Iteração (UML 1.x). sequência 26
Iteração (UML 2.x). sequência 27
Exemplo 28
Referências BEZERRA, Eduardo. Princípios de análise e projeto de sistemas com UML. Rio de Janeiro: Elsevier, 2002 LARMAN, Craig. Utilizando UML e padrões: uma introdução à análise e ao projeto orientados a objeto e ao desenvolvimento iterativo. Porto Alegre: Bookman, 2007, 3. ed. 29