Kitob uchta qismdan iborat. "Strukturali dasturlash", "Obyektli-yo’nalishli dasturlash", "Standart kutubxonalar"



Download 333,2 Kb.
bet72/90
Sana10.07.2022
Hajmi333,2 Kb.
#770437
1   ...   68   69   70   71   72   73   74   75   ...   90
Bog'liq
C majmua

Abstrakt sinflar

Hech bo’lmaganda bitta sof virtual usulni o’z ichiga olgan sinf abstrakt sinf deyiladi. Abstrakt sinflar hosilaviy sinflarda konkretlashtirish ko’zda tutilgan umumiy tushunchalarni ifodalash uchun mo’ljallangan. Abstrakt sinf faqat boshqa sinflar uchun bazaviy sinf sifatida foydalanishi mumkin – abstrakt sinfning obyektlarini yaratish mumkin emas, chunki sof virtual usulni to’g’ri yoki bilvosita chaqirish bajarishda xatoga olib keladi.


Absrtakt sinfni aniqlashda quyidagilarga ega bo’lish lozim:

  • abstrakt sinfni tiplarni oshkora keltirishda parameter tipini va funksiya qaytaruvchi qiymat tipini tavsiflash uchun ishlatib bo’lmaydi;

  • agar initsializatsiyalashda vaqtli obyekt yaratish talab etilmasa abstrakt sinfga ko’rsatgich va murojaat e’lon qilishga ruxsat beriladi;

  • agar abstrakt sinf hosila sinfi barcha sof virtual funksiyalarni aniqlamasa, u ham abstrakt hisoblanadi.

Shunday qilib, parametrli abstrakt sinfga ko’rsatgich bo’lgan funksiyani yaratish mumkin. Bu parametr o’rniga dastur bajarilish paytida ixtiyoriy hosila sinf obyektiga ko’rsatgich berilishi mumkin. Bu bir shajara miqiyosida ixtiyoriy tipdagi obyekt bilan ishlaydigan ko’p shaklli (polimorf) funksiyalar yaratishga imkon beradi.




To’plamli vorislik

To’plamli vorislik sinf bir nechta bazaviy sinflarga ega ekanligini bildiradi. Agar bazaviy sinflarda bir xil nomli elementlar bo’lsa, bunda identifikatorlar bahsi ro’y berishi mumkin, u ko’rinish sohasiga kirish amali yordamida bartaraf qilinadi:


class monstr{


public: int get_health();

};
class hero{
public: int get_health();

};
class ostrich: public monstr, public hero{

};
int main(){
ostrich A:
cout << A.monstr::get_health();
cout « A.hero::get__health();
}

Misoldan ko’rinadiki, get_health usulni chaqirish uchun u tavsiflangan sinfni oshkor ko’rsatish talab etiladi. Sinf usulini chaqirish uchun oddiy A.get_health() kontruksiyadan foydalanish xatoga olib keladi, chunki kompilyatsiya bazaviy sinflardan qaysi birining usuliga murojjat talab qilinayotganligini tushuna olmaydi.


Agar bazaviy sinflarda umumiy bobo (predok, grandfather) bo’lsa, bu bazaviy sinflardan hosilalar boboni maydonlari ikki nusxasini meros qilishiga olib keladi, bu esa maqsadga muvofiq emas. Bunday vaziyatdan chiqish uchun umumiy boboni meros qilishda uni virtual sinf kabi aniqlash talab etiladi:

class monstr{



};
class daemon: virtual public monstr{

};
class lady: virtual public monstr{

};
class baby: public daemon, public lady{

};

baby sinfi monstr sinfi maydonlarining faqat bir nusxasi. Agar bazaviy sinf ham virtual, ham oddiy tarzda meros qilinsa, hosila sinfda har bir virtual bo’lmagan kirish uchun alohida nusxalar va virtual uchun bitta nusxa qatnashadi.


To’plamli vorislik hosilaviy sinf ikki yoki undan ortiq bazaviy sinflar xossalariga ega bo’lishini ta’minlash uchun qo’llaniladi. Ko’proq bu sinflardan biri asosiy bo’lib, boshqalari ba’zi qo’shimcha xossalarni ta’minlaydi, shuning uchun ular yordamchi sinflar deyiladi. Imkoni boricha yordamchi sinflar virtual bo’lishi lozim, bu esa romb ko’rinishli vorislikda (bazaviy sinflarda umumin bobo bo’lganda) paydo bo’ladigan ko’pgina muammolarni chetlab o’tishga imkon beradi.



Download 333,2 Kb.

Do'stlaringiz bilan baham:
1   ...   68   69   70   71   72   73   74   75   ...   90




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish