Программалауда қазіргі қолданылып жүрген технологиялар. Объектіге бағдарланған программалаудың негізгі қағидалары



бет1/6
Дата13.06.2016
өлшемі7.14 Mb.
#131262
түріПрограмма
  1   2   3   4   5   6
IV Зертханалық және өзіндік жұмыстарға арналған әдістемелік нұсқаулар
1 - зертханалық жұмыс.

Программалауда қазіргі қолданылып жүрген технологиялар. Объектіге бағдарланған программалаудың негізгі қағидалары

Әдістемелік нұсқаулар
Объектіге бағдарланған программалауды жүзеге асыратын программалау орталарына Visual Basic, C++ Builder және т.б. жатады. ОБП-дың мағынасы мынада: программаның құрамындағы көптеген элементтер (мысалы, терезелер, мәзірлер, батырмалар және т.б.), программаға тұтастай қойылатын және программистің басқаруына ыңғайланған белгілі бір объектілер ретінде қарастырылады. Бұл объектілердің инкапсуляция, қабылдаушылық және полиморфизм принциптеріне негізделген ерекше қасиеттері, әдістері және әрекеттері болады. Объектіге бағдарланған программалаудың негізін құрайтын да осы инкапсуляция, қабылдаушылық және полиморфизм принциптері.

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

Тума кластар өздерінде түпкі кластың барлық өрістерін сақтап калады және оны өзгерте алмайды, алып тастауға да болмайды, тек жаңа өрістермен толықтыруға болады. Түпкі класстың программадағы сипатталуы немесе кластың жаңа данасын құру программа модулінде келесі түрде жазылады.:



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 бөлімдері класс құрамындағы элементтерді пайдаланудың ережелерін немесе приоритеттерін анықтайды. Ол бөлімдердің әрқайсысының қызметі бар.



Класстың функция-элементтері дегеніміз, бұл – бірнеше операторлардан тұратын, класстан тыс анықталатын функциялар. Бұл функциялар сол класс анықталған файлда болуы да мүмкін, бұл функция мен оның прототипінің берілуі сияқты болып келеді. Әдетте, функция-элементтер өз алдына бөлек *.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);}

... ... ...

};

Конструктор үнсіздік бойынша болғанда оның параметрлері берілмейді немесе оның мәні нақты көрсетіліп беріледі, мысалы:



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(); // конструктор

... ... ...

~rectangle (); //деструктор

... ... ...

};
Жаттығу жұмыстары


Төртбұрыштың берілген ұзындығы мен енін және ауданын баспаға шығара алатындай мүмкіндіктер қарастырылған 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 – секцияда жазылады.

С++ -те кез-келген класс үшін анықталған, кластың жаңа данасын құратын конструктор және құрылған дананы жоятын деструктор деп аталатын екі әдіс қарастырылған. TОbject класы және одан тарайтын тума кластардың басым бөлігі үшін бұл әдістер сәйкесінше Create және Destroy деп аталады.



Қасиеттер. Кластың қасиеттері немесе сол класқа жататын объектінің қасиеттері - бұл өрістерді пайдалануға арналған арнайы механизм. Класты сипаттауда қасиеттерді жазу үшін property, read, write қызметші сөздері қолданылады. Программа модулінде қасиеттердің мәнін көрсету келесі түрде жазылады:

кластың_аты->қасиеті:= мәні;

Оқиғалар. Процедура болғандықтан бұл программалық кодтарды «әдіс» деп қарастырады да, «оқиға»- қабылдайтын мәндері осы процедуралық типтер болатын «қасиет» болады. Оқиға болған кезде, шақырылатын процедураны немесе әдісті оқиға өңдеуші / Event Handler- обработчик событий/ деп атайды, С++Builder- де әрбір кластың өзіне тән оқиғаларына сәйкес, программа модуліне, визуальдық компоненттің белгісіне екі рет шерту арқылы, автоматты түрде қойылатын стандарт оқиға өңдеушілері болады,

