Кіріспе

Объектіге бағытталған бағдарламалаудағы композициялық қатынас. Деректер қорының жобалауында, объектіге бағытталған бағдарламалау және жобалауда, "бар" (немесе "иеленеді") – бір объект (көбінесе құрастырылған объект деп аталады, сондай-ақ бөлік, құраушы немесе мүше объект) екінші объектіге ("құрастырылған тип" деп аталады) "қатысты" (оның бөлігі немесе мүшесі) болады және меншік құқығының ережелеріне сәйкес әрекет етеді. Қарапайым тілмен айтқанда, объектідегі "бар" қатынасы – объектінің мүшелік өрісі деп аталады. Көптеген "бар" қатынастары иелену иерархиясын құру үшін бірігеді.

Субъектінің қатынас моделі

Деректер қорындағы қатынастар әдетте Entity-relationship модельінде көрсетіледі. Оң жақтағы диаграммадан көріп отырғаныңыздай, бір есептік жазбада бірнеше кейіпкер болуы мүмкін. Бұл есептік жазбаның кейіпкермен "иелену" қатынасында екенін көрсетеді.

UML сынып диаграммасы

Объектіге бағытталған бағдарламалауда бұл қатынас Бірыңғай модельдеу тілінің кластық диаграммасымен бейнеленеді. Бұл қатынас композиция деп те аталады. Оң жақтағы кластық диаграммадан көрініп тұрғанындай, автомобильдің "карбюраторы бар" немесе автомобиль "карбюратордан құралған". Алмаз қара түсті болса, ол композицияны көрсетеді, яғни алмазға жақын жатқан нысан екінші нысаннан тұрады немесе оны қамтиды. Ал ақ алмаз агрегацияны көрсетеді, яғни алмазға жақын нысан екінші нысанға ие болуы мүмкін.

C++ тілінде

Нақты әлемді модельдеуде композиция мен агрегацияны ажыратудың тағы бір жолы – кіріктірілген нысанның салыстырмалы өмір сүру мерзімін қарастыру. Мысалы, егер Автокөлік нысаны Шасси нысанын қамтитын болса, Шасси Автокөліктің өмір бойында ауыстырылмайды. Оның өмір сүру мерзімі Автокөліктің өмір сүру мерзімімен сәйкес келеді, сондықтан бұл қарым-қатынас композиция болып табылады. Ал егер Автокөлік нысаны Тыныс нысандары жиынтығын қамтитын болса, онда бұл Тыныс нысандары тозығып, бірнеше рет алмастырылуы мүмкін. Егер Автокөлік қолдануға жарамсыз болса, кейбір Тыныстар сақталап, басқа Автокөлікке берілуі мүмкін. Қалай болғанда да, Тыныс нысандарының өмір сүру мерзімі Автокөлік нысанынан өзгеше, демек қарым-қатынас агрегация болып табылады. Егер жоғарыда сипатталған қарым-қатынастарды іске асыру үшін C++ бағдарламалық класын жасасақ, Автокөлік нысаны дерек мүшесі ретінде толық Шасси нысанын қамтиды. Бұл Шасси нысаны Автокөлік класының конструкторында (немесе конструкторда дерек мүшесінің дерек типі ретінде анықталып, оның қасиеттері конструкторда беріледі) құрылады. Автокөлік класының толық қамтылған дерек мүшесі болғандықтан, Автокөлік класы нысаны жойылғанда Шасси нысаны да жойылады. Ал Автокөлік класының дерек мүшелері, Тыныс нысандарына сілтеме жасайтын болса, олар C++ көрсеткіштері болады. Тыныс нысандары сырттан құрылып, жойылуы мүмкін, тіпті басқа Автокөлік нысанының дерек мүшелеріне тағайындалуы мүмкін. Тыныс нысандары Автокөлік нысаны жойылғаннан кейін де дербес өмір сүру мерзіміне ие болады.