-§. Klasslar Class sintaksisi - Dástúriy injiniring tálim baǵdarı 1-kurs 3-gruppa studenti Boranbaeva Umidanıń

|
Dástúriy injiniring tálim baǵdarı 1-kurs 3-gruppa studenti Boranbaeva Umidanıń
|
bet | 4/10 | Sana | 20.05.2024 | Hajmi | 0,68 Mb. | | #245612 |
Bog'liq Kurs jumısı-Boranbaeva Umida
Klass túsinigi C++ tilinde eń áhmiyetli túsiniklerdiń biri. Klass sintaksisi stuktura (struct) sintaksisine uqsas hám onıń kórinisi tómendegishe:
class
{
// klasstıń jabıq berilgen – aǵzaları hám funkciya – aǵzaları
public:
// klasstıń ashıq berilgen – aǵzaları hám funkciya aǵzaları
}
Ádette klass usınısında bólegi shárt emes. Klass obyektlerin keyinshelik, zárúrlik boyınsha daǵaza etiw múmkin. Sonday-aq bólegi majbúriy bolmasada, onıń bolǵanı maqul. Sebebi ózgeriwshilerdiń jańa túri bolıp, onıń járdeminde usı klass obyektleri anıqlanadı. Klass ishinde daǵaza etilgen funkciya hám ózgeriwshiler usı klass aǵzaları esaplanadı. Klass ishinde daǵaza etilgen ózgeriwshiler berilgen-aǵzalar, klass ishinde daǵaza etilgen funkciyalar funkciya-aǵzaları dep ataladı. Kelisim boyınsha klass ishindegi barlıq funkciya hám ózgeriwshiler jabıq esaplanadı, yaǵnıy olardı tek ǵana usı klass aǵzaları isletiwi múmkin. Klasstıń ashıq aǵzaların daǵaza etiw ushın public gilt sózi hám “ : ” belgisinen paydalanıladı. Klass daǵazasındaǵı public sózinen keyin daǵaza etilgen funkciyalar hám ózgeriwshilerge klasstıń basqa aǵzaları hám programmanıń usı klasstıń qálegen jerinen múrajáát etiw múmkin.
Klass daǵazasına mısal:
class Klass {
int a; //klasstıń jabıq elementi
public:
int ma'nis_a();
void a_ma'nisi(int san);
Sonday – aq int mánis_a() hám void a_mánisi(int san) funkciyaları Klass klası ishinde daǵaza etilgen bolsada, olar ele anıqlanǵan joq. Funkciyanı anıqlawda “kóriw oblastına ruxsat beriw”(“::”) ámelinen paydalanıladı. Funkciya – aǵzanı anıqlawdıń ulıwma kórinisi tómendegishe:
< funkciya túri>::< funkciya atı>(
) {
// funkciya denesi
}
Joqarıda daǵaza etilgen Klass klasınıń int mánis_a() hám
void a_mánisi(int san) funkciya – aǵzaların anıqlawǵa mısal keltirilgen:
int Klass :: mánis_a(){return a;}
void Klass :: a_mánisi(int san){a=san;}
Tek ǵana Klass klasın daǵaza etiw menen usı klass túrindegi obyektler júzege kelmeydi. Klass obyektlerin júzege keltiriw ushın klass atın ózgeriwshiler specifikatorı sıpatıda isletiw zárúr boladı. Mısalı:
Klass obj1,obj2;
Klass obyekti jaratılǵannan keyin '.' járdeminde klasstıń ashıq aǵzalarına múrajáát etiwge boladı. Mısal ushın
obj1. a_mánisi(20);
obj2.a_mánisi(50); múrajáátlar arqalı obj1 hám obj2 obyektleriniń a ózgeriwshilerine mánisler beriledi. Hár bir obyekt klassta daǵaza etilgen ózgeriwshileriniń óz kopiyalarına iye boladı. Usı sebepli obj1 obyektindegi a ózgeriwshi obj2 obyektindegi a ózgeriwshiden parq qıladı.
Klass elementlerine múrajááttı kórsetkishler arqalı ámelge asırıw múmkin. Tómendegi programma buǵan mısal boladı.
class Toshka
{
public:
int x,y;
void Kord_manis_beriw(int _x, int _y);
};
void Toshka :: Kord_manis_beriw(int _x, int _y){x=_x; y=_y;}
int main()
{
Toshka XOY;
Toshka *Kord_korsetkish=&XOY;
// …
XOY.x=0;
Kord_korsetkish->y=0;
Kord_korsetkish-> Kord_manis_beriw(10,15);
// …
return 0;
}
Sonı aytıp ótiw kerek, klass obyektlerine '.' hám '->' arqalı múrajáát etiwdiń kompilyaciya kóz – qarasınan hesh bir parqı joq. Kompilyator '.' menen múrajááttı '->' menen almastıradı. Mısal:
obj1.a_manisi(20); kórsetpesi kompilyator tárepinen (&obj1)->a_manisi(20); kórinisindegi kórsetpe menen almastırıladı.
С++ tili klasstın ózgeriwshi – aǵzalarına belgili bir sheklewler qoyadı.
– ózgeriwshi – aǵzalar auto, extern yaki register modifikatorları menen anıqlanıwı múmkin emes.
– klasstıń ózgeriwshi – aǵzaları usı klass túrindegi obyekt bolıwı múmkin emes, biraq olar sol klassqa kórsetkish yaki adres alıw ámeli(&) bolıwı, basqa klass obyekti bolıwı mumkin.
Belgili bir mazmunǵa iye klassqa mısal tiykarında stek qurılması menen ámel etetuǵın klass jaratıp kóreyik.
#include
using namespace std;
#define OLSHEM 100
class STEK
{
int stk[OLSHEM];
int stk_ushi;
public:
void Baslaw();
void Jaylastiriw(int san);
bool aliw(int &san);
};
void STEK :: Baslaw()
{
stk_ushi=0;
}
void STEK :: Jaylastiriw(int san)
{
If(stk_ushi== OLSHEM)
{
cout<<”Stek toldi! \n”;
return 0;
}
stk[stk_ushi]=san;
stk_ushi++;
};
bool STEK :: aliw(int &san)
{
If(stk_ushi==0)
{
cout<<”Стек бос! \n”;
return false;
}
stk_ushi—;
san=stk[stk_ushi];
return true;
}
int main();
{
STEK stek1, stek2;
int san;
stek1. Baslaw();
stek2. Baslaw();
stek1. Jaylastiriw(1);
stek2. Jaylastiriw(2);
stek1. Jaylastiriw(3);
stek2. Jaylastiriw(4);
if(stek1.aliw(san)) cout<if(stek1.aliw(san)) cout<if(stek2.aliw(san)) cout<if(stek2.aliw(san)) cout<if(stek2.aliw(san)) cout<return 0;
}
Programma isletiliwi nátiyjesinde ekranǵa tómendegiler pechatqa shıǵadı.
3 1 4 2 Stek bos!
Klass, onıń aǵzaların paydalanıwdan aldın daǵaza etilgen bolıwı kerek. Bıraq ayrım jaǵdaylarda klassta ele daǵaza etilmegen klassqa kórsetkish yaki adres alıw ámelin (&)daǵaza etiwde zárúr bolıwı múmkin. Bul jaǵdayda klasstıń tolıq bolmaǵan dagazasınan paydalanıwǵa tuwrı keledi hám ol tómendegi kóriniske iye.
class;
Mısalı:
class Klass2; //klasstıń tolıq emes daǵazası
class Klass1
{
int x;
Klass2*klass2; //Klass2 klasına kórsetkish
public:
Klass1(int _x){x=_x;}
};
int main()
{
//…
return 0;
}
class Klass2 //Klass2 klasınıń tolıq daǵazası
{
int a;
public:
Klass2();
};
Sonı aytıp ótiw kerek, klass daǵazası struktura (struct) daǵazasına uqsas, parıqlı tўrde:
- Class daǵazasında public, protected yaki private múrajáát modifikatorları isletiledi;
- struct gilt sózi ornında class yaki union gilt sózleri isletiliwi múmkin;
- ádette class quramında ózgeriwshilerden tısqarı funkciya – aǵzalar da kiredi;
- class konstruktor yaki destruktor dep atalıwshı arnawlı funkciya – aǵzalarına iye boladı.
Tómende struct hám union gilt sózleri menen anıqlanǵan klasslarǵa mısal keltirilgen.
struct Toshka
{
private:
int x; int y;
public:
int Aliw_X();
int Aliw_Y();
void manis_beriw_X(int _x);
void manis_beriw_Y(int _y);
};
union Bit
{
Bit(unsigned int n);
void Bit_pechat();
unsigned int num;
unsigned char c[sizeof(unsigned int)];
};
Múrajáát specifikatorı, onnan keyin jaylasqan barlıq klass elementlerine qollanılıwı dawam etedi, egerde basqa specifikator ushıramaǵansha yaki klass daǵazası tamam bolmaǵansha.
Tómende klassqa múrajáát specifikatorlarına túsinikler keltirilgen:
|
| |