Ответ
Композиция — это принцип ООП, описывающий отношение «часть-целое» с сильной связью и совместным жизненным циклом. Объект-контейнер (целое) владеет объектом-компонентом (частью), создает его и управляет его временем жизни. Уничтожение контейнера влечет за собой уничтожение всех его компонентов.
Ключевой признак: Компонент не может существовать независимо от своего контейнера.
Пример на Java:
// Компонент
class Engine {
void start() {
System.out.println("Двигатель запущен.");
}
}
// Контейнер
class Car {
// Композиция: поле final, объект создается в конструкторе
private final Engine engine;
public Car() {
this.engine = new Engine(); // Создание жизненного цикла
}
void drive() {
engine.start();
System.out.println("Машина поехала.");
}
}
// При удалении объекта Car его Engine также будет удален сборщиком мусора.
| Сравнение с агрегацией: | Композиция | Агрегация |
|---|---|---|
| Сильная связь («содержит-в»). | Слабая связь («имеет-в»). | |
| Жизненный цикл частей зависит от целого. | Части могут существовать независимо. | |
| Части создаются внутри целого. | Части передаются целому извне (через конструктор/сеттер). |
Преимущество: Повышает инкапсуляцию и управляемость зависимостей.