Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб S++BuilderZert27каз.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
7.48 Mб
Скачать

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 <iostream.h>

#include <conio.h>

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 - "<<rect.Length();

cout<<"\n"<<"Tortbyrishtin eni - "<<rect.Width();

cout<<"\n"<<"Tortbyrishtin audani - "<<rect.Area();

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 жапсырмасындағы оқиғаның атына сәйкес жолға екі рет шерту арқылы қояды.