Стандарт оқиғалардан басқа, кез-келген оқиғаларды өңдеушілердің шаблон процедураларын Object Inspector терезесінің Events жапсырмасындағы оқиғаның атына сәйкес жолға екі рет шерту арқылы қояды.


Өзіндік жұмыс тапсымалары
Есепті әуелі құрылымды /struct/ пайдаланып, сонан соң class – ты пайдаланып орындаңыз:

  1. “Өте жақсы“, “өте жақсы және жақсы“, “жақсы және қанағаттанарлық“, ”тек қанағаттанарлық“ бағалармен оқитын студенттердің тізімін құру программасын жазу.

  2. Фамилиялары бірдей студенттер оқитын топты анықтау программасын жазу.

  3. Фамилиясы “A”-дан басталатын қызметкерлер тізімін және олардың орташа еңбекақысын көрсететін программа жазу.

  4. Аяқ киім дүкенінің ассортименті жазба түрінде берілген, ен қымбат әйел адамынын аяқ киімін және ер адамдар аяқ киімін, олардың құнымен көрсететін программаны жазу.

  5. “Телефондық анықтаманы моделдейтін“ программаны құру, әйел адамдардың телефон нөмерін және мекен жайын шығару.

  6. Автомашинаны жөндеу шеберханасында машина жөніндегі мәліметтер жазба түрінде берілген, қызыл түсті машиналардың маркасын және нөмерін аңықтайын программаны жазу.

  7. Мекеменің қызметтері туралы мәліметтер жазба түрінде берілген. Ер адамдардың мамандығы мен жасып көрсетіп, экранға тізім шығарыңыз.

  8. Кітаптардың аты, авторы, шыққан жылы, бағасы және тиражы анықталған каталог құрыңыз. Экранға алфавитімен тиражы бойынша сұрыпталған кітаптар тізімін шығарыңыз.

  9. Теміржол кассісіндегі төмендегідей мәліметтер белгілі. Поездың нөмері,баратын жері,билеттің бар жоғы анықтау. Бос билеттердегі саны 125-ке тең поездардың нөмерін, баратын жерін экранға шығарыңыз.

  10. Өзініз оқитын топтың тізімін алфавитімен студенттердің туған жылы бойынша реттеу программасын жазыңыз, нәтижесін экранға шығарыныз.



2 - зертханалық жұмыс.

С++ Buildеr 6 ортасының құрылымы. С++ Buildеr 6 ортасында қосымша құру. Жоба, форма, модуль, ресурс файлдары
Әдістемелік нұсқаулар
С++Builder программмалау ортасы іске қосылғаннан кейінгі терезелердің орналасуы келесі түрде болады /4.1-сурет/:

  • Негізгі терезе (С++Builder Project1);

  • Объектілер инспекторының терезесі ( Object Inspector);

  • Форма редакторының терезесі (Form1);

  • Код жазы;

  • Латын редактордың терезесі (Unit1).

Ескерту. Кеңеймелері : *.cpp, *.h, *.dfm, *.bpr, *.res. болатын файлдар маңызды болып есептеледі, себебі олар барлық жобаға қатысады.
Жаттығу жұмыстары
Жобамен жұмыс жасау:

  • Жоба құру үшін негізгі терезеде File New Application командалары орындалады.

  • Жаңа құрылған жобаны толығымен сақтау үшін Filе Save All командасы орындалады. Жоба құрамына кіретін файлдардың жиынтығы бір бумада сақталуы қажет.


