Деректер жиінына өзгеріс енгізу тілі. Мәліметтерді қою, жою, өзгерту.. С++BuilderЛаб_1. Лабораториялы жмыс1 Таырыбы Объектіге бадарланан программалауды негізгі принциптері. Класс
Скачать 84.5 Kb.
|
» -тильда белгісінен басталады ;Лабораториялық жұмыс-1 Тақырыбы: Объектіге бағдарланған программалаудың негізгі принциптері. Класс. Программалауда қазіргі қолданылып жүрген технологиялар. Объектіге бағдарланған программалаудың негізгі принциптері. Класс түсінігі. Қабылдаушылық, инкапсуляция және полиморфизм түсініктері. Объект және оның қасиеттері, әдістері мен уақиғалары. 1. Қысқаша теориялық мәліметтер. Объектіге бағдарланған программалаудың негізгі принциптері: Программа құру процесін жылдамдату, көрнекілігін жетілдіру және оның көп тараған операциялық жүйелермен (көбінесе Windows операциялық жүйесімен) үйлесімділігін қамтамасыз ету жолында классикалық программалау тілдерінің (Basic, Pascal, C++ және т.б.) мүмкіндіктерін кеңейте отырып, программалау саласында жаңа бір бағыттағы технология- объектіге бағдарланған программалау қалыптасты. Объектіге бағдарланған программалауды жүзеге асыратын программалау орталарына Visual Basic, С++Builder және C++ Builder және т.б. жатады. ОБП- дың мағынасы мынада: программаның құрамындағы көптеген элементтер (мысалы, терезелер, менюлер, батырмалар және т.б. ), программаға тұтастай қойылатын және программистің басқаруына ыңғайланған белгілі бір объектілер ретінде қарастырылады. Бұл объектілердің инкапсуляция, қабылдаушылық және полиморфизм принциптеріне негізделген ерекше қасиеттері, әдістері және әрекеттері болады. Объектіге бағдарланған программалаудың негізін құрайтын да осы инкапсуляция, қабылдаушылық және полиморфизм принциптері. Инкапсуляция. ОБП-дағы инкапсуляция- бұл бір объектіге тән барлық қасиеттердің, әдістер мен әрекеттердің капсуланың қызметін атқаратын бір құрылымға немесе типке жинақталуы. Қабылдаушылық. ОБП-дағы қабылдаушылық – бұл белгілі бір түп-объектіден тарайтын және оның барлық қасиеттерін, әдістері мен әрекеттерін қабылдап алып, сақтап қалатын көп тума-объектілерінің болуы. Тума-объектінің түп-объектіден берілген қасиеттерін, әдістері мен әрекеттерін өзгертуге болмайды, бірақ оны жаңа элементтермен толықтыруға болады және одан тарайтын жаңа тума-объектілер алуға болады. Мұның нәтижесінде объектілердің пайда болуын, кім-кімнен тарайтынынын көрсететін, қазақ руларының пайда болуын көрсететін шежіре секілді, объектілер /немесе кластар/ иерархиясы пайда болады, оның ең түпкі немесе жоғарғы объектісі TObject класы болып табылады . Полиморфизм. ОБП-дағы полиморфизм - бұл түрлі объектілердің нәтижелері әр түрлі болатын, бірақ атаулары бірдей әрекеттерді орындай алуы. Мысалы, Windows терезелерінде ең жиі қолданылатын объектілердің бірі, батырмаларды алатын болсақ, бір терезеде бірнеше батырма тұрады, олардың кез-келгеніне «шерткенде немесе сырт еткізгенде», олар түрліше қызметтерді орындайды. Класс. Инкапсуляция, қабылдаушылық және полиморфизм принциптеріне сәйкес анықталатын объектілерді программада сипаттау және қолдану үшін класс деп аталатын жаңа құрылымдық тип қарастырылады. Кез-келген объект белгілі бір кластың өкілі, бір данасы немесе айнымалысы болып есептеледі. Кластың құрамына өрістер, әдістер және қасиеттер кіреді. Тума кластар өздерінде түпкі кластың барлық өрістерін сақтап калады және оны өзгерте алмайды, алып тастауға да болмайды, тек жаңа өрістер толықтыруға болады. Түпкі класстың программадағы сипатталуы немесе кластың жаңа данасын құру программа модулінде келесі түрде жазылады.: class кластың аты { private: < жабық элементтер немесе мәліметтер > < жабық конструкторлар> < жабық функция- элементтер> рrotected: < қорғалған элементтер немесе мәліметтер > < қорғалған конструкторлар> < қорғалған функция- элементтер> рublic: < ашық элементтер немесе мәліметтер > < ашық конструкторлар> < ашық деструкторлар> < ашық функция- элементтер> }; Мысалы: rectangle деп аталатын класты анықтау class rectangle // кластың аты { private: double length; // ұзындығы жабық элемент double width; // ені жабық элемент public: rectangle() // конструктор по умолчанию {assign(0,0);} rectangle (double Len, double Wide) //конструктор {assign(Len,Wide);} double Length() // функция -элемент {return length;} double Width() // функция -элемент {return width;} double Area() // // функция -элемент {return length*width;} void assign(double Len, double Wide); // // функция -элемент }; Мұндағы, private, protected, public бөлімдері класс құрамындағы элементтерді пайдаланудың ережелерін немесе приоритеттерін анықтайды. Бұл бөлімдердің орналасу тәртібі, саны өзгере береді , бір бөлімнің бірнеше рет қайталануы да мүмкін, бөлімдердің бос болуы да мүмкін, ал егер бірде-бір бөлім сипатталмаған болса компилятор кластың барлық элементтерін автоматты түрде жабық деп есептейді. Ол бөлімдердің әрқайсысының қызметі бар, яғни private- кластың жабық бөлімінде анықталған мәліметтерді сол кластың өзінің ғана функция-элементтері пайдалана алады, ал оны тума кластары түпкі кластың жабық элементтерін пайдалана алмайды ; protected- сол класс пен оның тума кластарына ғана тән; public- модульдің кез-келген жерінде қолданылатын және Object Inspector терезесінде жарияланған ашық элементтер, оны бәрі де пайдалана алады. Класстың функция-элементтері дегеніміз, бұл –бірнеше операторлардан тұратын, класстан тыс анықталатын функциялар. Бұл функциялар сол класс анықталған файлда болуы да мүмкін, бұл функция мен оның прототипінің берілуі сияқты болып келеді. Әдетте, функция-элементтер өз алдына бөлек * .h немесе *.сpp файлдарда жинақталады және оны анықтағанда әуелі оның класының атын жазып, сонан соң «::» /екі рет қос нүкте/ белгісін қойып, сонан соң барып функцияның аты жазылады, мысалы: class rectangle // кластың аты { private: ... ... ... public: ... ... ... void assign(double Len, double Wide); // функция -элемент }; // классты анықтау бітті void rectangle :: assign(double Len, double Wide) // функция-элементтің өзінің анықталуы { length=Len; width=Wide; } Конструкторлар классқа жататын объектілерді дұрыс құру үшін қолданылады. Конструктордың анықталуы келесі түрде болады: class rectangle // кластың аты { private: ... ... ... public: rectangle() // конструктор по умолчанию {assign(0,0);} rectangle (double Len, double Wide) //конструктор {assign(Len,Wide);} ... ... ... }; Конструкторлармен жұмыс жасағанда келесі ережелер сақталады: Конструктордың аты міндетті түрде класстың атымен бірдей болады; Конструктордың типі яғни оның қайтаратын мәнінің типін көрсетуге болмайды, тіпті void типін де қолдануға болмайды; Класста бір немесе бірнеше конструктор болуы мүмкін немесе тіпті де болмауы мүмкін; Конструктор по умолчанию болғанда оның параметрлері берілмейді немесе оның мәні нақты көрсетіліп беріледі, мысалы: class rectangle // кластың аты { private: ... ... ... public: rectangle() // конструктор по умолчанию {assign(0,0);} rectangle (double Len, double Wide) //конструктор {assign(Len,Wide);} rectangle (double Len=10, double Wide=12) //конструктор со значением по умолчанию ... ... ... }; Конструктор классқа жататын объектілердің көшірмелерін құрады; Сол классқа жататын жаңа объектіні анықтау немесе құру да айналып келгенде сол конструкторды шақырады. Деструкторлар классқа жататын объектілерді автоматты түрде жою үшін қолданылады. Деструктордың анықталуы келесі түрде болады, мысалы: class rectangle // кластың аты { private: ... ... ... public: rectangle(); // конструктор ... ... ... Деструктордың аты міндетті түрде класстың атымен бірдей болады және « Деструктордың типі яғни оның қайтаратын мәнінің типін көрсетуге болмайды, тіпті void типін де қолдануға болмайды; Класста бір ғана деструктор болуы мүмкін немесе болмайды, болмаған жағдайда компилятор деструкторды өзі автоматты түрде тағайындайды ; Деструктордың параметрлері болмайды. 2. Мысалдар. Мысал 1. Төртбұрыштың берілген ұзындығы мен енін және ауданын баспаға шығара алатындай мүмкіндіктер қарастырылған rectangle класын анықтаңыз және сол класқа жататын rect объектісіне сол класта қарастырылған мүмкіндіктерді қолданатын программа жазыңыз: #include #include class rectangle // классты анықтаудың басталуы { private: double length; double width; public: rectangle() {assign(0,0);} rectangle (double Len, double Wide) {assign(Len,Wide);} double Length() {return length;} double Width() {return width;} double Area() {return length*width;} void assign(double Len, double Wide); }; // классты анықтаудың соңы void rectangle :: assign(double Len, double Wide) { length=Len; width=Wide; } int main() { rectangle rect; // rectangle класына жататын rect объектісін анықтау double uzin, eni; cout<<"uzindigi men enin beriniz-" ; cin>>uzin>>eni; rect.assign(uzin,eni); cout<<"\n"<<"Tortbyrishtin uzindigi - "< cout<<"\n"<<"Tortbyrishtin eni - "< cout<<"\n"<<"Tortbyrishtin audani - "< getch(); //return 0; } Программаның нәтижесі: uzindigi men enin beriniz-10 12 Tortbyrishtin uzindigi - 10 Tortbyrishtin eni - 12 Tortbyrishtin audani - 120 Әдістер. Кластың немесе объектінің әдістерін осы класқа енетін, процедуралар мен функциялар құрайды. Олар кәдімгі процедуралар мен функциялар сияқты жазылады. Кластың әдістерінің немесе процедура мен функциялардың тақырыбы /мысалы, procedure Button1Click (Sender: TObject); / программа модулінің interfase- секциясындағы класты сипаттау бөлімінде жазылады да, ал денесі әдістің қайсы класқа тиесілі екендігін көрсететін құрама атпен /мысалы, TForm1.Button1Click(Sender: TObject); / implementation – секцияда жазылады. Программа модулінде кластың әдістері оның түрлеріне байланысты түрлі тәсілдермен шақырылады. Әдістің түрлеріне сәйкес, әдістерді сипаттағанда , оның тақырыбынан кейін «;» белгісі арқылы жазылатын келесі директивалар қолданылады: virtual – виртуальдық әдіс; dynamic – динамикалық әдіс; override – тоқтатушы әдіс; message – хабарлауды өңдеуші әдіс; abstract – абстрактылы әдіс. С++ -те кез-келген класс үшін анықталған, кластың жаңа данасын құратын конструктор және құрылған дананы жоятын деструктор деп аталатын екі әдіс қарастырылған. TОbject класы және одан тарайтын тума кластардың басым бөлігі үшін бұл әдістер сәйкесінше Create және Destroy деп аталады. Қасиеттер. Кластың қасиеттері немесе сол класқа жататын объектінің қасиеттері - бұл өрістерді пайдалануға арналған арнайы механизм. Класты сипаттауда қасиеттерді жазу үшін property, read, write қызметші сөздері қолданылады. Әдетте объектінің қасиеті үш элементпен анықталады : property сөзінен кейін жазылатын қасиеттің аты немесе типі көрсетілген өріс, read сөзінен кейін жазылатын қасиеттің мәнін оқуға арналған әдіс, және write сөзінен кейін жазылатын мәнді жазуға арналған әдіс. Программа модулінде қасиеттердің мәнін көрсету келесі түрде жазылады: кластың_аты->қасиеті:= мәні; Оқиғалар. С++Builder ортасында немесе жалпы ОБП-да программалауда қандайда болмасын жасалған әрекетке сәйкес жауап- реакция қайтарылуы керек. Осы жасалатын әрекет, класс не объект үшін оқиға ретінде тіркеліп, оған сәйкес реакция- жауап ретінде процедура түріндегі программалық код жазылады. Процедура болғандықтан бұл программалық кодтарды «әдіс» деп қарастырады да, «оқиға»- қабылдайтын мәндері осы процедуралық типтер болатын «қасиет» болады. Оқиға болған кезде, шақырылатын процедураны немесе әдісті оқиға өңдеуші / Event Handler- обработчик событий/ деп атайды, С++Builder- де әрбір кластың өзіне тән оқиғаларына сәйкес, программа модуліне, визуальдық компоненттің белгісіне екі рет шерту арқылы, автоматты түрде қойылатын стандарт оқиға өңдеушілері болады, Стандарт оқиғалардан басқа, кез-келген оқиғаларды өңдеушілердің шаблон процедураларын Object Inspector терезесінің Events жапсырмасындағы оқиғаның атына сәйкес жолға екі рет шерту арқылы қояды. 3. ӨЗІНДІК ЖҰМЫС ТАПСЫРМАЛАРЫ: Тапсырманы орындауға нұсқау: есепті әуелі құрылымды /struct/ пайдаланып, сонан соң class – ты пайдаланып орындаңыз. 1-вариант. “ Өте жақсы “ , “ өте жақсы және жақсы “, “жақсы және қанағаттанарлық “,” тек қанағаттанарлық “ бағалармен оқитын студенттердің тізімін құру программасын жазу. 2- вариант. Фамилиялары бірдей студенттер оқитын топты анықтау программасын жазу. 3- вариант. Фамилиясы “A”-дан басталатын қызметкерлер тізімін және олардың орташа еңбекақысын көрсететін программа жазу. 4-вариант. Аяқ киім дүкенінің ассортименті жазба түрінде берілген, ен қымбат әйел адамынын аяқ киімін және ер адамдар аяқ киімін, олардың құнымен көрсететін программаны жазу. 5- вариант. “ Телефондық анықтаманы моделдейтін “ программаны құру, әйел адамдардың телефон нөмерін және мекен жайын шығару. 6- вариант. Автомашинаны жөндеу шеберханасында машина жөніндегі мәліметтер жазба түрінде берілген, қызыл түсті машиналардың маркасын және нөмерін аңықтайын программаны жазу. 7- вариант. Мекеменің қызметтері туралы мәліметтер жазба түрінде берілген. Ер адамдардың мамандығы мен жасып көрсетіп, экранға тізім шығарыңыз. 8-вариант. Кітаптардың аты,авторы,шыққан жылы,бағасы және тиражы анықталған каталог құрыңыз. Экранға алфавитімен тиражы бойынша сұрыпталған кітаптар тізімін шығарыңыз. 9-вариант Теміржол кассісіндегі төмендегідей мәліметтер белгілі. Поездың нөмері,баратын жері,билеттің бар жоғы анық.. Бос билеттердегі саны 125-ке тең поездардың нөмерін, баратын жерін экранға шығарыңыз. 10-вариант Өзініз оқитын топтың тізімін алфавитімен студенттердің туған жылы бойынша реттеу программасын жазыңыз, нәтижесін экранға шығарыныз. 11-вариант Кітапхананың оқырмандары туралы мәліметтері белгілі. Кітапханаға қарыз оқырмандары туралы олардың фамилиясын,үйінің адресін, жұмыс орнын көрсететін тізім шығару программасы құрыңыз. 12-вариант Стоматолгке келушілердің тізімінен фамилияларының бас әрпі “Б“-дан “ Л “-ға дейінгі аралықта жатқан фамилияларды шығару программасын құрыңыз. 13-вариант Оқу жылы бойы жалғыз ғана “төрт“ алған, қалған бағалары кілең “ бес“ студенттердің анкеталық мәліметтерің экранға шығару программасын құрыныз. 14-вариант Топ студенттерінің мәліметтері белгілі. Топтық орта балын есептеңіз. Топтың орта балынан орташа балы төмен студенттердің тізімін экранға шығару программасын құрыңыз. 15-вариант Фирма қызметкерлері туралы мәліметтер белгілі. Қызметкерлердің фамилиясын және атын сонымен қатар әйел адам болса көзінің түсін,ер адам болса темекі шегетін, шекпейтінін көрсететін тізімді экранға шығару программасын құрыңыз. |