В чем разница между композицией и агрегацией?
Агрегация - процесс при котором мы не строго связываем объекты, то есть наш корневой объект может существовать и правильно функционировать и без инициализации объектов-полей.
Композиция - процесс при котором мы связываем объекты строго, что значит что объект не только является частью другого объекта, но и не может быть частью других объектов.
Для полного понимания следует обратиться к примерам: наш корневой объект - машина(Car). У машины есть двигатель(Engine) и пассажиры(Passenger[]). Мы можем высадить всех пассажиров(стереть массив Passenger, либо самому массиву, либо каждому месту передать значение null) и машина будет функционировать и без них - это называют агрегацией. В то же время машина не может функционировать без двигателя и данный конкретный двигатель не может "обслуживать" другую машину - если наша CarНonda Сivic, то у нее двигатель может быть только 2л и на Honda Accord мы его уже не поставим - это называется композиция.
Агрегация - процесс при котором мы не строго связываем объекты, то есть наш корневой объект может существовать и правильно функционировать и без инициализации объектов-полей.
Композиция - процесс при котором мы связываем объекты строго, что значит что объект не только является частью другого объекта, но и не может быть частью других объектов.
Для полного понимания следует обратиться к примерам: наш корневой объект - машина(Car). У машины есть двигатель(Engine) и пассажиры(Passenger[]). Мы можем высадить всех пассажиров(стереть массив Passenger, либо самому массиву, либо каждому месту передать значение null) и машина будет функционировать и без них - это называют агрегацией. В то же время машина не может функционировать без двигателя и данный конкретный двигатель не может "обслуживать" другую машину - если наша CarНonda Сivic, то у нее двигатель может быть только 2л и на Honda Accord мы его уже не поставим - это называется композиция.