Программалау тілдері туралы



бет35/40
Дата15.12.2021
өлшемі0,64 Mb.
#101004
түріПрограмма
1   ...   32   33   34   35   36   37   38   39   40
Байланысты:
ишпей куатындар ушин. Таратпандар-1

Лекция №10

Кез келген программа ең соңғы үлгісінде процессорға арналған нұсқаулар жиынтығы болып табылады. Кез келген программалау тіліндегі жазылған командалар – осы нұсқаулар жиынтығының әрі ыңғайлы, әрі қарапайым жазбасы, ол программаны жазуды, түзетіп жөндеуді және уақыт өте келе өзгерістер енгізуді жеңілдетеді.Программалау тілінің деңгейі неғұрлым жоғары болған сайын, іс-әрекеттердің жазылу формасы соғұрлым қарапайым болып келеді. Мысалы, ассемблер тілінде циклді жүзеге асыру үшін регистрлерге айнымалылардың орналасуын қамтамасыз еткеннен кейін ғана нұсқаулар тізбегін жазуға болады, ал С немесе Паскаль тілдерінде бұл үшін бір-ақ операторды жазу жеткілікті.Программа көлемінің ұлғаюына байланысты компьютер жадында барлық мәліметтерді тиянақты түрде сақтау мүмкін болмайды да, мәліметтерді құрылымдау керек болады, яғни негізгі мәліметтерді белгілеп алып, қалған маңызды еместерін ескермеу қажеттігі туындайды. Бұл процесс программаның абстракциялық деңгейін арттыру деп аталады.Абстракцияны арттырудың функцияларды қолдану алғашқы қадамы функцияларды қолдану болып табылады,мұнда функцияны жазып, түзетіп жөндегеннен кейін оның жүзеге асырылу ерекшеліктерін ескерудің қажеті жоқ,өйткені функцияны шақыру үшін тек оның интерфейсін білу жеткілікті. Егер ауқымды айнымалылар қолданылмаса, интерфейс толығымен функцияның тақырыбы арқылы анықталады.Келесі қадам - ақпаратты құрылымдау және топтау арқылы оны табиғи түрге барынша жақын етіп бейнелеуді қамтамасыз ететін өзіндік мәліметтер типтерін сипаттау болып саналады. Мысалы, бір ғана құрылымның көмегімен қоймадағы тауардың бір түріне қатысты әртекті ақпаратты толығынан сипаттауға болады.Өзіндік мәліметтер типтерімен жұмыс істеу үшін арнайы функциялар қажет. Оларды осы мәліметтер типтерінің сипаттамаларымен бірге программаның бір жеріне мүмкіндігінше программаның басқа топтастырып,бөліктерінен жекелеген жөн.Осындай типтер мен функцияларды қолдану үшін олардың қалай жазылғанын толық білудің қажеті жоқ, тек қана солардың интерфейстерінің сипаттамаларын білу жеткілікті. Олармен жұмыс істеуге арналған мәліметтер типтері мен функциялардың сипаттамаларын модульдерге біріктіре отырып, модуль қолданушысынан онша маңызды емес ұсақ-түйектерді жасыру программаны құрылымдаудың одан әрі дамуы болып табылады.Жоғарыда айтылған абстракцияны арттырудың үш тәсілінің де мақсаты программа құрылымын жеңілдету,яғни оны көлемдері үлкен болғанмен, жалпы саны аз болып келетін блоктар түрінде көрсету және олардың арасындағы байланыстарды барынша азайту болып табылады. Бұлар ақпараттың аса үлкен көлемдерін басқарып, аса күрделі программаларды жеңіл түзетуге мүмкіндік береді.Класс түсінігін енгізу модульділік идеясының заңды жалғасы болып саналады. Класта мәліметтер құрылымдары мен оларды өңдеу функциялары біріктіріледі. Класс тек өз интерфейсі арқылы ғана қолданылады, оның орындалу ерекшеліктері класты пайдаланушы үшін маңызды емес.Кластар идеясы нақты әлем объектілері құрылымын бейнелейді кез келген заттың немесе процестің сипаттамалары немесе ерекше белгілері болады. Класс қолданушы анықтайтьн мәліметтер типі болып табылады. Класта қандай да бір заттың немесе процестің қасиеттері мен тәртіптері мәліметтер өрістері(құрылымдағы сияқты) және солармен жұмыс істеуге арналған функциялар түрінде беріледі. Құрылатын мәліметтер типінің қасиеттері стандарты типтердің қасиеттерімен бірдей деуге болады. Тип компьютердің жадындағы мәліметтердің ішкі бейнесін, осы типтегі шамалар қабылдай алатын мәндер жиынын, соны ен қатар осы шамаларға қолданылатын операциялар мен функцияларды анықтайтынын айта кетейік. Осылардың барлығын класс құрамында да беруге болады. Кластың маңызды қасиеті оның жұмыс істеу ерекшеліктерінің қолданушыдан нтерфейс арқылы жасырылуында (мысалы, нақты өмірде де автокөлікті оның қозғалтқышының қалай жұмыс істейтінін білместен-ақ жүргізуге болады, телефонды да «сигнал қалай жүретінін,байланыс принциптерін және кабельді кім тартқанын білмей-ақ қолдана аламыз»). Класс интерфейстері болып оның әдістерінің тақырыптары есептеледі. Сонымен,класты нақты әлем объектісінің моделі ретінде сыртқы ортаға қатысты тұйықталған қара жәшік ретінде қарастыруға болады. Кластар идеясы объектіге бағытталған программалаудың (ОБП) негізі болып табылады. ОБП негізгі принциптері Simula-67 және Smalltalk тілдерінде де құрылған болатын,алайда оны түсіну қиыншылықтары мен жүзеге асырылу тиімділігі төмен болғандықтан, кең қолданыс таппады. С++ тіліне бұл концепциялар тиімді, көркем, әрі қайшылықсыз жүзеге асырылды, осының арқасында бұл тіл кең таралып, оның көптеген мүмкіндіктері басқа да программалау тілдеріне енгізіле бастады.ОБП - бұл тілге қосылған жай ғана жаңа құралдар жиынтығы емес (С++ тілінде ОБП қолданбай-ақ жақсы программалар жазуға және керісінше, объектілерді сүйемелдеудің арнайы құралдары жоқ тілде де объектілік программа жазуға болады). ОБП-ны жиі программалаудың жаңа парадигмасы деп атайды.«Парадигма» термині білімді ұйымдастыру тәсілін құратын теориялар, стандарттар және әдістер жиынының бірігуін, басқаша айтқанда, әлемге деген жаңа көзқарасты білдіреді. Программалауда бұл термин есептеу моделін анықтау үшін, яғни ақпаратты құрылымдауда, есептеулер мен мәліметтерді ұйымдастыруда кең қолданылады. Объектігебағытталған программа объектілер мен солардың өзара байланыстарын көрсететін терминдер арқылы құрылады.Абстракция дәрежесін таңдау шешілетін есеп типімен анықталады. Қарапайым есептерді шығару үшін күрделі технологияларды қолданбаған жөн, ал күрделі мәселелерді шешуге тырысу сәтсіздікке қарапайым құралдарменұшыратады. Басқа жағынан қарасақ, күрделі технологияларды меңгеру уақыттың мол жұмсалуын талап етеді. Мәліметтер типінің «класс» ұғымының нақты шамалары класс даналары (экземплярлары) немесе объектілер деп аталады.Объектілер бір-бірімен хабарламаларды жіберу және қабылдау арқылы өзара әрекеттеседі. Хабарлама - бұл керекті параметрлер жиынын қамтитын, белгілі бір іс-әрекетті орындауға арналған сұраныс. Хабарламалар механизмі соларға сәйкес функцияларды шақыру арқылы жүзеге асырылады.Сонымен, объектіге бағытталған программалау көмегімен «оқиғалық-басқарылатын модель» жеңіл жүзеге асырылады мұнда мәліметтер екпінді түрде болады және программалық кодтың кез келген бір бөлігін шақыруды басқарады.ОБП-ның негізгі қасиеттері инкапсуляция, мұралау және полиморфизм болып табылады.Мәліметтердің оларды өңдеу функцияларымен бірігуі кезінде осы мәліметтерді қолдануға қажетсіз ақпаратты жасырудың жүзеге асуы инкапсуляция (encapsulation) деп аталады. Бұл идея жаңалық емес, ол құрылымдық және модульдік программалауда да қолданылған, ал ОБП-да ол өзінің логикалық жалғасын тапты.Инкапсуляция программаның абстракция деңгейін жоғарылатады:класс мәліметтері және оның функцияларының жүзеге асырылуы абстракция деңгейінен төмен орналасқан және программа жазу үшін олар туралы ақпараттың қажеті жоқ. Сонымен қатар, интерфейс өзгермеген жағдайда инкапсуляция кластың жүзеге асырылуын программаның негізгі бөлігін өзгертпестен түрлендіруге мүмкіндік береді (мысалы, мәліметтердің сақталу тәсілін жиымнан стекке өзгерту керек болғанда).

