Relacionamentos entre objetos
Em Programação Orientada a Objetos, uma classe pode utilizar outra classe.
Existem diferentes tipos de relacionamento.
Os dois mais importantes são:
- Agregação
- Composição
Embora pareçam semelhantes, eles possuem diferenças importantes.
Agregação
Na agregação, um objeto utiliza outro, mas ambos podem existir independentemente.
Se um objeto for destruído, o outro continua existindo.
É conhecida como relação “tem um” (has-a).
Exemplo
Uma universidade possui professores.
Se a universidade fechar, os professores continuam existindo.
Diagrama:
Universidade
|
|------ Professor
Implementação
Classe Professor
public class Professor {
private String nome;
public Professor(String nome){
this.nome = nome;
}
public String getNome(){
return nome;
}
}
Classe Universidade
public class Universidade {
private Professor professor;
public Universidade(Professor professor){
this.professor = professor;
}
public void mostrarProfessor(){
System.out.println(professor.getNome());
}
}
Uso:
Professor p = new Professor("Carlos");
Universidade u = new Universidade(p);
O professor continua existindo mesmo que a universidade deixe de existir.
Composição
Na composição, um objeto depende totalmente do outro.
Quando o objeto principal deixa de existir, seus componentes também deixam de existir.
É uma relação muito mais forte.
Exemplo
Uma casa possui quartos.
Não existe um quarto pertencente àquela casa sem que a própria casa exista.
Diagrama
Casa
|
|------ Quarto
Implementação
Classe Quarto
public class Quarto {
private String nome;
public Quarto(String nome){
this.nome = nome;
}
public String getNome(){
return nome;
}
}
Classe Casa
public class Casa {
private Quarto quarto;
public Casa(){
quarto = new Quarto("Suíte");
}
public void mostrar(){
System.out.println(quarto.getNome());
}
}
Observe que o quarto é criado dentro da casa.
O usuário não cria um objeto Quarto separadamente.
Diferenças entre Agregação e Composição
| Característica | Agregação | Composição |
| Relação | Fraca | Forte |
| Objetos independentes | Sim | Não |
| Compartilhamento | Sim | Não |
| Ciclo de vida | Independente | Dependente |
| Exemplo | Universidade e Professor | Casa e Quarto |
Exemplos do cotidiano
Agregação
- Empresa → Funcionário
- Time → Jogador
- Escola → Professor
- Biblioteca → Livro
Todos podem existir separadamente.
Composição
- Casa → Quarto
- Carro → Motor
- Computador → Placa-mãe
- Livro → Capítulos
As partes dependem do objeto principal.

