Has-a — Вікіпедія
У об'єктно-орієнтованому програмуванні й проєктуванні баз даних «Has-a» (також has_a, HasA і т. ін.) — взаємозв'язок у якому один об'єкт (компонент[1]) «належить» (є частиною або членом) іншому об'єкту (композиту[1]) і підкоряється правилам приналежності. Обернене відношення іноді називають «is of»[2].
Відношення has-а є відмінним від is-a, яке позначає таксономічну ієрархію (підтип[en]). Вважається що відношення has-a має слабшу зв'язність ніж «is-a» та інші переваги (див. композиція замість успадкування[en])[3].
В UML зв'язки has-a бувають трьох типів: асоціація, агрегація й композиція.[4]
- Асоціація — можливість просто послати повідомлення іншому об'єкту (викликати його метод). Наприклад зв'язок подружжя — асоціація.
- Агрегація — аналогічна асоціації, але можливі зв'язки тільки в одному напрямку. Асоціації можуть утворювати довільний напрямлений граф (тобто можливі двонаправлені has-a зв'язки[5]) агрегації — лише дерево. Наприклад людина може мати дітей, і її діти можуть мати дітей, але мати батьків — це вже інший вид зв'язку (хоча теж можливо агрегація). Або рюкзак може мати (містити) книжки, але книжки не можуть мати рюкзака, вони мають хіба що сторінки і т.д.
- Композиція — зв'язок між об'єктами, при якому час життя членів визначається часом життя складеного об'єкту. Наприклад зв'язок між людиною і рукою людини — композиція, рука сама по собі без людини не має сенсу і не функціонує.[6]
- ↑ а б Python, Real. Inheritance and Composition: A Python OOP Guide – Real Python. realpython.com (англ.). Процитовано 17 вересня 2023.
- ↑ Is A and Has A relationships. www.ibm.com (амер.). IBM. Процитовано 17 вересня 2023.
- ↑ Composition vs Inheritance. www.digitalocean.com (англ.). DigitalOcean. Процитовано 17 вересня 2023.
- ↑ Martin, Robert C. (ootips) Association, Aggregation and Composition. ootips.org. Процитовано 17 вересня 2023.
- ↑ Mutual Hasa Relationship. WikiWikiWeb. Процитовано 17 вересня 2023.
- ↑ Thakur, Aniket (13 листопада 2014). Open Source For Geeks: Difference between Association, Aggregation and Composition in UML, Java and Object Oriented Programming. Open Source For Geeks. Процитовано 17 вересня 2023.
- Fowler, Martin. UML distilled: a brief guide to the standard object modeling language (вид. 3., 16. printing). Boston, Mass.: Addison-Wesley. ISBN 0-321-19368-7.
- Pender, Thomas A.; Pender, Tom (2003). UML bible. Indianapolis, Ind: Wiley. ISBN 0-7645-2604-9.