4.1- сурет. С++Builder программмалау ортасының негізгі терезесі




  • Жобаны орындау бірнеше тәсілдермен жүргізіледі.

  • Жобаны жабу үшін Filе Close All командалары орындалады.

  • Бұрыннан бар жобаны ашу үшін Filе Open командасы орындалады да, пайда болған диалогтық терезеде жоба файлының (* .bpr) аты көрсетіледі.

  • Жоба файлының (*.bpr- файл) мәтінін қарау үшін бас мәзірден Project View Source (Проект->Просмотр) командасы орындалады;

  • Жоба файлының терезесін жабу үшін терезе контекстік мәзірінен Close Page командасы орындалады;

  • Жоба файлын С++Builder ортасы автоматты түрде өзі құрады;

  • Жоба файлы С++Builder ортасының жобалар тобына (группа проектов, ProjectGroup1) кіреді. Жоба тобы - бұл өзі қамтитын бір немесе бірнеше жобалар туралы ақпараттар, сипаттаулар сақталатын *.bpg кеңеймелі файл.

  • Project Manager программасы жоба тобымен жұмыс жасауда қолданылады.

  • Жоба параметрлерін беру үшін ProjectOptions командасы орындалады.


Өзіндік жұмыс тапсымалары


  1. Жай жоба құрыңыз, оны өз бумаңызда сақтаңыз.

  2. Өз жобаңыздың құрамына кіретін файлдарды, олардың атын, қызметін көрсететін кесте жасаңыз.

  3. С++Builder ортасының негізгі терезесіндегі (С++Builder Project1) бас мәзірдің опцияларындағы жиі қолданылатын командаларын және олардың қызметін жазып алыңыз.


3 - зертханалық жұмыс.

Негізгі визуалдық компоненттер. VCL кітапханасының компоненттері. Қасиеттері, әдістері және оқиғалары
Әдістемелік нұсқаулар
VCL (Visual Component Library)- визуальды компоненттер кітапханасында қосымша құруда қажет болатын компоненттер жинақталған.

Компоненттердің қасиетін өзгерту екі түрлі жолмен жасалады: объектілер инспекторының (Object Inspector) терезесінде немесе программалау жолымен. Мысалы, Label1 компонентінің Caption қасиетін Object Inspector терезесінде өзгерту.

Ал программалық жолмен өзгерту үшін программа мәтінінде келесі түрде жазылуы керек:

Label1->Caption= "Багдарлама";

Объектінің немесе компоненттердің әдістерін шақыру келесі түрде жазылады:



Объектінің аты ->әдістің аты;

Memo1->Clear();

Компоненттерге тән оқиғалар функциялар /void __fastcall/ түрінде анықталған, бұл функциялардың шаблондары программа мәтініне автоматты түрде бірден қойылады, бұл шаблондарды сол компоненттің белгісіне екі рет шерту немесе Object Inspector терезесіндегі Events жапсырмасындағы оқиғалар арқылы шақырып алуға болады. Мысалы, Button1 компонентінің OnClick оқиғасы:



void __fastcall TForm1::Button1Click(TObject *Sender)

{

Label1->Caption= "Багдарлама";



}

4.2- сурет. Button1 компонентінің



OnClick оқиғасын шақыру.
Форма. C++ Builder ортасында құрылатын қосымшаның орындалуы кезінде экранға шығатын визуальдық бөлімінің негізін TForm класының өкілі болып табылатын Form компоненті құрайды. C++ Builder ортасы жүктелгенде, құрылатын жобаға (Project1) сәйкес форма терезесі (Form1) өзі автоматты түрде пайда болады /4.3-сурет/. Форма терезесі, бұл - Windows қосымшаларына тән тақырыптық зонасы, жүйелік мәзір батырмасы, басқару батырмалары және таза жұмыстық обылысы бар, өлшемі өзгеріп отыратын терезе.

Жобаға тағы да форма терезелерін қосу үшін File New Form командасы орындалады. Программа құруда Form компонентінің келесі қасиеттері мен әдістері жиі пайдаланылады:



TCaption типтер класына жататын Caption қасиеті форманың тақырыбын, яғни тақырыптық зонадағы мәтінді жазу үшін қолданылады;

TComponentName типіне жататын Name қасиеті Form компонентінің атын немесе идентификаторын беру үшін қолданылады, әдетте ол Form1, Form2 ... болып кете береді, егер қолданушы қажет болған жағдайда бұл атауларды өзгерте алады және программада оны сол өзі берген атпен шақырып пайдаланады, мысалы, Name қасиетінің мәні Form1 –ден MainForm- ға өзгертілсе онда оны программада пайдаланғанда

