Мұрагерлік пен Құрам
Мұра және Құрам - OOP (объектіге бағытталған бағдарламалау) ішінде табылған екі маңызды ұғым. Қарапайым тілмен айтқанда, Композиция да, Мұрагерлік те сыныпқа қосымша сипаттарды немесе мінез-құлықты қамтамасыз етумен айналысады. Мұрагерлік – сыныптың оны кеңейту арқылы ата-аналық сыныптан қасиеттер мен мінез-құлықты мұраға алу мүмкіндігі. Екінші жағынан, Құрам - бұл сыныптың мүше деректері ретінде әртүрлі сыныптар нысандарын қамту мүмкіндігі.
Мұрагерлік дегеніміз не?
Жоғарыда айтылғандай, мұрагерлік – бұл сыныптың ата-аналық сыныптан оны кеңейту арқылы сипаттар мен мінез-құлықты мұралау мүмкіндігі. Мұрагерлік жаңадан анықталған сынып арқылы бар сыныптың қасиеттері мен әрекетін кеңейтуге рұқсат беру арқылы кодты қайта пайдалануды қамтамасыз етеді. Егер А класы В кеңейтілсе, онда В класы ата-аналық класс (немесе супер класс) деп аталады, ал А сыныбы еншілес сынып (немесе туынды сынып/қосалқы сынып) деп аталады. Бұл мысал сценарийінде А класы супер класстың (B) барлық жалпыға ортақ және қорғалған атрибуттары мен әдістерін иеленеді. Ішкі сынып ата-аналық сыныптан мұраланған әрекетті міндетті түрде қайта анықтай алады (әдістерге жаңа немесе кеңейтілген функционалдылықты қамтамасыз етеді).
Мұрагерлік OOP ішіндегі "болған-а" қатынасын білдіреді. Бұл шын мәнісінде А да В екенін білдіреді. Басқаша айтқанда, В белгілі бір нақты әлем субъектісінің жалпы сипаттамасы бар класс болуы мүмкін, бірақ А белгілі бір мамандандыруды көрсетеді. Нақты әлемдік бағдарламалау мәселесінде Person сыныбын Employee класын жасау үшін кеңейтуге болады. Бұл мамандандыру деп аталады. Бірақ сіз алдымен Қызметкер сыныбын жасай аласыз, содан кейін оны Person сыныбына да жалпылай аласыз (яғни.e. жалпылау). Бұл мысалда Қызметкер Тұлғаның барлық қасиеттеріне және мінез-құлқына ие болады (яғни, Қызметкер де Тұлға болып табылады) және кейбір қосымша функцияларды қамтуы мүмкін (сонымен бірге Тұлға қызметкер емес).
Композиция дегеніміз не?
Композиция – сыныптың мүше деректері ретінде әртүрлі сыныптар нысандарын қамту мүмкіндігі. Мысалы, А сыныбы мүше ретінде В класының нысанын қамтуы мүмкін. Мұнда В-де анықталған барлық жалпы әдістер (немесе функциялар) А класында орындалуы мүмкін. А класы контейнерге айналады, ал В класы қамтылған сыныпқа айналады. Композицияны контейнерлік деп те атайды. Бұл мысалда А сыныбы В сыныбынан тұрады деп айтуға болады. OOP-те Композиция «бар-а» қатынасын білдіреді. Контейнер қамтылған сыныптың барлық жалпы әдістерін орындауға рұқсаты болса да, ол өзгерту немесе қосымша функционалдылықты қамтамасыз ете алмайтынын ескеру маңызды. Нақты әлемдік бағдарламалау мәселесіне келетін болсақ, TextBox сыныбының нысаны Form класында болуы мүмкін және осылайша Пішінде TextBox бар (немесе балама түрде, Пішін TextBox-тан тұрады) деп айтуға болады.
Мұрагерлік пен Құрамның айырмашылығы неде?
Мұрагерлік және Құрам екі OOP тұжырымдамасы болғанымен, олар бағдарламашыға қол жеткізуге мүмкіндік беретін нәрседе мүлдем басқаша. Мұрагерлік - бұл сыныптың оны кеңейту арқылы ата-аналық сыныптан қасиеттер мен мінез-құлықты иелену мүмкіндігі, ал Құрамы - бұл сыныптың мүше деректері ретінде әртүрлі сыныптардың нысандарын қамту мүмкіндігі. Егер сынып кеңейтілсе, ол барлық жалпыға ортақ және қорғалған сипаттарды/мінез-құлықты иеленеді және бұл әрекеттер ішкі сыныппен жойылуы мүмкін. Бірақ егер сынып басқасында болса, контейнер мазмұнға әрекетті өзгерту немесе қосу мүмкіндігін алмайды. Мұрагерлік OOP ішіндегі "болған-а" қатынасын білдіреді, ал Құрам "бар-а" қатынасын білдіреді.