Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

PROGRAMMALASTIRIW II-LEKCIYA-1 lekciya

.pdf
Скачиваний:
1
Добавлен:
19.02.2024
Размер:
143.11 Кб
Скачать

1-Lekciya. Obyektke baǵdarlanǵan programmalastırıwda shablonlar menen islew. Shablon (template) túsinigi hám olardıń qollanılıwı. Funkciya shablonları, klass shablonların jaratıw usılları hám olardıń qollanılıwı.

Jobası:

1.Shablonlar haqqında

2.Shablonlar menen islew

3.Funkciya shablonları

4.Klass shablonları

Shablonlar - universal programmalastırıw ushın tıykar bolıp tabıladı. Kúshli tiplengen til retinde C++ barlıq ózgeriwshiler baǵdarlamashı tárepinen anıq járiyalanǵan yamasa kompilyator tárepinen shıǵarılǵan belgili bir túrge iyelewin talap etedi. Biraq, kóplegen maǵlıwmatlar strukturaları hám algoritmleri olar isleytuǵın tipine qaramastan birdey kórinedi. Shablonlar klass yamasa funkciya operatsiyaların anıqlaw imkaniyatın beredi hám paydalanıwshıǵa bul operatsiyalardıń qaysı túrleriniń islew kerekligin belgilew imkaniyatın beredi.

Funkciya shablonları

Funkciya shablonı (parametrlengen tipler) baylanısqan funkciyalar shańaraǵın dúziw imkaniyatın beredi. Shablon kiritiliwi ushın, payda etilgen funkciyanı avtomatlastırıw, hár túrli tipli maǵlıwmatlardı qayta islewden ibarat. Mısalı, algoritmdi tártiplew ushın hár qaysı funkciyanıń ózin anıqlawshı tipi qollanıladı. Funkciya shablonı bir ret anıqlanadı, lekin parametrli anıqlawda hám taǵı basqa, maǵlıwmatlar tipi shablon parametrleri arqalı beriledi.

Shablon formatı:

template <class tip_atı, [class tip_atı]>

<funkciya_teması>

{ <funkciya denesi>}

Funkciyalar shablonları parametrleriniń tiykarǵı qásiyetleri:

1.Parametrler atları shablondıń pútkil tariypi boyınsha unikal bolıwı kerek.

2.Shablon parametrleriniń dizimi bos bolmaydı.

3.Shablon parametrleri diziminde hár biri class sózinen baslanatuǵın bir neshe parametr bolıwı múmkin.

Mısalı:

template <class T>T max(Tx, Ty){ return(x>y)? x:y; };

Bunda - <class T> shablonınıń argumenti tárepinen usınıs etilgen

maǵlıwmatlar tipi hár qanday bolıwı múmkin. Onnan programmada

paydalanıwda kompilyator max funkciyası kodın bul funkciyaǵa uzatılıp atırǵan parametrlerdiń faktik túrine muwapıq generatsiya etedi:

int i; Myclass a,b;

int i=max(i, 0); //argumentler tipi int

myclass m=max(a, b); // argumentler tipi myclass

Faktik tipler kompilyaciya waqtında belgili bolıwı kerek. Shablonlarsız max funkciyasın kóp ret artıqsha júklewge tuwrı keledi, yaǵnıy, eger barlıq funkciya versiyalarınıń kodları birdey Sonda da, hár bir qollanılıp atırǵan tip ushın bólek artıqsha júklew kerek boladı.

Klass shablonları

Klass shablonları (ózgeshe parametrlengen klass) áwladqa tiyisli klastı dúziw ushın qollanıladı. Dúziw qaǵıydalardı hám ayırım obyektlerdiń formatın anıqlawshı klass sıyaqlı, klass shablonları ayırım klasslardı dúziw usılların anıqlaydı. Shablondaǵı klass táriypinde klass atı ayırım klasslarǵa tiyisli emes shańaraqqa, klasslardıń parametrlengen atı boladı.

Parametrlengen klastı járiyalawdıń ulıwma forması : template <class maǵlıwmat_tipi> class klass_atı { . . . };

Klass shablonlarınıń tiykarǵı ózgeshelikleri:

*Parametrlengen klass funkciyalarınıń komponentaları avtomat túrde parametrlengen boladı. Olardı template járdeminde

parametrlengen retinde járiyalaw shárt emes.

*Parametrlengen klassta xarakteristikalanǵan dos sıpatında funkciyalar avtomat túrde parametrlengen funkciyalar bolmaydı, yaǵnıy kórsetilmegen, sonday funkciyalar berilgen shablon boyınsha islengen barlıq klasslar ushın dos sıpatında boladı.

*Egerde friend-funkciya óz xarakteristikasında parametrlengen klass tipindegi parametrge iye bolsa, ol jaǵdayda berilgen shablon boyınsha jaratılǵan barlıq klasslar ushın menshikli friend-funkciyası bar.

*Parametrlengen klass sheńberinde friend-shablonlardı (dos sıpatında parametrlengen klasslar ) xarakteristikalaw múmkin emes.

*Bir tárepten, shablonlar shablonlardan ónim (miyraslar ) bolǵan sıyaqlı, ápiwayı klaslardan da ónim (miyraslar ) bolıwı múmkin. Ekinshi tárepden bolsa olardan basqa shablonlar hám klasslar ushın bazalıq retinde paydalanıwı múmkin.

*Klass aǵzası bolǵan funkciyalar shablonların virtual retinde xarakteristikalaw múmkin emes.

*Lokal klasslar óz elementleri retinde shablonlardı óz ishine alıw múmkin

emes.

BAQLAW SORAWLARÍ:

1.Shablonlardan qanday maqsette paydalanıladı?

2.Funkciya shablonlarınıń tiykarǵı qásiyetlerin kórsetiń?

3.Funkciya shablonınıń járiyalanıwın keltiriń?

4.Klass shablonları ne ushın qollanıladı?

5.Klass shablonlarınıń tiykarǵı ózgesheliklerin atap ótiń?