Form1 Caption:= “Форма терезесі”; деп жазудың орнына MainForm Caption:= “Форма терезесі”; түрінде жазады. Бұл Name қасиеті C++ Builder ортасындағы қолданылатын барлық программалық компоненттерге тән қасиет.

Программада Form компонентінің жаңа экземпляр-данасын құру үшін constructor Create (AOwner: TComponent); конструкторы қолданылады, егер жаңа дананы құру команда түрінде талап етілетін болса оны программа мәтінінде келесі түрде жазады:



ApplicationCreateForm(TForm1, Form1);

бұл программаның негізгі терезесін құру болып табылады, ал қалған терезелерін құруды, мысалы



Form2=TForm2.Create(Application); түрінде беруге болады.

Close функциясы форма терезесін жабуды қамтамасыз етеді, программадағы жазылуы:

Form1 Close();



Hide функциясының қызметі - форманы экранда көрсетпей жасырып тұрады, жазылуы:

Form1 Hide();



Show функциясы орындалғанда көрінбей тұрған форма, алдыға шығып экранда көрсетіліп тұрады, жазылуы:

Form1 Show();

Форма компонентінің TNotifyEvent класына жататын OnCreate оқиғасы форма құрылған кезде бір-ақ рет орындалады, сондықтан бұл функцияға форманың құрылуымен бірге орындалатын (мысалы пароль енгізу сияқты) операциялар жазылады. OnCreate оқиғасына сәйкес функция Object Inspector терезесінің Events жапсырмасындағы OnCreate жолының терезесіне екі рет шерту арқылы шақырылады:

void __fastcall TForm2::FormCreate(TObject *Sender)

{
}
Мәтінмен жұмыс жасауға арналған Standart панелінің Label, Memo, Еdit компоненттері. Қарапайым қосымшалар құру үшін Standart панелінің компоненттері қолданылады.

Қосымшаларда мәтін түріндегі мәліметтерді терезелер арқылы енгізуде Standart панелінің Label, Еdit, Memo компоненттері қолданылады.

Еdit компоненті (немесе енгізу жолағы, немесе бір жолды редактор деп те атайды) мәтінді кішкентай терезе түріндегі бір жолға енгізуді немесе мәтін түріндегі нәтижені терезеге шығарып қоюды қамтамасыз етеді. Қосымшада Еdit компонентінің терезесінде берілген мәтінді, курсорды оңға және солға жылжытатын бағыттауыштар көмегімен, символдарды өшіретін <Backspace> және пернелерін пайдаланып және фрагменттерді бөліп алып жөндеуге болады. Еdit компонентінің терезесіне енгізілген мәтін, оның типі AnsiString болатын Text қасиетінің мәні болып табылады, яғни Еdit терезесінде берілген мәліметтер программада тек жолдық тип ретінде ғана қабылданады, ал оны әрі қарай программада сандар ретінде пайдалану үшін түрлендіру функциялары қолданылады. Терезеге енгізілген мәтінді бүтін /int/ немесе нақты /float/ типтердің біріне айналдыру үшін келесі түрлендіру функциялары қолданылады:
StrToInt (AnsiString s)- жолдық типті бүтін типке, StrToFloat(AnsiString s) - нақты типке түрлендіреді.

Еdit терезесіндегі мәтіннің үлкен немесе кіші әріптермен жазылуын немесе регистрлердің ауысып отыруын оның CharCase (типі TEditCharCase) қасиеті арқылы береді, сәйкесінше ол үш түрлі мән қабылдайды:


  • ecNormal – ррегистр өзермейді, сол күйінде тұрады;

  • ecLowerCase - төменгі регистрдің әріптеріне көшеді;

  • ecUpperCase - жоғарғы регистрдің бас әріптеріне ауысады.


