Mavzu: polimorfizm va uning turlari


Download 44.24 Kb.
bet1/7
Sana03.06.2024
Hajmi44.24 Kb.
#1855802
  1   2   3   4   5   6   7
Bog'liq
13 – ma’ruza mavzu polimorfizm va uning turlari. Virtual funksi-fayllar.org


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




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 yo‘naltirilgan dasturlash
tamoyillaridan polimorfizm va uning turlarini qo‘llanilish 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 44.24 Kb.

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




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