13 – ma’ruza mavzu: polimorfizm va uning turlari. Virtual funksiya. Abstrakt sinf va funksiyalar


Download 378.34 Kb.
Pdf ko'rish
bet1/8
Sana15.12.2022
Hajmi378.34 Kb.
#1007526
  1   2   3   4   5   6   7   8
Bog'liq
9y9byPXmkU5D8noFIWuv6TGva5udl9pc4QtcMYrC



13 – MA’RUZA 
 
MAVZU: POLIMORFIZM VA UNING TURLARI.
VIRTUAL FUNKSIYA. ABSTRAKT SINF VA FUNKSIYALAR 
 
Reja : 
1. 
Vaqtli va kechiktirilgan bog‘lanishlar; 
2. 
Virtual funksiyalar; 
3. 
Virtual va novirtual funksiyalar; 
4. 
Dinamik polimorfizmni qo’llash; 
5. 
Vertual destructorlar; 
6. 
Abstrakt sinflar va sof virtual funksiyalar. 
Annotatsiya: Ushbu ma’ruzada obyektga yonaltirilgan dasturlash 
tamoyillaridan polimorfizm va uning turlarini qollanilish usullari haqida 
ma’lumotlar keltirilgan. 
 
Kalit so’zlar: sinf, polimorfizm, virtual funksiyalar, novirtual funksiyalar
abstrakt sinflar, dinamik polimorfizm, virtual destructor. 
Vaqtli va kechiktirilgan bog‘lanishlar. 
C++tilida polimorfizm ikki usulda qo‘llab-quvvatlanadi. Birinchisi, funksiya 
va operatorlarni qayta yuklash vositasi bilan kompilyasiya paytida. Polimorfizmning 
bu ko‘rinishiga statik polimorfizm deyiladi, chunki u dastur bajarilishidan oldin
ya’ni kompilyatsiya va jamlash (komponovka) paytida funksiya identifikatorlarini
fizik adreslar bilan vaqtli bog‘lash orqali amalga oshiriladi. Ikkinchisida, dastur 


bajarilishida virtual funksiyalar vositasida. Dastur kodida virtual funksiyaga 
murojaatni uchratgan kompilyator, bu chaqirishni faqat belgilab qo‘yadi, funksiya 
identifikatorini adres bilan bog‘lashni dasturni bajarish bosqichiga qoldiradi. Bu 
jarayonga kechiktirilgan bog‘lanish deyiladi. Virtual funksiya - bu shunday 
funksiyaki, uni chaqirish va mos amallarni bajarish, uni chaqirgan obyekt turiga 
bog‘liq bo‘ladi. Obyekt dastur bajarilish jarayonida qaysi funksiyani chaqirish 
kerakligini aniqlaydi. Polimorfizmning bu ko‘rinishiga dinamik polimorfizm 
deyiladi. Dinamik polimorfizmni amalga oshirishning asosi sifatida C++ tilidagi 
tayanch sinfga ko‘rsatkichni aniqlanishidir. O‘z navbatida, bu ko‘rsatkich nafaqat 
tayanch sinfga, balki shu sinfning vorisi bo‘lgan ixtiyoriy sinf obyektiga ko‘rsatishi 
mumkin. Sinflarning bu xossasi vorislikdan kelib chiqadi, chunki har qanday voris 
sinf obyekti tayanch sinf turida bo‘ladi. Dasturni yig‘ish paytida (komponovka 
paytida) tayanch sinfga ko‘rsatkich egasi bo‘lgan foydalanuvchi tomonidan qaysi 
sinf obyekti yaratilishi noma’lum bo‘ladi. Shu sababli, ko‘rsatkich o‘z obyekti bilan 
faqat dastur ishlashi paytidagini, ya’ni dinamik ravishda bog‘lanishi mumkin. 
Tarkibida hech bo‘lmaganda bitta virtual funksiyasi bo‘lgan sinf polimorfm sinf 
deyiladi. Har bir polimorf turdagi berilganlar uchun kompilyator virtual funksiyalar 
jadvalini yaratadi va shu jadvalga sinfning har bir obyektiga yashiringan 
ko‘rsatkichni joylashtiradi. Kompilyator virtual funksiyalar jadvaliga ko‘rsatkichni 
initsializatsiya qiluvchi kod bo‘lagini polimorf sinf konstruktori boshlanishiga 
joylashtiradi. Virtual funksiya chaqirilganda ushbu kod virtual funksiyalar jadvaliga 
ko‘rsatkichni topadi, keyin jadvaldan mos funksiya adresini oladi. Keyin 
ko‘rsatilgan adresga o‘tish bilan funksiya chaqirishi ro‘y beradi. 

Download 378.34 Kb.

Do'stlaringiz bilan baham:
  1   2   3   4   5   6   7   8




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