У об'єктно-орієнтованому програмуванні й проєктуванні баз даних «Has-a» (також has_a, HasA і т. ін.) — взаємозв'язок у якому один об'єкт (компонент) «належить» (є частиною або членом) іншому об'єкту (композиту) і підкоряється правилам приналежності. Обернене відношення іноді називають «is of».

Відношення has-а є відмінним від is-a, яке позначає таксономічну ієрархію (). Вважається що відношення has-a має слабшу зв'язність ніж «is-a» та інші переваги (див. ).

В UML зв'язки has-a бувають трьох типів: асоціація, агрегація й композиція. Асоціація — можливість просто послати повідомлення іншому об'єкту (викликати його метод). Наприклад зв'язок подружжя — асоціація. Агрегація — аналогічна асоціації, але можливі зв'язки тільки в одному напрямку. Асоціації можуть утворювати довільний напрямлений граф (тобто можливі двонаправлені has-a зв'язки) агрегації — лише дерево. Наприклад людина може мати дітей, і її діти можуть мати дітей, але мати батьків — це вже інший вид зв'язку (хоча теж можливо агрегація). Або рюкзак може мати (містити) книжки, але книжки не можуть мати рюкзака, вони мають хіба що сторінки і т.д. Композиція — зв'язок між об'єктами, при якому час життя членів визначається часом життя складеного об'єкта. Наприклад зв'язок між людиною і рукою людини — композиція, рука сама по собі без людини не має сенсу і не функціонує.

Див. також Is-a Композиція (програмування)

Примітки

Література