Diagramas de interação da UML e a linguagem Java - Revista SQL Magazine 103

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

Os diagramas de interação da UML representam graficamente sequências de chamadas de método e podem ser visualizados de duas maneiras: através dos diagramas de sequência e diagramas de colaboração. Este artigo apresenta os diagramas de interação da UML. Para isso, apresentará fragmentos do projeto de um sistema de vendas e controle de pagamentos.

De que se trata o artigo:

Os diagramas de interação da UML representam graficamente sequências de chamadas de método e podem ser visualizados de duas maneiras: através dos diagramas de sequência e diagramas de colaboração. Este artigo apresenta os diagramas de interação da UML. Para isso, apresentará fragmentos do projeto de um sistema de vendas e controle de pagamentos.

Em que situação o tema útil:

Projeto de software é uma atividade essencial no desenvolvimento de aplicações profissionais. Neste sentido, este artigo contribui com o entendimento sobre como modelar aspectos dinâmicos de um projeto baseado no paradigma orientado a objetos.

Resumo DevMan

Este artigo destaca a modelagem dinâmica em projetos de software. Para isso, apresenta conceitualmente os diagramas de interação da UML, apresenta alguns exemplos práticos e demonstra como eles podem ser mapeados para código utilizando a linguagem Java.

Neste artigo iremos analisar os diagramas de interação da UML. Diagramas de interação mostram um conjunto específico de interações entre um conjunto de objetos. Neste sentido, buscaremos responder à seguinte questão: "Com o que uma chamada de método se parece na UML?"

Para isso, usaremos um sistema simples de vendas e rastreamento de pagamentos parcialmente completo para ilustrar o uso dos diagramas de sequência e colaboração. Basicamento, o sistema consiste de seis classes Java com os seguintes métodos principais:

· Sale (ver Listagem 1)

o calcPayments: calcula o total de todos os pagamentos feitos para a venda;

o calcTotal: totaliza o custo de todos os itens adquiridos como parte da venda;

o complete: marca a operação de venda como concluído.

A classe Sale apresentada na Listagem 1 é composta pelos atributos status, total e paymentsTotal, e pelos métodos calcPayments, calcTotal e complete. O construtor da classe é definido entre as linhas 5 e 15. Na sequência temos a implementação do método calcTotal entre as linhas 16 e 25. Entre as linhas 26 e 32 criamos um método de acesso para o atributo total. Já entre as linhas 33 e 42 definimos que o status da compra é igual a complete caso o valor do pagamento seja igual ao valor da compra. Feito isto, definimos entre as linhas 65 e 71 o relacionamento de agregação entre a classe Sale e a classe SaleItem. Já o relacionamento de associação entre as classes Sale e Payment é definido entre as linhas 72 e 79.

Listagem 1. Sale Class

  1.       /**
  2.       One user transaction consisting of purchases of potentially many kinds of product
  3.       @stereotype moment-interval
  4.       */
  5.        public class Sale {
  6.           /**
  7.           calculates the total of the sale from the lineItem subtotals
  8.           @return total of the sale
  9.           */
  10.       public double calcPayments() {
  11.          paymentsTotal = 0.0;
  12.          Iterator i = payments.iterator();
  13.          while (i.hasNext()) paymentsTotal += ((Payment)i.next()).getAmount();
  14.          return total;
  15.       }
   
  16.       /**
  17.       calculates the total of the sale from the lineItem subtotals
  18.       @return total of the sale
  19.       */
  20.       public double calcTotal() {
  21.         total = 0.0;
  22.         Iterator i = lineItems.iterator();
  23.         while (i.hasNext()) total += ((LineItem)i.next()).calcTotal();
  24.         return total;
  25.       }
   
  26.       /**
  27.       retrieves the cached total of the sale
  28.       @return total of sale, 0.0 if calcTotal() has not yet been called
  29.       */
  30.       public double getTotal() {
  31.         return total;
  32.       }
   
  33.       /**
  34.      sets the status of the sale to complete if payments equal price
  35.      @exception Exce[tion thrown if payments do not equal price
  36.      */
  37.       public void complete() throws Exception {
  38.         if (calcTotal() != calcPayments()) {
  39.         throw new Exception("Payments do not equal total price");
  40.       }
  41.       status = "Complete";
  42.     }
   
  43.     /**
  44.     adds a line item for a quantity of a type of item
  45.     @param product the type of item being sold
  46.     @param qty the quantity of the item being sold
  47.     */
  48.     public void addLineItem(Product product, int qty) throws Exception {
  49.       if (status.equals("Incomplete")) {
  50.         lineItems.add(new LineItem(product, qty));
  51.       }
  52.       else {
  53.        throw new Exception("Cannot add items to a completed sale");
  54.       }
  55.     }
   
  56.     /** status of sale */
  57.     private String status = "Incomplete";
   
  58.     /**
  59.     the cost of this quantity of the item the Product is responsible for
  60.     handling quantity discounting or time based special deals, etc
  61.     */
  62.     private double total;
   
  63.     /** the total of all the payments made for this sale */
  64.     private double paymentsTotal;
   
  65.     /**
  66.     @link aggregation
  67.     @associates <{LineItem}>
  68.     @supplierCardinality 1..*
  69.     @clientCardinality 1
  70.     */
  71.     private Vector lineItems = new Vector();
   
  72.     /**
  73.     payments of various kinds
  74.     @associates <{Payment}>
  75.     @supplierCardinality 0..*
  76.     @clientCardinality 1
  77.     */
  78.     private Vector payments = new Vector();
  79.   }
"

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?