Ответ
Агрегация — это тип ассоциации в ООП, представляющий отношение «has-a» (имеет), где один объект (целое) содержит ссылку на другой объект (часть), но оба могут существовать независимо. Жизненный цикл части не зависит от жизненного цикла целого.
Пример на Java:
// Класс «часть»
class Engine {
public void start() {
System.out.println("Engine started.");
}
}
// Класс «целое», использующий агрегацию
class Car {
// Агрегация: Car содержит ссылку на Engine
private Engine engine;
// Engine передается извне, что подчеркивает независимость
public Car(Engine engine) {
this.engine = engine;
}
public void startCar() {
engine.start();
System.out.println("Car started.");
}
}
public class Main {
public static void main(String[] args) {
// Engine создается независимо от Car
Engine engine = new Engine();
// Engine передается в Car при создании
Car car = new Car(engine);
car.startCar();
// Объект engine продолжит существовать, даже если car будет удален
}
}
Ключевое отличие от композиции: При композиции часть создается и уничтожается вместе с целым. В агрегации часть может быть создана отдельно и передана целому, что обеспечивает более слабую связность и возможность повторного использования.