Junior — Middle
Qual é a diferença entre relações de agregação e composição na programação orientada a objetos?
sobes.tech IA
Resposta da IA
A agregação e a composição são dois tipos de relações entre objetos na programação orientada a objetos (POO), que descrevem como os objetos estão relacionados.
-
Agregação: é uma relação de "tem" (has-a), na qual um objeto contém outro, mas o ciclo de vida do objeto contido não depende do contêiner. O objeto contido pode existir de forma independente.
-
Composição: uma forma mais forte de agregação, onde o objeto contido pertence completamente ao contêiner e não existe separadamente. Se o contêiner for destruído, o objeto contido também será.
Exemplo:
class Engine {}
// Agregação: Car tem Engine, mas Engine pode existir separadamente
class Car {
var engine: Engine?
}
// Composição: House é composta por Rooms, que não existem sem a casa
class Room {}
class House {
var rooms: [Room] = []
init() {
rooms = [Room(), Room()]
}
}
Na composição, os objetos estão fortemente ligados e são gerenciados juntos, enquanto na agregação, a ligação é mais fraca.