Ассоциация – знание одного класса о другом. Например, класс Начальник может быть связан с классом Подчиненный отношением ассоциации, чтобы передавать ему запросы. Если и Подчиненный должен обращаться к Начальнику – ассоциация называется двунаправленной.
Агрегация и композиция – две разновидности ассоциации. Композиция подразумевает, что ассоциированный объект – «подобъект», составная часть, не имеющая смысла без ссылающегося. На практике, например, отношение композиции появляется когда мы выделяем часть свойств объекта в отдельную сущность.
Агрегация не подразумевает отношения владения. Это просто ссылка на другой, самостоятельный объект. Он может продолжить функционировать, если ссылающийся объект прекратит существование. Например, класс-контейнер агрегирует хранимые элементы.
Каждое из этих трех отношений имеет собственное обозначение на UML-диаграммах: