Бөлім 2 Объектілік-бағдарланған бағдарламалау, негізгі концепциялары (1 сағат) Дәріс жоспары: 1.Абстракциялау; 2.Инкапсуляция; 3.Модульдік; 4.Иерархия; 5.Типизация; 6.Параллельдік; 7.Сақталуы. Объект – кейбір физикалық зат немесе бағдарлама түсінігінде қолданылатын барлық ақпаратты ұстып тұратын құрылымдық айнымалы.
Класс – осындай объектілердің сипатталу жиынтығы және олармен орындалатын әрекеттер жинытығы болып табылады. Класс – бағдарламалаушымен анықталған мәліметтең базалық типі.
ОББТ – бұл бағдарламалау тілі, онда анықталған қасиеттер жинтығына ие. ОББТ негізгі қасиеті болып: абстракция, инкапсуляция, мұраға қалдыру, полиморфизм.
Абстракция – мәліметтердің жаңа типін құруға бейімді қасиет болып табылады.
Инкапсуляция – жасырын ақпараттар, мәліметті және кодты біріктіретін механизм.
С++ бағдарламалау тілінде инакпсуляция қасиетін стандартты емес мәліметтердің типі қолдайды, оларды класс деп те атауға болады. Дұрыс анықталған класс инкапсуляцияланған объект ретінде іске қосылады. Демек оны бүтін бағдарламалық модуль ретінде қолдануға болады.
Дәстүрлі процедураға бағытталған бағдарламалау тәсілдері күрделі программалардың талаптарын қанағаттандыра алмады. Сондықтан объектіге бағытталған бағдарламалау ұғымы пайда болды.
Нысанға (объектіге) бағытталған бағдарламалау (ОББ) – бұл жаңа технология. мұнда құрылымдық бағдарламалаудың ең тиімді жақтары алынып, олар жаңа идеялармен толықтырылады.
Объектіге бағытталған тіл деп бағдарламалары өзара байланысқан объектілер тізімінен және солардың жұмысын сипаттаудан тұратын программлау тілін айтады. ОББ ерекшеліктері:
- бағдарламалық жабдықтамалардың күрделілік дәрежесін төмендету;
- бағдарламалық жабдықтамалардың сенімділігін жоғарлату;
- бағдарламалық жабдықтамалалардың кейбір компоненттерін қайтадан қолдану мүмкіндігін қамтамасыз ету.
ОББ негізгі ұғымдарының бірі – объект.
Объект – кейбір физикалық зат немесе бағдарлама түсінігінде қолданылатын барлық ақпаратты ұстып тұратын құрылымдық айнымалы. Объект – мәліметтердің логикалық бірлігі ретінде бағдарламада құрастырылған жаңа типтегі айнымалы.
Объектінің атқаратын басты міндеті мәліметтерді және оларды өңдеуге арналған тәсілдердің (ережелердің) бірігуі. С++ тілінде мәлімметтерді өңдеу ісі тәсілдер, яғни функциялар арқылы атқарылады. Сондықтан С++ бағдарламалау тілінде объект мәліметтерден және соларға қолданылатын функциялардан тұрады.
Объектіге негізделген мәліметтер мен функциялар жабық (private), қорғалған (protected) және ашық (public) бола алады.
ОББ технологиясының негізгі төрт сипаттамасы бар:
- инкапсуляция;
ОББ
Мұралау
Инкапсуляция
Полиморфизм
Типтер абстракицяиясы
- мұралау;
- полиморфизм;
- типтердің абстракциясы.
Сурет 1 – ОББ негізгі қасиеттері
Инкапсуляцияда бағдарлама бірлігі ретінде мәліметтер және функциялар тобының бірлестігі қарастырылады. Объектіде мәліметтер қорғалған болып саналады, егер мәліметтер мен функция-мүшелер жабық немесе қорғалған деп айтылатын болса, онда бағдарламаның басқа бөлігінен көрінбейтін болады.
Бағдарлама сенімді жұмыс істеу үшін объектінің өрісін тікелей пайдалану қажет емес. Сондықтан мұндайда оның мазмұнын ашық тәсілдерді шақыру арқылы қалыптастыру керек.
Белгілі бір класс ішінен ішкі класс құрастыру мұралау болып табылады. Мұралау кезінде бір объектінің атрибуттары мен қасиеттерін екіншісінің иемденуіне мүмкіндік беріледі. Егер бұрынғы кластан аз ғана айырмашылығы бар жаңа класс құрғымыз келсе, онда бастапқы кластың бұрынғы айнымалылары мен тәсілдерін қайтадан сипаттап жазу қажет емес. Сонда базалық класс аталық, ал жаңадан пайда болған класс – оның ұрпағы (туындысы) деп аталады. Ұрпақ кластың, қажет болса, өз құрамына жаңа айнымалылар мен тәсілдер қосу мүмкіндігі бар.
Мұралау өз кезегінде объектілердің иерархиясын құрастыруға жағдай туғызады, соның нәтижесінде жалпыдан жалқыға көше алады, ол объектіні нақтылайды, айқындайды.
Полиморфизмде кластың бір атаулы функция-мүшесі әр түрлі, бірақ өзара логикалық байланысқан мақсаттарда пайдаланылады. Мысалы, sum(x,y) функцияся x+y қосындысын табады делік. Аргументтерінің типіне қарай функция әр түрлі типтегі мәнді қайтара алады. Бүтін немесе нақты типті х пен у айнымалылары үшін атаулары әр түрлі екі функцияны тағайындаудың орнына бір sum(x,y) функциясын сипаттау тиімді болады. Мұндағы «+» амалы х пен у типтеріне тәуелді болады.
С++ тілінің негізгі ұғымдарының бірі – класс болып табылады. Класс дегеніміз – құрамында мүшелері (айнымалылары) мен тәсілдері (функциялары) бар тіл құрылымы.
Класс – осындай объектілердің сипатталу жиынтығы және олармен орындалатын әрекеттер жинытығы болып табылады.
Кластық құрылымы – программалаушының өзі анықтайтын тип. С++ тілінде объектіні анықтау үшін алдымен оның форматын class түйінді сөзімен белгілеу керек. Кластың анықталуы құрылымының (struct) анықталуына ұқсайды. Құрылымның кластан айырмашылығы – оның құрамындағы барлық мүшелер мен тәсілдердің ашық сипатталуында жатыр.
Бағдарламалау парадигмасын енді мынадай түрде айтуға болады:
«Өзіңізге қандай кластар керек екендігін анықтап алыңыз да, әрбір класс үшін барлық операциялар жиынын дайындаңыз; жалпы қасиеттерді айқын түрде көрсетіп, мұралауды пайдаланыңыз».
Жалпы стандарт бойынша, кластың барлық элементтері (мүшелері мен тәсілдері) жабық болып табылады. Жабық элементтерді осы кластан тыс ешбір сыртқы класс немесе функция пайдалана алмайды. Бұл инкапсуляция қағидасына сәйкес келеді. Инкапсуляция мәліметтерге программа кодынан қол жеткізуді бақылау, оларды жабық деп жариялау арқылы жүргізіледі.
ОББ қолданбалы бағдарламалауда жедел дамып келе жатқан бағыттардың бірі болып табылады.
ОББТ – бұл бағдарламалау тілі, онда анықталған қасиеттер жинтығына ие. ОББТ негізгі қасиеті болып: абстракция, инкапсуляция, мұраға қалдыру, полиморфизм.
Абстракция – мәліметтердің жаңа типін құруға бейімді қасиет болып табылады.
Инкапсуляция – жасырын ақпараттар, мәліметті және кодты біріктіретін механизм.
С++ бағдарламалау тілінде инакпсуляция қасиетін стандартты емес мәліметтердің типі қолдайды, оларды класс деп те атауға болады. Дұрыс анықталған класс инкапсуляцияланған объект ретінде іске қосылады. Демек оны бүтін бағдарламалық модуль ретінде қолдануға болады.
Мәліметті инкапсуляциялау - нақты операциямен мәліметтердің логикалық байланысуы. Мәліметтердің инкапсуляциялануы мәліметтердің глобальды еместігін, локальді екендігін білдіреді. Инкапсуляция автоматты түрде мәліметтің қорғалуына алып келеді. Ол үшін class құрылымнда private бөлімі қолданылады, онда мәліметтер мен тәсілдер мазмұны тұрады. Егер мәліметтер мен тәсілдер public бөлімінде тұрса, онда класқа тәуелді бола алмайды. protected бөлімінің көмегімен кез-келген кластың мәліметі мен тәсілін жатқызуға болады. Соңғының көмегімен класс иреархиясы класс болған жерде ата-ананың болатындығын, класты құру шаблонының болатындығын – мұрагердің болатындығын білдіреді. Класты сипаттаудан пайда болған объектілер осы кластың данасы болып табылады.
Мұраға қалдыру – объект басқа объектінің қасиетін мұраға ала алатын болса, онда мұраға қалдыру процессі.
С++ тілі мұраға қалдыру процесін ұсынады. Ол дегеніміз жаңа мәліметтің типін бар класпен сәйкестендіріп сипаттау деген сөз. Әдетті оны базалық класпен байланстыру деп атайды. Сондықтан жаңа класс ексі қасиеттің барлығын сақтайды. Егер объект бір ата –ананың қасиетін мұраға қалдырса, онда онды жалғыз мұраға қалдыру деп атайды. Егер объект бірнеше базалық кластың қасиметін мұраға қалдырса, онда оны жиақтық мұраға қалдыру деп атайды.
(поли көп морфе – формалар, яғни бірнеше формалармен жұмыс)
Полиморфизм – екі немесе бірнеше ұқсас тапсырманы шешу үшін қолданылатын қасиет.
Полиморфизм тәсіл мен өңдеу туралы ақпараттың жиынтығын да ұстайды. Полиморфті функция дегеніміз өзіндік атауы бар функция.
Полиморфті тәсілді Си++ бағдарламалау тілінде виртуалды тәсіл деп атайды.
Виртуалды функция ата-аналық класта анықталады.
Мәліметті инкапсуляциялау - нақты операциямен мәліметтердің логикалық байланысуы. Мәліметтердің инкапсуляциялануы мәліметтердің глобальды еместігін, локальді екендігін білдіреді. Инкапсуляция автоматты түрде мәліметтің қорғалуына алып келеді. Ол үшін class құрылымнда private бөлімі қолданылады, онда мәліметтер мен тәсілдер мазмұны тұрады. Егер мәліметтер мен тәсілдер public бөлімінде тұрса, онда класқа тәуелді бола алмайды. protected бөлімінің көмегімен кез-келген кластың мәліметі мен тәсілін жатқызуға болады. Соңғының көмегімен класс иреархиясы класс болған жерде ата-ананың болатындығын, класты құру шаблонының болатындығын – мұрагердің болатындығын білдіреді. Класты сипаттаудан пайда болған объектілер осы кластың данасы болып табылады.
Мұраға қалдыру – объект басқа объектінің қасиетін мұраға ала алатын болса, онда мұраға қалдыру процессі.
С++ тілі мұраға қалдыру процесін ұсынады. Ол дегеніміз жаңа мәліметтің типін бар класпен сәйкестендіріп сипаттау деген сөз. Әдетті оны базалық класпен байланстыру деп атайды. Сондықтан жаңа класс ексі қасиеттің барлығын сақтайды. Егер объект бір ата –ананың қасиетін мұраға қалдырса, онда онды жалғыз мұраға қалдыру деп атайды. Егер объект бірнеше базалық кластың қасиметін мұраға қалдырса, онда оны жиақтық мұраға қалдыру деп атайды.
(поли көп морфе – формалар, яғни бірнеше формалармен жұмыс)
Полиморфизм – екі немесе бірнеше ұқсас тапсырманы шешу үшін қолданылатын қасиет.
Полиморфизм тәсіл мен өңдеу туралы ақпараттың жиынтығын да ұстайды. Полиморфті функция дегеніміз өзіндік атауы бар функция.
Полиморфті тәсілді Си++ бағдарламалау тілінде виртуалды тәсіл деп атайды.
Виртуалды функция ата-аналық класта анықталады.