Еdit компонентінің типі Char болатын PasswordChar қасиеті осы терезеге пароль енгізу үшін қолданылады, әдетте оның мәні #0 болып тұрады да терезеге енгізілген мәтіннің өзі шығады, ал оны жасырып көрсетпеу үшін PasswordChar қасиетінің қабылдайтын мәнін басқа бір символға, мысалы «*» немесе «?» секілді мәндерге өзгерту керек, сонда енгізілген құпия мәтіннің орнына «********» немесе «?????????» түріндегі жолдар шығады.

Программа терезесінде Еdit1, Еdit2, Еdit3 компоненттері арқылы берілген бірнеше терезелердің бірінен екіншісіне ENTER пернесі арқылы көшіп отыру үшін оларға басқару фокусын беруді (курсорды беретін) қамтамасыз ететін SetFocus әдісін қолдануға болады, ол әдіс осы компоненттің терезесінде тұрып басылған пернеге жауап беретін OnKeyPress оқиға өңдеушісінің денесінде шақырылады. Мысалы, Еdit2 компонентінің терезесінен ENTER пернесі арқылы Еdit3 терезесіне көшу үшін сол Еdit2–нің OnKeyPress оқиға өңдеушісіне келесі кодты жазуға болады:


void __fastcall TForm2::Edit2KeyPress(TObject *Sender,

char &Key)

{

if(Key>='0' || Key<='9') ; // бұл 0- 9 цифрларды көрсету



if(Key==8) ; // Backspace -өшіру пернесінің ішкі коды

if(Key==13) // ENTER перенсінің ішкі коды

Edit3->SetFocus();

}
Ал, форма терезесіндегі барлық терезелік компоненттерде басқару фокустарының өзара ауысып отыруын ұйымдастыру үшін Form компонентінің SelectNext (TWinControl* CurControl, bool GoForward, bool CheckTabStop); әдісі қолданылады. Қосымшадағы Memo терезесін мәтіндік файлдарды ашып оқу үшін немесе терезедегі мәтінді тексттік файлға жазып сақтау үшінде қолдануға болады. Ол үшін оның LoadFromFile (FileName) әдісі- терезедегі мәтінді файлға жазуды, ал SaveToFile (FileName) әдісі-керісінше файлдағы мәтінді Memo терезесіне шығаруды қамтамасыз етеді. Мысалы:

...


AnsiString FileName = "C:\\WINDOWS\\WIN.INI";

// файлдың аты

Form1->Memo1->Lines->LoadFromFile(FileName);

Form1->Memo1->Lines->SaveToFile(ChangeFileExt

(FileName, ".BAK"));

...


Жаттығу жұмыстары
Үшбұрыштың ауданын, биіктігі мен табаны бойынша есептеуді орындайтын қарапайым қосымша құру. Қосымша терезесі келесі түрде болуы қажет /4.4-сурет(а,б)/.

4.4-сурет. а) Форма терезесі


4.4-сурет. в) Қосымша терезесі


Орындалуы:

  1. File New Application командалары орындалады.

  2. Жаңа құрылған жобаны сақтау үшін Filе Save All командасы орындалады. Жоба құрамына кіретін файлдардың бір бумада сақталуы қажет.

  3. Форма терезесіне қажет компоненттер /4.4-суреттегідей/ орналастырылып және олардың келесі қасиеттері өзгертіледі:




Компоненттің аты

Қасиетінің аты

Мәні

Form1

Caption

Үшбұрыштың ауданын есептеу

Memo1

Lines

Үшбұрыштың ауданын биіктігі мен табаны бойынша есептейтін программа құрыңыз

Label1

Caption

Биіктік

Label2

Caption

Табан

Label3

Caption

Үшбұрыштың ауданы

Edit1

Text




Edit2

Text




Edit3

Text




Button1

Caption

Есептеу

«Есептеу» деп аталатын батырмаға екі рет шертіліп, пайда болған терезеге келесі код жазылады:



Достарыңызбен бөлісу:
  1   2   3   4   5   6




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

    Басты бет