Mavzu: polimorfizm va uning turlari
Download 44.24 Kb.
|
13 – ma’ruza mavzu polimorfizm va uning turlari. Virtual funksi-fayllar.org
- Bu sahifa navigatsiya:
- Vaqtli va kechiktirilgan bog‘lanishlar; 2. Virtual funksiyalar; 3. Virtual va novirtual funksiyalar;
- Kalit so’zlar
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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling