ОБП – программалау технологиясы ретінде. ОБП-ның негізгі түсініктері
Дәріс мақсаты: объектіге бағытталған программалау түсінігін қалыптастыру, программалаудың негізгі принциптері мен қасиеттерін меңгерту, объектіге бағытталған программалау тілдеріне шолу жасау.
Кілттік сөздер: объектіге бағытталған программалау; инкапсуляция; полиморфизм; мұрагерлік; абстрактілеу; қатынауды шектеу; модульділік; иерархиялық.
Жоспар:
Объектілі-бағытталған программалау тарихы
Объектілі-бағытталған программалаудың негізгі принциптері
Объектілі-бағытталған программалаудың қасиеттері
ОБП тілдері
Объектілі-бағытталған программалау тарихы Объектілі-бағытталған программалау – процедуралық программалау идеологиясының дамуы нәтижесінде пайда болды. Одан да басқа, қазіргі объектілі бағытталған программалауда – оқиға (оқиғалы бағытталған программалау деп те атайды) және компонент (компоненттік программа) түсінігі көптеген мағына береді.
Бұл программалаудың алғашқы тілі – Симула болып табылады. 1967 жылы пайда болған бұл тіл шындыққа революциялық идеяны: объектіні, класстарды, виртуальді әдістерді және т.б ұсынды, сондықтан мұның барлығы қазіргі замандағыларға қабылдана қоймады. Соған қарамастан, көптеген концепциялар Smalltalk тілінде Алан Кей және Дэн Ингаллспен бірге дамытты. Дәл осы тіл ең алғашқы ұзақ таратылған объектілі бағытталған программалау тілі болып табылады.
Қазіргі уақытта программаның қолданбалы тілінің саны басқа парадигмаларға қарағанда көбірек. Прогаммалық жүйенің облысында әлі де процедуралық программаның парадигмасы қолданылады және де программаның жалпы қабылданған тілі – С тілі болып табылады. Операциялық жүйенің жүйелік және қолданбалы деңгейдегі өзара іс-әрекеттерде объектілі бағытталған программалау тілдері ғана өз ықпалын көрсетті. Мысалы, мультиплатформалық программаның кітапханаларының ішінде ең көп таралғаны – С++ тілінде жазылған Ot объектілі бағытталған кітапхана болып табылады.
Объектілі-бағытталған программалаудың негізгі принциптері Программалау түсінігінде объектілі бағытталған программалау программаны программалық объектілер жиынтығы түрінде көрсетуге негізделген күрделі программалық қамсыздандыруды құру технологиясы түрінде анықталады. Бұл жерде объектінің өзі қандай да бір тип (класс) экземпляры болып табылады, ал кластар қасиеттерді тұқым қуалау арқылы иерархия құрады. Мұндай жүйеде программалық объектілер қарым қатынасы хабарламаларды жіберу арқылы іске асырылады. Объектілі бағытталған программалаудың негізгі артықшылығы модульдік программалаумен салыстырғанда модульдер арасында жіберілген ақпарат көлемінің азаюы және модуларалық байланыстар санының қысқаруы. Объектілі программалау программа құрудың жаңа технологиялық құралдарын ұсынады. Олар тұқымқуалаушылық, полиморфизм, компазиция, толтыру, паралелизм. Объектілі бағытталған программалаудың негізгі кемшілігі программалық жүйе құрастырылуының күрделілігі есебінен жылдамдықтың азаюы. Объектілі бағытталған программалау негізіне абстрактілеу, қатынауды шектеу, модулділік, иерархиялық, типтеу, параллельділік және тұрақтылық принциптері жатады.
Абстрактілеу — есептің пәндік облысында абстрактілерді ерекшелеу процесі. Абстракция дегеніміз қандай да бір объектінің оны барлық басқа объект түрлерінен ерекшелейтін сипаттамалар жиынтығы. Осылайша берілген объект ерекшеліктерімен шешілетін есептің әрі қарай қарастырылуы және талдануы жағынан нақты анықтайды. Анықтамаға сәйкес нақты затқа қолданатын абстракция шешілетін есепке тәуелді болады. Мысалы, бір жағдайда бізді заттың формасы қызықтырса, екіншісінде оның самағы, үшіншісінде жасалған материалы және т.с.с. Объектілі бағытталған программалау абстракцияның барлық қасиеттерін бүтін практикалық бірлікке, яғни қандай да бір абстрактілік типке біріктіруді қарастырады.
Қатынауды шектеу — абстракцияны іске асыратын жеке элементтерін шектеу. Қатынауды шектеу қажеттігі абстракцияны сипаттауда екі бөлікті шектеуді қарастырады:
Интерфейс абстракцияны жүзеге асырудың қолжеткізуге мүмкіндігі бар элементтің жиынтығы.
Реализация немесе жүзеге асыру. Абстракцияны жүзеге асырудың қолжеткізуге мүмкіндігі жоқ элементтің жиынтығы.
Модульділік — программалық жүйелерді құруда программаны жеке бөліктер түрінде жүзеге асыру принципі.
Иерархиялық — абстрактордың реттелген немесе ранжирленген жүйесі. Иерархиялық принципі программалық жүйелерді құруда иерархияларды қолдануды қарастырады. Объектілі бағытталған программалауда иерархияның екі түрі қолданылады:
“бүтін / бөлік“ иерархиясы кейбір абстрактор қарастырып отырған абстракцияға оның бөлігі ретінде кіретінін көрсетеді. Иерархияның бұл нұсқасы жобалаудың әр кезеңдерінде жүйені бөліктерге бөлу процесінде қолданылады.
“жалпы / жеке” иерархиясы қандай да бір абстракция, басқа абстракцияның жеке жағдайы болатынын көрсетеді. Мысалы, тамақтанатын үстел үстелдің нақты түрі, ал үстел жихаздың нақты түрі. Иерархияның бұл нұсқасы класс құрылымын құруда күрделі кластар қарапайым кластар негізінде оларға жаңа сипаттамалар қосу жолымен құрылған кезде қолданылады. Объектілі бағытталған программалаудың негізгі механизмдерінің бірі жалпы жеке иерархиясында қасиеттерді тұқымқаулау. Тұқымқуалау абстрактор арасындағы қатынас. Бұл кезде қандай да бір абстракция бір немесе бірнеше басқа абстракцияның құрылымдық немесе функционалдық бөлігін қамтиды.
Типтеу — объектілер қасиеттеріне салынатын және әр түрлі типті абстракцияның өзара алмасуына жол бермейтін шектеу. Типтеу приципін қолдану:
Программалық объектіге қолданатын мүмкін емес амалдармен байланысты қателерді ертерек табуға;
Құжаттауды жеңілдетуге;
Эффективтік кодты генерациялауға мүмкіндік береді.
Параллельділік — бірнеше абстракцияның қасиеттері бір уақытта активт күйде болады.
Тұрақтылық — абстракцияның процестен тәуелсіз болу қасиеті.
Осы аталған 7-принциптің төртеуі жүзеге асырылатын болса, онда тіл – объектілі бағытталған болып саналады.