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...
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;
}
}
Copiar 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
}
Copiar 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;
}
}
Copiar class Universidade { private List
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");
}
}
Copiar 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");
}
}
Copiar 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.
Sobre Pedro Mendes
Desenvolvedor full stack com foco em aplicações web, automação e entrega confiável de software.
Ver mais artigos

