Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

Tipos de Relações entre Objetos em Java

No desenvolvimento orientado a objetos, a relação entre classes e objetos é essencial para a estruturação de um sistema bem projetado. Em Java, essas relações podem ser classificadas de diferentes formas, cada uma representando um tipo específico de dependência ou associação entre objetos.

1 - Associação

A associação é a relação mais genérica entre objetos, onde um objeto pode interagir com outro. Ela pode ser unidirecional ou bidirecional, dependendo da forma como a comunicação entre os objetos ocorre.

Por exemplo:

Java
class Pessoa {
    private String nome;
    private Endereco endereco;
    
    public Pessoa(String nome, Endereco endereco) {
        this.nome = nome;
        this.endereco = endereco;
    }
}

class Endereco {
    private String rua;
    
    public Endereco(String rua) {
        this.rua = rua;
    }
}

Neste exemplo, a classe Pessoa tem uma associação com a classe Endereco.

2 - Composição

A composição é um tipo de associação mais forte, onde um objeto contém outro objeto e a existência do objeto contido depende do objeto principal.

Por exemplo:

Java
class Carro {
    private Motor motor;
    
    public Carro() {
        this.motor = new Motor(); // O motor só existe dentro do carro
    }
}

class Motor {
    // Detalhes do motor
}

Aqui, o Motor faz parte de um Carro, e sua existência depende do carro.

3 - Agregação

A agregação é similar à composição, mas com uma diferença importante: o objeto agregado pode existir independentemente do objeto principal.

Por exemplo:

Java
class Universidade {
    private List<Professor> professores;
    
    public Universidade() {
        this.professores = new ArrayList<>();
    }
    
    public void adicionarProfessor(Professor professor) {
        professores.add(professor);
    }
}

class Professor {
    private String nome;
    
    public Professor(String nome) {
        this.nome = nome;
    }
}

4 - Herança

A herança é um dos conceitos fundamentais da POO, onde uma classe filha herda atributos e métodos de uma classe pai.

Por exemplo:

Java
class Animal {
    public void fazerSom() {
        System.out.println("Som genérico de animal");
    }
}

class Cachorro extends Animal {
    @Override
    public void fazerSom() {
        System.out.println("Latido");
    }
}

Aqui, Cachorro herda de Animal e sobrescreve o método fazerSom().

5 - Dependência (Usabilidade)

Quando uma classe usa outra temporariamente, sem manter referências permanentes, temos uma relação de dependência.

Por exemplo:

Java
class Pedido {
    public void processar(Pagamento pagamento) {
        pagamento.realizarPagamento();
    }
}

class Pagamento {
    public void realizarPagamento() {
        System.out.println("Pagamento realizado");
    }
}

Aqui, Pedido depende de Pagamento, mas não o armazena como atributo.

Compreender essas relações é essencial para criar sistemas bem estruturados em Java. Cada tipo de relação tem seu próprio uso e impacto na manutenção do código.

Pedro Mendes

Writer & Blogger

Deixe seu comentário!

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Copyright © 2025 Loopino. Todos os direitos reservados.