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 компонентінің келесі қасиеттері мен әдістері жиі
пайдаланылады:
4.3 –сурет. Форма терезесі
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 оқиға ӛңдеушісіне
келесі кодты жазуға болады:
Достарыңызбен бөлісу: |