В чем разница между агрегацией и композицией

«В чем разница между агрегацией и композицией» — вопрос из категории ООП, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Агрегация — это слабая связь, где объект может существовать независимо от контейнера. Например, Student может быть частью University, но при удалении университета студент останется.

class University(val students: List<Student>)

Композиция — это сильная связь, где объект не может существовать без контейнера. Например, Engine не существует без Car. Удаление Car влечёт удаление Engine.

class Car {
    private val engine = Engine()  
}  

Композиция подразумевает полное владение, агрегация — частичное.