ЕСКЕРТУ
Оқиғалық-басқарылатын модельдің жүзеге асырылу мысалы ретінде меню арқылы
басқарылатын кез келген программаны алуға болады. Орындалуға жіберілгеннен кейін
мұндай программа қолданушының іс-əрекеттерін күтіп бақылап отырады жəне олардың
кез келгеніне дұрыс жауап қайтаруы тиіс. Оқиғалық модель дəстүрлі (директивалық) үлгіге
қарама-қарсы болып табылады, дəстүрлі үлгіде код мəліметтерді басқарады: программа іске
қосылғаннан кейін қолданушыға бекітілген алгоритмнің орындалуын қатаң қадағалайтын
əрекеттер тізбегін орындауға ұсыныс береді (мəліметтер енгізу, режимді таңдау).
ОБП-ның негізгі қасиеттері инкапсуляция, мұралау жəне полиморфизм бо-
лып табылады. Төменде олардың мағыналары қысқаша түсіндіріледі, ал олар
туралы толық мағлұматты
1
кітаптың осы бөлімін оқу арқылы алуға болады.
Мəліметтердің оларды өңдеу функцияларымен бірігуі кезінде осы
мəліметтерді қолдануға қажетсіз ақпаратты жасырудың жүзеге асуы инкап-
суляция (encapsulation) деп аталады. Бұл идея жаңалық емес, ол құрылымдық
жəне модульдік программалауда да қолданылған, ал ОБП-да ол өзінің
логикалық жалғасын тапты. Инкапсуляция программаның абстракция деңгейін
жоғарылатады: класс мəліметтері жəне оның функцияларының жүзеге асырылуы
абстракция деңгейінен төмен орналасқан жəне программа жазу үшін олар туралы
ақпараттың қажеті жоқ. Сонымен қатар, интерфейс өзгермеген жағдайда инкап-
суляция кластың жүзеге асырылуын программаның негізгі бөлігін өзгертпестен
түрлендіруге мүмкіндік береді (мысалы, мəліметтердің сақталу тəсілін жиымнан
стекке өзгерту керек болғанда). Жоғарыда бірнеше рет қайталап айтылғандай,
программаны өзгерту қарапайымдылығы оның сапасының өте маңызды
алғышарттарының бірі болып табылады.
Инкапсуляция класты басқа ортада қолданған кезде ол өзіне тиісті емес жады
аймақтарын бүлдірмейді жəне көптеген программаларда қолдануға арналған
кластар кітапханаларын құруға мүмкіндік береді.
Мұралау – бұл ұрпақтары өздерінің ата-тектерінің барлық қасиеттерін
мұралайтындай, оларды өзгерту жəне жаңа қасиеттер қосу мүмкіндіктеріне ие
болатындай кластар иерархиясын құру мүмкіндігі. Мұралау кезінде қасиеттер
қайталап сипатталмайды, сол себепті ол программа көлемін қысқартады.
Əртүрлі кластардың ортақ белгілерін бір класс-тегіне тағайындау абстракцяның
күшті механизмі болып табылады – кез келген ғылым да қарастырылатын
пəндік аймақтың күрделілігін жеңуге мүмкіндік беретін абстракциялаудан жəне
жіктеуден басталатыны белгігі ғой.
Кластар иерархиясы бұтақ тəріздес құрылым түрінде бейнеленеді, мұнда
жалпыға ортақ кластар түбірге жақын, ал арнайы кластар ішкі бұтақтар мен
жапырақтарда орналасады. С++ тілінде əрбір кластың ұрпақтары мен ата-
тегінің саны шектелмеген. Кейде ата-тегі сыртқы класс немесе суперкласс, ал
ұрпақтары субкласс немесе ішкі класс деп аталады.
ОБП-ның үшінші негізі полиморфизм болып табылады. Полиморфизм –
иерархияның əртүрлі кластарында мағыналары ұқсас əрекеттер үшін бір
191
атауды қолдану жəне қажетті əрекетті программаның атқарылуы барысын-
да еркін түрде таңдау мүмкіндігі.
С++ тілінде полиморфизм түсінігі кең қолданылады. Полиморфизмнің
қарапайым мысалы ретінде кітаптың бірінші бөлімінде қарастырылған функ-
цияларды асыра жүктеуді алуға болады, бұл кезде прототипінің берілетін
параметрлерге сəйкестігі бойынша бірнеше нұсқалардың ішінен барынша
жарамды функция таңдалады. Басқа мысал ретінде функциялар шаблонда-
рын қолдануды атауға болады (алдағы уақытта біз кластар шаблондарын да
қарастырамыз), бұл кезде бір ғана код параметр ретінде берілген типке сəйкес
өзгертіледі. Полиморфизм түсінігін виртуалды тəсілдер механизмімен (ол
222 б. қарастырылады) жиі байланыстырады.
Программаның объектілер тəртіптері терминдерімен бейнеленуінің
арқасында программалау кезінде пəндік аймаққа жақынырақ түсініктер
қолданылады, демек, бұл программаны оқу мен түсінуді оңайлатады. Осы
қасиет ОБП-дың үлкен артықшылығы болып табылады. Алайда объектіге
бағытталған программалауды жобалау күрделі мəселе болып келеді, өйткені
процеске тағы бір маңызды кезең – кластар иерархиясын құру қосылады.
Нашар жобаланған иерархия күрделі жəне түсініксіз программалардың
құрылуына алып келеді. ОБП-ды қолданудың басқа бір кедергісі меңгерілуі
қажет ақпарат көлемінің үлкендігі жəне оны меңгерудің қиындығы болып
саналады.
Жобалауды бастаудан бұрын объектіге бағытталған тəсілді қолдану
қажеттілігін анықтап алған дұрыс. Егер кластардың иерархиясы қажет бол-
маса, əдетте модульдік технологиямен шектелу жеткілікті, мұндайда стан-
дартты кітапхананың кластарын жəне өзіндік кластарды тиімді пайдалануға
болады. Стандартты кластарды қолдану үшін алдымен қажетті синтаксис
пен механизмдерді, содан кейін барып, осы кластардың нақты қасиеттерін
1
меңгерген жөн болатыны сөзсіз.
1
Осы кітапта көрсетілген программаларда cin жəне cout стандартты кітапхана кластары қолданылған.
Басқа кластарды қолдану оңай сияқты көрінбеуі мүмкін, бірақ нəтижесі соған жұмсалған күшті
ақтайды
192
Достарыңызбен бөлісу: |