Лифт имеет кнопку.На самом деле, у него четыре, но с каждой из этих кнопок есть отношение has-a.
Has-a - это несколько неформальный термин, используемый для обозначения двух более формальных типов отношений: ассоциация и агрегация.В обоих случаях одна сторона в отношениях имеет указатель на другую, но они отличаются семантикой: в отношениях ассоциации первая сторона знает о другой, но не полностью доминирует над ней (думаю, вы и коллега)или начальник, или подчиненный), тогда как в отношениях агрегации последняя сторона является частью первой и не имеет независимого существования (подумайте о себе и своей печени).В этом случае я бы сказал, что кнопка более конкретно находится на подчиненном конце отношений агрегации с лифтом, а не просто на отношении ассоциации.
Другими примерами ассоциации могут быть Клиент и Продавец, илиотдел и сотрудник.Агрегации, Order и и OrderLine, или Структуры и Компонента.Интересными угловыми случаями являются Категория и Продукт, а также Заказ и Счет-фактура.
Одним практическим следствием такого рода отношений является время жизни объекта: в ассоциации, если первый объект умирает, второй может жить,но в совокупности он умрет.Подумайте о своем лифте: если вы удалили один (или удалили его из ваших живых структур данных и, по крайней мере, позволили собирать мусор), вы бы хотели, чтобы кнопки выжили?