PROGRAMMALASTIRIW II-AMELIY-1 prezentaciya
.pdf1-Á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.