Sobes.tech
Назад к вопросам
Junior — Middle
75

Можете объяснить, что подразумевается под термином 'агрегация' в контексте объектно-ориентированного программирования?

Ответ от нейросети

sobes.tech AI

Агрегация в объектно-ориентированном программировании — это тип отношения между объектами, при котором один объект содержит ссылку на другой, но при этом объекты могут существовать независимо друг от друга. Это слабая форма композиции.

Например, класс Автомобиль может иметь ссылку на объект Водитель. Водитель существует отдельно от автомобиля и может управлять разными автомобилями. Если автомобиль уничтожается, водитель продолжает существовать.

В отличие от композиции, где жизненный цикл части зависит от целого, при агрегации объекты связаны, но не зависят друг от друга полностью.

Пример на Swift:

class Driver {
    let name: String
    init(name: String) {
        self.name = name
    }
}

class Car {
    var driver: Driver? // агрегация
    init(driver: Driver?) {
        self.driver = driver
    }
}

let driver = Driver(name: "Иван")
let car = Car(driver: driver)
// Водитель существует независимо от автомобиля