Mavzu-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)();<
Dostları ilə paylaş: |