Sobes.tech
Junior — Middle

¿Puede explicar qué se entiende por el término 'agregación' en el contexto de la programación orientada a objetos?

sobes.tech AI

Respuesta de la IA

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

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

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

Пример на 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)
// Водитель существует независимо от автомобиля