Diferencie Associação, Agregação e Composição de objetos.

Passo 1

Vamos entender o que a pergunta está pedindo. Precisamos diferenciar três tipos de relações entre objetos: Associação, Agregação e Composição. Essas são maneiras de representar como as classes ou objetos interagem e se relacionam em programação orientada a objetos ou em diagramas UML. Para resolver isso, vamos ver o que cada termo significa e como eles se diferenciam.

Passo 2

Associação é a relação mais básica entre objetos. Imagine que você tem duas classes, como Aluno e Curso. Uma associação pode indicar que um aluno está inscrito em um curso. Essa relação é bidirecional ou unidirecional, dependendo de como você a define. Não há dependência de vida entre os objetos; ou seja, se um objeto for destruído, o outro continua existindo normalmente.

Passo 3

Agregação é uma forma mais especializada de associação. Ela representa uma relação “todo-parte”, onde uma classe (o todo) é composta por outras classes (as partes). Por exemplo, uma classe Departamento pode agregar várias instâncias da classe Professor. A diferença chave aqui é que as partes podem existir independentemente do todo. Se o departamento for removido, os professores ainda existem.

Passo 4

Composição é uma forma ainda mais forte de agregação. Também representa uma relação “todo-parte”, mas com uma dependência mais rígida. No caso da composição, se o todo for destruído, as partes também são automaticamente destruídas. Por exemplo, uma classe Casa pode ter uma classe Sala. Se a casa for demolida, as salas também deixam de existir.

Resposta

Resumindo:
  • Associação é uma relação geral entre objetos, sem dependência de existência.
  • Agregação é uma relação “todo-parte” onde as partes podem existir independentemente do todo.
  • Composição é uma relação “todo-parte” mais rígida, onde as partes dependem completamente do todo para sua existência.

Exercícios relacionados

Para que servem os padrões de projeto de software, no cenário de Orientação a Objetos?
Crie uma classe que indique uma sessão aberta no Netflix, isto é, um usuário logado na plataforma de streaming de vídeo. Imagine que se deseje saber quantos usuários estão online no momento e quais filmes estão assistindo.
Utilizando a linguagem de programação orientada a objetos de sua preferência, crie uma classe para modelar um livro. Quais atributos e métodos são importantes para um sistema que tem um livro como objeto? Defina os métodos construtor e destrutor da classe.
O que é uma classe abstrata? Para que serve? Como implementar uma classe abstrata? Como forçar a implementação de métodos abstratos, nas classes que herdam a classe abstrata? Crie uma classe chamada Obra_de_arte, que seja abstrata e tenha o método abstrato definir_autor. Essa classe abstrata deve ser herdada pela classe criada no exercício 2 .