Жоғарыда бірнеше рет қайталап айтылғандай,программаны өзгерту қарапайымдылығы оның сапасының өте маңызды алғышарттарының бірі болып табылады.Инкапсуляция класты басқа ортада қолданған кезде ол өзіне тиісті емес жады аймақтарын бүлдірмейді және көптеген программаларда қолдануға арналған кластар кітапханаларын құруға мүмкіндік береді.



Мұралау - бұл ұрпақтары өздерінің ата-тектерінің барлық қасиеттерін мұралайтындай, оларды өзгерту және жаңа қасиеттер қосу мүмкіндіктеріне ие болатындай кластар иерархиясын құру мүмкіндігі. Мұралау кезінде қасиеттер қайталап сипатталмайды, сол себепті ол программа көлемін қысқартады.Әртүрлі кластардың ортақ белгілерін бір класс-тегіне тағайындау абстракцияның күшті механизмі болып табылады - кез келген ғылым да қарастырылатын пәндік аймақтың күрделілігін жеңуге мүмкіндік беретін абстракциялаудан және жіктеуден басталатыны белгілі ғой.Кластар иерархиясы бұтақ тәріздес құрылым түрінде бейнеленеді, мұнда жалпыға ортақ кластар түбірге жақын,ал арнайы кластар ішкі бұтақтар менжапырақтарда орналасады. С++ тілінде әрбір кластың ұрпақтары мен ата-тегінің саны шектелмеген. Кейде ата-тегі сыртқы класснемесе суперкласс, ал ұрпақтары субкласс немесе ішкікласс деп аталады.ОБП-ның үшінші негізі полиморфизм болып табылады.Полиморфизм иерархияның әртүрлі кластарында мағыналары ұқсас әрекеттер үшін бір атауды қолдану және қажетті әрекетті программаның атқарылуы барысында еркін түрде таңдау мүмкіндігі.С++ тілінде полиморфизм түсінігі кең қолданылады.Алайда объектіге бағытталған программалауды жобалау күрделі мәселе болып келеді, өйткені процеске тағы бір маңызды кезең - кластар иерархиясын құру қосылады.Нашар жобаланған иерархия күрделі және түсініксіз программалардың құрылуына алып келеді.

ОБП-ды қолданудың басқа бір кедергісі меңгерілуі қажет ақпарат көлемінің үлкендігі және оны меңгерудің қиындығы болып саналады.Жобалауды бастаудан бұрын объектіге бағытталған тәсілді қолдану қажеттілігін анықтап алған дұрыс. Егер кластардың иерархиясы қажет болмаса, әдетте модульдік технологиямен шектелу жеткілікті, мұндайда стандарты кітапхананың кластарын және өзіндік кластарды тиімді пайдалануға болады.





Достарыңызбен бөлісу:
1   ...   32   33   34   35   36   37   38   39   40




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет