ҚАЗАҚСТАН РЕСПУБЛИКАСЫ БІЛІМ ЖӘНЕ ҒЫЛЫМ МИНИСТРЛІГІ
Семей қаласының шәкәрім атындағы семей мемлекеттік университеті
|
3 деңгейлі СМЖ құжаты
|
ПОӘК
|
ПОӘК 042-39. 1.ХХ/01- 2013
|
ПОӘК
«Программалау ІІ» пәні бойынша оқу-әдістемелік материалдар
|
Редакция №____от_____
|
5В011100 – «Информатика» мамандығына арналған
«Программалау ІІ»
ПӘНІНІҢ ОҚУ-ӘДІСТЕМЕЛІК КЕШЕНІ
ОҚУ-ӘДІСТЕМЕЛІК МАТЕРИАЛДАР
Семей
2013
МАЗМҰНЫ
-
Глоссарий
-
Дәрістер
-
Практикалық және зертханалық жұмыстар
-
Студенттің өздік жұмысы
ГЛОССАРИЙ
Нысанға бағытталған программалау (НБП) - қоршаған ортаны модельдеуде сапалы мүмкіндіктерге ие, сезімдік тұрғыдан түсініктіұғымдар жиынтығы негізінде құрылады, алдын – ала жазылып қойған программа кодын көп рет қолдануға мүкіндік береді.
Программалау – технология, ол бағдарлама құру процесін межелі өңдірістік іс-әрекетке айналдыру арқылы жинақталған тәжірибе мен білімді жетілдіреді.
Нысан өрістері – бұл нысан қамтитын мәліметтер.
Инкапсуляция - өзінде тек қана өрістерді ғана емес, сонымен қатар осы өрістерге мүмкін әрекеттердің сипаттамасын қамтитын нысанның қасиетіні.
Әдістер - өріс түрінде берілген мәліметтерден басқа нысан осы өрістерге мүмкін әрекеттерді сипаттайтын ішкі программмалар.
Нысан экземпляры - нысандық тип жарияланғаннан кейін осы тип негізінде жасалатын типтік айнымалылар.
Мұрагерлеу - бар типтің негізінде оған жаңа өрістер мен әдістерді қоса отырып, жаңа тип жасауға болатын объектілік типтердің қасиеті.
Конструктор - егер нысандық типте тым болмаса бір виртуалды әдіс болса, онда виртуалды әдіске бірінші қатынас жасағанға дейін объект экземплярына қолданылатын арнайы әдіс.
Жоба - Delphi -де дайындалатын программа.
Форма - программаны дайындау алдында ашылатын, программалық сұқбаттық терезесі.
Қасиет – (сипаттама, параметр) –айнымалалардың ерекше түрі. Олар обьектінің түрлі мүмкіндіктерін сипаттап ағымдық күйін анықтайды.
Оқиға- программамен жұмыс істеу барысында обьект жағдайының белгілі бір әрекетке жауап ретінде өзгеруі.
Оқиғаны өңдуіш не өңдеу процедурасы - оқиғаға байланысты құрылатын процедура.
Модульдер – бағдарламаның үзіндісін орналастыру үшін қолданылатын бағдарламалық бірлік. Модуль деп бағдарламаның белгілі бір тәуелсіз бөлігін атайды және олар стандартты және бейстандартты болып екі топқа бөлінеді.
Uses - арнайы сөз; «модульдер тізімі» - бағдарлама мен модульдерді бір-бірімен байланыстыруға қажетті модульдердің тізімі. Бұл сөйлемді қолданатын модульдер спецификациясы деп атайды және ол негізгі бағдарламаның тақырыбынан соң орналау қажет.
Модульдің интерфейстік бөлігінде негізгі бағдарламада және басқа модульдерге қолданылатын аталмыш модульдің барлық сыртқы объектілері анықталады. Паскаль бағдарламасы сияқты бұл анықтамадағы объектілердің реті кез келегн түрде бола алады. Интерфейстік бөлікте ішкі бағдарламалардың тек қана тақырыптары келтіріледі, ал олардың толық анықтамасы модульдің орындалатын бөлігінде көрсетіледі.
Implementation - модульдің орындалатын бөлігінде интерфейсте көрсетілген ішкі бағдарламалардың орындайтын жұмысы анықталады. Ішкі бағдарламалардың орналасу реті интерфейстік бөлігінде көрсетілген ретімен бірдей болуы шарт емес. Бұл бөлімде ішкі бағдaрламлардың тақырыбын ғана көрсетсе жеткілікті, себебі параметрлер тізімі мен функция нәтижесінің типі интерфейсте анықталғаг. Сондай-ақ мұнда аталмыш модульге ғана тән және бұл модульден тыс белісіз тұрақтыларды, типтерді, айнымалыларды және ішкі бағдарламаларды жариялауға болады.
Инициялизациялау бөлігінде осы модульдерді іске асыратын бағдарлама жұмысының басталғандығы туралы операторлар орналасады. Модульдердің іске асырылуы бағдарламаның Uses бөлігінде көрсетілген ретімен орындалады. Бұл бөлік Initalisation сөзімен басталады. Бірақ ол бөліктің болмауы да ықтимал.
Класс деп объектілерді құрудағы қолданылатын үлгілерді айтады, ал объект сол үлгінің туындысы болып табылады.
Әдістер - инкапсуляцияланған класстар процедура және функцияларды.
ДӘРІСТЕРДІҢ ҚЫСҚАША КОНСПЕКТІСІ
Дәріс №1. Процедуралық бағдарламалаудан объектіліге өту. Объектіге бағытталған бағдарламалаудың негізгі принциптері мен кезеңдері.
Нысанды бағдарланған программалау – программалаудың құрылымдық программалаумен салыстырғанда, әлдеқайда жетілдірілген түрі. Программалау ғылымының дамуының белгілі кезеңінде күрделі есептің шешімін жеңілдету үшін оны қарапайым ішкі есептерге бөлу туралы ұғым қалыптасты. Мәселе программаның көп операторлардан емес, салыстырмалы түрде алғанда өз бетінше бөліктер жиынтығынан тұруында болды. Ішкі программалар программисттерді қарапайым есептердің мазмұнына терең үңілуден құтқарды, яғни ішкі программа жасалынғаннан кейін оның қалай құрылғанын білмей–ақ, оны қолдана беруге болады. Белгілі бір процедураның, функцияның қандай қызмет атқаратынын білу жеткілікті. Соңынан құрылымдық программалау одан әрі дамыды, яғни модульдер концепциясы дүниеге келді. Модуль – Turbo Pascal-дің тұрақтылар, мәліметтер типі, айнымалылар, сол сияқты процедуралар мен функциялар сипатталатын компиляцияланатын файлдары.
НБП – бұл программалаудың ескі әдстемесінің табиғи эволюциясының нәтижесі болып табылады. Ішкі программалар программистке қарапайым есептердің мазмұнына енбей-ақ қолдануға болатыны сияқты объектілер мен де, олардың қалай ұйымдастырылғанын білмей-ақ жұмыс істеуге мүмкіндік берді.
Ескерту! НБП қарапайым есептеулерді орындайтын программалар үшін арналмаған. Мұндай жағдайда НБП тәсілдерін қолдансақ, программа тілдік конструкциялармен артық жүктеледі.
НБП негізінде 3 негізгі принцип жатыр. Олар: инкапсуляция, мұрагерлеу(наследование) және полиморфизм.
Негізгі ұғымдар
Класстар – бұл күрделі программаларды жеңілдету және оның сапасын арттыру үшін ойластырылған программистердің ерекше өнер табысты. Кластардың негізінде үш іргелі принцип жатыр, олар инкапсуляция, мұрагерлік және полиморфизм.
Инкапсуляция
Класс- өрістер, әдістер мен қасиеттер деп аталатын үш маңызды ұғымның бірлігін береді. Осы үш маңызды ұғымды бір бүтінге біріктіру инкапсуляция деп аталады. Көпшілік жағдайда, инкапсуляция класты программаның қалаған бөліктерінен оқшаулауға мүмкіндік береді, нақты бір есепті шешудің «өзіндік жеткіліктігін» арттырады. Нәтижесінде класс қандай да бір басқарушылықты атқарады. Мысалы, TForm класы Windows –терезесін құруға қажеттілерден, TМemo класы – толық басқарылатын мәтіндік редактор жұмысын, Ttimer класы программа жұмысын таймермен қамтамасыз ететін құралдарды қамтиды (немесе инкапсуляциялайды)
Сонымен, инкапсульяция дайын программалық жабдықтаумен жұмыс істеуге арналған қуатты құрал болып табылады. Delphi жүйесінің кластар кітапханасы- бұл программа құруға арналған Borland фирмасының программистері құрған кірпіштер жиынтығы екен.
Мұрагерлік
Кез-келген класс басқа кластан туындайды. Ол үшін оны хабарлағанда ата –ана кластың аты көрсетіледі:
TchildClass=class(TParentClass)
Туындаған класстар автоматты түрде өзінің ата – анасының өрісі, әдісі және қасиеті шығады және олардың жаңамен толықтырылуы мүмкін. Сөйтіп, мұрагерлік принципі күрделі кластарды кезеңмен құруды және өзінің жеке кластар кітапханасын жасауға мүмкіндік береді.
Object Pascal –дың барлық кластары жалғыз ата-ана TObject класынан туындаған. Бұл кластың өрісі және қасиеттері жоқ, бірақ өзіне кез-келген объектілердің барлық өмірлік қасиеттерін қамтитын жалпы тағайындалудың әдістерін қамтиды. Программист TОbject класы ата – ана болмайтын класс құра алмайды. Оған төмендегідей бейнелеулер тән:
TaClass=Class(TObject)
TaClass=Class
Мұрагерлік принципі TObject класынан оның ұрпақтарына қарай дами отырып, біртіндеп кеңейетін тармақталған кластар құруға әкеледі. Әрбір ұрпақ өзінің ата-анасының мүмкіндіктерін толықтырып (жаңартып), оның өзінің ұрпақтарына беріп отырады.
1-сурет. Delphi-дегі кластар тармағы.
1-суретте Delphi-дегі кластар тармағы келтірілген. TPersistent класы өзінің TObject ата-анасының мүмкіндіктерін кеңейтеді: ол мәліметтерді файлға сақтап, оны одан қайтадан ала алады, нәтижесінде оның барлық ұрпақтары осы мүмкіндіктерді орындай алады. TComponent класы өз кезегінде, класты құрушының ортасымен әрекеттесіп, оны өзінің ұрпақтарына бере алады. TControl класы файлдармен және класты құрушының ортасымен ғана жұмыс істеп қоймай, сонымен бірге, экранда көрінетін бейнелерді құруға және оның қызметін орындауға қабілетті, ал оның ұрпағы TwinControl Windows терезелерін де құра алады және т.б.
Полиморфизм
Полиморфизм –бұл мағынасы ұқсас мәселелерді әр түрлі тәсілмен шешетін кластар қасиеті. Object Pascal-дың шеңберінде кластардың қасиеті оған кіретін әдістердің жиынтығымен анықталады. Класс ұрпақтарындағы қандай да бір әдістің алгоритімін өзгерте отырып, программист бұл ұрпаққа ата –анасында жоқ ерекше қасиетті бере алады. Әдісті өзгерту үшін оны сол ұрпақта жабу қажет, яғни ұрпақты бір атаулы әдісті хабарлап, оған қажетті әрекетті жүзеге асыру қажет. Нәтижесінде, объект-ата-ана мен объект-ұрпақта әртүрлі алгоритмдік негізі бар, объектілерге әртүрлі қасиет беретін екі бір атаулы әдіс жұмыс істейтін болады.
Object Pascal тілінде полиморфизм тек жоғарыда сипатталған мұрагерлік механизмі мен ата –ананың әдісін жабумен шектелмейді, сондай –ақ оларды виртуаландыруда жүзеге асады.
Дәріс №2. Объектілік декомпозиция. Объектілер және хабарламалар.
КОНСТРУКТОРЛАР, ДИНАМИКАЛЫҚ НЫСАНДАР ЖӘНЕ ДЕСТРУКТОРЛАР
Нысандарды жасау (класс сипаттамасында қамтылған ақпарат негізінде) үшін конструкторлар деп аталатын арнайы әдісті қолданады. Конструкторлар нысан үшін қажетті жадыны (үймеден) бөледі, айнымалылардың мәндерін инициализациялайды және т.б. сипаттамада қамтылған әрекеттерді орындайды (класс сипаттамасында әдетте конструктор сипаттамасы болады).
Төмендегі сипаттамада конструктор тақырыбы келесі түрге ие болады:
constructor Create; Параметрлері де болуы мүмкін.
Әдетте әдістер нысан жасалғаннан кейін ғана қолданылады, яғни конструктор орындалғаннан кейін қолданылады. Ал конструктордың өзін қалай орындау керек? Тілде кейбір әдістердің (КЛАСС әдістері деп аталатын) нысан жасалғанға ДЕЙІН орындалуы қарастырылған. Конструкторды шақыру синтаксисі келесі түрде бола алады:
<осы класстың_айнымалысы>:=<класса_атауы>.Create;
Нәтижесінде осы класстың нысаны құрылады, және оның өрістері мен әдістеріне қатынау үшін осы класстың айнымалыларын қолдану керек.
нысан үшін бөлінген жадыны босату үшін және осы кезде қажетті басқа да әрекеттерді орындау үшін деструктор деп аталатын әдіс қолданылады.
Оны шақыру синтаксисі: <нысан_атауы>.Destroy;
Ескерту: нысанмен жұмысты тоқтату үшін әдетте басқа әдісті шақырады: Free, ол кейбір пайдалы әрекеттерді орындайды, ал соңынан Destroy шақырады.