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