Назад к вопросам
Junior — Middle
72
В чем отличия между отношениями агрегации и композиции в объектно-ориентированном программировании?
Ответ от нейросети
sobes.tech AI
Агрегация и композиция — это два типа отношений между объектами в ООП, которые описывают, как объекты связаны друг с другом.
-
Агрегация — это отношение «имеет» (has-a), при котором один объект содержит другой, но жизненный цикл вложенного объекта не зависит от контейнера. Вложенный объект может существовать самостоятельно.
-
Композиция — более сильная форма агрегации, где вложенный объект полностью принадлежит контейнеру и не существует отдельно. Если контейнер уничтожается, то и вложенный объект тоже.
Пример:
class Engine {}
// Агрегация: Car имеет Engine, но Engine может существовать отдельно
class Car {
var engine: Engine?
}
// Композиция: House состоит из Rooms, комнаты не существуют без дома
class Room {}
class House {
var rooms: [Room] = []
init() {
rooms = [Room(), Room()]
}
}
В композиции объекты тесно связаны и управляются вместе, в агрегации связь слабее.