Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Blok_II.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
532.22 Кб
Скачать
  1. Класс және функция шаблондары. Шешуші жағдайларда өңдеу және генерациялау.

Шаблондар (templates) – өте мықты құрал.

Шаблонды функциялардың қарапайым мысалы:

Type square (Type a)

{

Type b;

b = a*a;

return b;

}

int x = 5;

int i;

i = square(5);

float y = 0.5;

float f;

f = square(y);

Егер қарапайым түрде функция құратын болсақ, екі түрлі функция жазу керек: int типі үшін және float типі үшін. Ал егер тағы да басқа типті қолданатын осындай функция қажет болса,онда оны қайтадан тағы жазу керек болады. Шаблондарды қолданып функцияның тек бір ғана экземплярын қолдануға болады. Функцияда нақты типтің орнына параметрлік тип немесе басқаша шаблон аргументі қолданылады

Төмендегі мысалда Type идентификаторы параметрлік тип болып табылады. . Функцияда бұл идентификатор 3 рет кездеседі: қайтарылатын мән, функция аргументі және b айнымалысының анықтамасы. Яғни Type кез келген қарапайым тип ретінде қолданылады. Ол үшін функция алдында келесі жолды қосу керек:

template<class Type> Type square (Type a)

template<class Type>

Type square (Type a)

template< class Type >

Type square (Type a)

template< class Type > Type square (Type a)

Функция алдында template (шаблон) кілттік сөзі тұру керек, ал бұрыштық жақшаларда кілттік сөзі class болатын параметрлік типтің атын көрсету керек. class кілттік сөзінің орнына type сөзін қолдануға болады. Параметрлік тип идентификаторы кез келген бола алады.

31. Borland C++ Builder, Microsoft C++, Java секілді объектіге – бағытталған бағдарламалаудың әртүрлі инструментальды құралдары.

Объектіге бағдарланған программалауды жүзеге асыратын программалау орталарына 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 (); //деструктор

... ... ...

};

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]