O que é associação e agregação em Java?

A associação e agregação em Java representam relações entre objetos, sendo fundamentais para modelagem de sistemas orientados a objetos.

O que é associação e agregação em Java?

Na Programação Orientada a Objetos (POO), associação e agregação representam relações entre objetos. Essas relações definem como os objetos interagem e dependem uns dos outros.

1. O que é Associação?

A associação é uma relação genérica entre duas classes, onde um objeto pode se comunicar com outro. Essa relação pode ser unidirecional (um objeto conhece o outro) ou bidirecional (ambos os objetos se conhecem).

Exemplo de Associação Unidirecional

class Aluno {
    String nome;

    public Aluno(String nome) {
        this.nome = nome;
    }
}

class Escola {
    void matricularAluno(Aluno aluno) {
        System.out.println("Aluno " + aluno.nome + " matriculado!");
    }
}

public class TesteAssociacao {
    public static void main(String[] args) {
        Aluno aluno = new Aluno("João");
        Escola escola = new Escola();
        escola.matricularAluno(aluno);
    }
}

Saída esperada:

Aluno João matriculado!

A classe Escola interage com Aluno, mas não armazena referência para ele.

2. O que é Agregação?

A agregação é um tipo especial de associação onde um objeto contém outro, mas os objetos podem existir independentemente. Isso significa que um objeto agregado pode ser compartilhado entre múltiplas entidades.

Exemplo de Agregação

class Departamento {
    String nome;

    public Departamento(String nome) {
        this.nome = nome;
    }
}

class Universidade {
    private List<Departamento> departamentos;

    public Universidade() {
        this.departamentos = new ArrayList<>();
    }

    public void adicionarDepartamento(Departamento dpto) {
        departamentos.add(dpto);
    }
}

Aqui, Universidade contém uma lista de Departamento, mas os departamentos podem existir sem a universidade.

3. Diferença entre Associação e Agregação

Característica Associação Agregação
Relação Comunicação entre objetos Um objeto contém outro
Independência Objetos podem existir separados Objetos agregados podem existir separadamente
Exemplo Aluno interage com Escola Universidade tem Departamentos, mas departamentos podem existir sem ela

4. Quando usar Associação ou Agregação?

  • Use associação quando houver apenas comunicação entre objetos, sem necessidade de um conter o outro.
  • Use agregação quando um objeto precisa conter outro, mas ambos podem existir separadamente.

Conclusão

Associação e agregação são conceitos fundamentais para modelar sistemas orientados a objetos. Entender essas relações ajuda a criar códigos mais organizados, modulares e fáceis de manter.

Ao modelar sistemas complexos, entender a diferença entre associação e agregação é crucial. Em frameworks como Hibernate, a agregação é frequentemente utilizada para mapear relacionamentos entre entidades no banco de dados. Além disso, muitas arquiteturas modernas preferem agregação à herança, pois essa abordagem reduz o acoplamento e facilita a manutenção do código. Um bom design de software deve priorizar relações que aumentem a reutilização e modularidade, garantindo flexibilidade na evolução da aplicação.

Algumas aplicações:

  • Modelagem de relações entre entidades em bancos de dados
  • Criação de estruturas flexíveis e reutilizáveis
  • Implementação de padrões de projeto como Composite e Builder
  • Facilidade na manutenção e evolução de sistemas grandes

Dicas para quem está começando

  • Use associação quando uma classe apenas precisar se comunicar com outra
  • Prefira agregação se uma classe contiver outra, mas os objetos puderem existir separadamente
  • Evite dependências fortes entre classes para melhorar a reutilização
  • Pratique implementando relações entre diferentes classes para entender melhor esses conceitos
  • Explore frameworks Java como Hibernate para ver como esses conceitos são aplicados em bancos de dados

Contribuições de Rodrigo Farias

Compartilhe este tutorial: O que é associação e agregação em Java

Compartilhe este tutorial

Continue aprendendo:

Como funciona o conceito de composição em Java

A composição em Java é um princípio da POO que permite criar classes mais flexíveis, utilizando objetos dentro de outros objetos em vez de herança.

Tutorial anterior

Como implementar um relacionamento um-para-muitos em Java

O relacionamento um-para-muitos em Java permite que um objeto esteja associado a múltiplos objetos, sendo essencial para modelagem de dados e sistemas.

Próximo tutorial