Negocio

Agregação em Java

Agregação

A agregação Java indica um relacionamento especial entre as classes. Esse tipo de relacionamento é conhecido como relacionamento HAS-A . É uma rua de mão única.

Pense em um pincel e um cabo. Um pincel com cabo HAS-A. Você pode ter um cabo sem pincel – pode ser uma chave de fenda, uma espátula ou outra ferramenta. Mas é muito difícil pintar se o seu pincel não tiver cabo!

Exemplo de agregação Java

Antes de nos aprofundarmos no código, vamos revisar os pontos-chave da agregação usando nosso pincel e analogia de manuseio.

  • Um pincel HAS-A alça
  • Um identificador pode ser criado e existir por conta própria (sem um pincel). Podemos criar a alça e depois anexar ao pincel ou a outra ferramenta.
  • Um pincel precisa ter um cabo.

Exemplos de código

Vamos dar uma olhada nas classes PaintBrush e Handle em Java. Não se preocupe em saber todos os detalhes essenciais do código, pois trabalharemos com as partes importantes.

A seguir está uma configuração básica para a classe Handle.

public class Handle { 
  public String toString () {
   return "Wooden Handle"
  }
}

A seguir, construiremos a classe PaintBrush. Lembre-se de que o PaintBrush TEM-A Handle; para fazer isso funcionar no código Java, precisamos trazer o identificador da classe Handle. Para fazer isso, criamos um novo identificador DENTRO da classe PaintBrush:

public class PaintBrush { 
  long bristleCount = 500
  Handle handle;
}

Observe que, dentro da classe PaintBrush, criamos uma variável de instância que é especial – na verdade, é um tipo de Handle. Isso diz ao Java para criar uma nova variável dentro da classe PaintBrush; a variável é na verdade uma variável Handle. Em outras palavras, configuramos o relacionamento HAS-A em Java. PaintBrush agora TEM-A Handle. Para facilitar o acompanhamento, nomeamos o identificador da variável.

Agora vamos adicionar mais carne ao nosso código e terminar a agregação entre as classes PaintBrush e Handle. Cobriremos cada aula separadamente.

A classe Handle

As ferramentas podem ter um identificador, portanto, construiremos a classe Handle para que possa ser reutilizada.

A classe PaintBrush

Neste exemplo, mantivemos a classe PaintBrush bastante simples. A única variável local é a contagem de cerdas. Para usar a classe Handle e anexar um identificador a essa classe, precisamos nos certificar de que construímos essa classe corretamente.

O construtor PaintBrush não usa apenas a contagem de cerdas, mas também o objeto Handle. Existe uma função, showInfo, que exibe os valores. Chamaremos essa função a partir do método principal do programa.

public class PaintBrush { 
  long bristleCount = 500
  Handle handle;
  PaintBrush (contagem longa, identificador de controle) {
   this.bristleCount = contagem;
   this.handle = handle;
   // o construtor / blueprint configura a classe para relacionar o Handle
  }
  public void showInfo () {
   System.out.println ("Handle is" + handle.getHandleType ());
  }
}

A classe principal

Aqui, temos que realmente criar uma nova instância de cada classe: Criamos as classes PaintBrush e Handle, mas agora precisamos usá-las.

A instância da classe Handle parece bastante direta, pois leva um argumento, que é o tipo de identificador. Neste caso, criamos um identificador de madeira.

Quando criamos a instância da classe PaintBrush, no entanto, observe que as coisas parecem um pouco diferentes. O PaintBrush faz uma contagem de cerdas, então enviamos 500. No entanto, um PaintBrush HAS-A alça, então temos que nos certificar de incluir também a nova instância de alça quando criamos o pincel!

O Handle pode se sair bem sozinho se não fizermos isso, mas nossa classe PaintBrush realmente não pode existir sem ele!

public static void main (String [] args) { 
  Handle handle = new Handle ("Wood");
  Pincel PaintBrush = novo PaintBrush (500, cabo);
  brush.showInfo ();
}

Quando este código for executado, a saída terá a seguinte aparência:

Saída de agregação Java

Resumo da lição

A agregação em Java refere-se a um relacionamento HAS-A. Um empregado TEM-A endereço. É uma rua de mão única: um caminhão tem um motor, embora um motor não precise de um caminhão. A agregação é uma ferramenta poderosa em Java porque permite reutilizar o código; em nosso exemplo, poderíamos usar peças da classe Handle para outras classes (por exemplo, Scraper). Quando vinculamos nossas classes, podemos criar uma variável de instância , que é uma variável local em uma classe que inclui o nome da classe que estamos relacionando. Então, quando criamos a nova instância de uma classe PaintBrush, fomos capazes de criá-la usando a instância da classe Handle. Portanto, o PaintBrush depende do identificador, mas não vice-versa.