Разница между ассоциацией и композицией в объектно-ориентированном программировании заключается в характере отношений между объектами: 14
- Ассоциация означает, что объекты двух классов могут ссылаться один на другой и иметь некоторую связь между собой. 1 Например, менеджер может выписать счёт, что создаёт ассоциацию между менеджером и счётом. 1
- Композиция — более жёсткое отношение, когда объект не только является частью другого объекта, но и не может принадлежать ещё кому-то. 1 Например, машина и двигатель: хотя двигатель может быть и без машины, но он вряд ли сможет быть в двух или трёх машинах одновременно. 1
Таким образом, при ассоциации связь между объектами более слабая, а при композиции — более сильная: объект-целое полностью контролирует жизненный цикл объектов-частей, которые являются его составными компонентами и могут иметь доступ к его методам и свойствам. 4