|
Mavzu-4: . O’zaro boglangan sinflarni tashkil etish
|
bet | 4/5 | Sana | 24.01.2024 | Hajmi | 21,63 Kb. | | #144985 |
Bog'liq Mustaqil ishi 3 Mavzu-1 Tarmoqlanuvchi algoritmlar va dasturlar-www.fayllar.orgMavzu-4: . O’zaro boglangan sinflarni tashkil etish
C ++ - bu ob'ektga yo'naltirilgan dasturlash tili. C++ dasturlash tilida hamma narsa uning xususiyatlari va usullari bilan bir qatorda sinfllar va obyektlar bilan bog'liq.
Sinf - bu bizning dasturimizda foydalanishimiz mumkin bo'lgan foydalanuvchi belgilaydigan ma'lumot turi va u ob'ekt tuzuvchisi yoki ob'ektlarni yaratish uchun "reja" sifatida ishlaydi.
Sinf yaratish uchun class kalit so'zdan foydalaning. " MyClass" Nomli sinf yaratamiz.
class MyClass { // class
public: // ochiqlik siyosati
int myNum; // Attribute (int tipiga tegishli)
string myString; // Attribute (string tipiga tegishli)
};
Misolni tushuntirish.
class Kalit so'z MyClass deb atalgan bir sinf yaratish uchun ishlatiladi .
publicKalit so'z bir bo'lib kirish belgisi ifodalaydi. Bu degani class dan tashqarida ham attributlardan foydalanish mumkin .
Sinf ichida butun son myNum va satr o'zgaruvchisi mavjud myString. O'zgaruvchilar sinf ichida e'lon qilinganida, ular atributlar deb nomlanadi .
Sinf a’zolariga ko’rsatkich
C++ da shunday ko’rsatkich qilsa bo’ladiku bu ko’rsatkich class a’zosini ko’rsatib turadi. Bunday ko’rsatkichlarni pointer-to-member deb ataladi. Class a’zosiga ko’rsatkichda maxsus .* va ->* operatorlar ishlatiladi.
E’lon qilinishi:
int c1::*data; //toifaga ko’rsatkich
int (c1::*func)(); //funksiyaga ko’rsatkich
data = &c1::val; //val joyini data’ga olish
func = &c1::get_num; //get_num joyini func’ga olish
ob.*data; // val ga murojat
(ob.*func)(); // get_num() ga murojat
Demak yuqoridagi misoldan ko’rinib turibdiki, obyekt ko’rsatkichi orqali sinf a’zolariga murojaat qilish imkoniyati mavjud. Bunda sinf a’zosiga mos ko’rsatkich o’zgaruvchi e’lon qilinadi va ushbu o’zgaruvchi orqali sinf a’zosiga murojaat qilinadi.
class c1 {
public: int get_num() { return val + val; }
c1(int a){ val = a; }
int val;
};
int c1::*data; // c1 class a’zolariga ko’rsatkich yaratildi
int (c1::*func)(); // c1 class a’zolariga ko’rsatkich yaratildi
c1 a(4), b(8); // a va b obyektlar yaratildi
data = &c1::val; // data va func ko’rsatkichlariga c1 a’zolarining joylari olindi
func = &c1::get_num; // data va func ko’rsatkichlariga c1 a’zolarining joylari
olindi
cout<
qilinmoqda
cout<<(a.*func)();<<(b.*func)(); // Obyekt a’zolariga ko’rsatkichlar orqali murojat qilinmoqda
|
| |