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

PROGRAMMALASTIRIW II-AMELIY-1 prezentaciya

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

1-ÁMELIY

SHABLON (TEMPLATE) TÚSINIGI HÁM OLARDÍŃ QOLLANÍLÍWÍ. DIALOG AYNALARI MENEN ISLEW

created by: Bekanworks

PROGRAMMALASTÍRÍW II PÁNI

Jumıstıń maqseti: C++ programmalastırıw tilinde shablonlar hám olardıń qollanılıwdı úyreniw. Dialog aynalar menen islew.

Teoriyalıq bólim:

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ına iye.

Funkciya shablonları

Funkciya shablonı (parametrlengen tipler) baylanısqan funkciyalar shańaraǵın dúziw imkaniyatına iye. 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ártiplestiriw ushın hár qaysı funkciyanıń ózin anıqlawshı tipi qollanıladı.

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ı. Parametrlengen klastı járiyalawdıń ulıwma forması :

template <class maǵlıwmat_tipi> class klass_atı { . . . };

ÁMELIY BÓLIM:

C++ te shablonlar tildiń kúshli imkaniyatı bolıp tabıladı, ol bizge ulıwma baǵdarlamalar jazıwǵa imkaniyat beredi. Shablonlardı iske túsiriwdiń eki usılı bar:

1)Funkciya shablonları;

2)Klass shablonları.

Funkciya shablonlarına uqsas, biz hár túrli maǵlıwmatlar tipleri menen jumıs islew islew ushın bir klastı dúziwde, klass shablonların paydalanamız. Klass shablonları qolaylı, óytkeni olar biziń kodtı qısqartıp, basqarıwǵa qolaylı qıladı.

Klass shablonlarınıń járiyalanıwı

Klass shablonı template gilt sózinen baslanadı, onnan keyin ishindegi shablon parametrleri bar <>, al sonnan keyin klass málimlemesin óz ishine aladı.

template <class T> class className {

private: T var;

... .. ...

public:

T functionName(T arg);

... .. ...

};

Joqarıdaǵı járiyalanıwda T shablon argumenti bolıp tabıladı, ol paydalanatuǵın maǵlıwmatlar tipi ushın tolıqlawısh bolıp tabıladı, hám class gilt sózi menen. Klass denesiniń ishindegi aǵza ózgeriwshi var, hám aǵza funkciyasınıń functionName() ekewide T tipli.

Klass shablonın dúziw

Biz klass shablonın járiyalap, anıqlanǵannan keyin onıń obyektlerin keyingi sintaksis penen basqa klaslarda yamasa funkciyalarda (mısalı, funkciya) isley alamız: main()

className<dataType> classObject;

Mısalı,

className<int> classObject;

className<float> classObject;

className<string> classObject;

1-mısal: C++ klasınıń shablonları

Bul baǵdarlamada Number kod penen klas shablonın dúzdik;

template <class T> class Number {

private: T num;

public:

Number(T n) : num(n) {}

T getNum() { return num; }

};

num ózgeriwshi ekenin este saqlań, n konstruktor argumenti, hám getNum() funkciyasınıń T tipi, yamasa T tipin qaytaradı. Bul olardıń qálegen tipi bolıwı múmkin degendi bildiredi.

Biz main() obyektlerin dúziw arqalı klass shablonın ámelge asırdıq;

Number<int> numberInt(7);

Number<double> numberDouble(7.7);

Joqarıdaǵı Number<int> hám Number<double> kodlarǵa itibar beriń. Bular int hám float hárqaysısı ushın klass anıqlamasın dúzedi, sonnan keyin olar sáykesinshe paydalanıladı.

Klass shablonlarınıń obyektlerin járiyalaw gezinde tipti kórsetiw jaqsı tájiriybe bolıp tabıladı. Bolmasa, ayırım kompilyatorlar qáte jiberiwi múmkin.

//Error

Number numberInt(7);

Number numberDouble(7.7);

2-mısal: Klass shablonların paydalanatuǵın ápiwayı kalkulyator dúziw.

Bul baǵdarlama eki num1 hám num2 ózgeriwshini qosıw, alıw, kóbeytiw hám bóliwdi orınlaw ushın klass shablonı paydalanıladı.

ozgeriwshiler hár qanday tipke iye bolıwı múmkin, degen menen biz tek usı mısalda qollanılǵan int hám float tiplerin qollanamız.