O’ZBEKISTON RESPUBLIKASI AXBOROT TEXNOLOGIYALARI VA KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI
AXBOROT XAVFSIZLIGI FAKULTETI
REFERAT
BAJARDI:TURDIQULOV JAHONGIR
TOSHKENT-2021
Abstrakt sinf va metodlar
C++ tilida kamida bitta virtual funksiyaga ega bo’lgan sinf abstrakt sinf deyiladi.
Abstrakt sinfning asosiy xususiyatidan biri shuki, ushbu turdagi sinfdan obyekt olib bo’lmaydi.
Demak sinfni to’la abstractligini ta’minlash uchun quyidagi qonuniyatdan foydalanamiz:
class base{
public:
virtual vfunc(args....) = 0;
..... }
Abstrakt klassni yaratishda biz abstract kalit so'zidan foydalanamiz. Abstrakt sifatida belgilangan klass instantsiyalanmaydi. Ya'ni obyekt ololmaymiz.
Quyidagi abstrakt klass va metodlar haqida muhim ko'rsatmalarni o'qing:
Abstrakt klassda boshqa odatiy klass kabi o'z xossa va metodlari bo'lishi mumkin.
Abstrakt klass instantsiyalanmaydi, shuning uchun biz child klass (parent klassdan) yaratib, keyin child klassning obyektini yaratishimiz mumkin.
Agar klassda bitta abstrakt metod bo'lsa, unda klass ham mavjum bo'lishi kerak.
Abstrakt metod shunchaki kod qismi bo'sh bo'lganda ham unga argument va metod nomini kiritoladigan bayonot.
Agar buni tushunishga qiynalayotgan bo'lsangiz, havotir olmang. Keyingi darslarimizda qadamma-qadam barcha ko'rsatma va tushunchalarni berib boramiz.
Sinfni abstrakt deb e'lon qilish uchun, sinf nomidan oldin abstract kalit so'zini ishlatishimiz kerak.
Yuqoridagi namunamizda, Vehicle sinfimiz - abstrakt metodi mavjud bo'lgan abstrakt sinf.
Abstrakt klassni yaratish ko'rsatmalariga amal qilish dasturchini o'ziga bog'liq. Misol uchun, agar Vehicle sinfimizni extend qiladigan yangi sinf yaratmoqchi bo'lsangiz abstrakt metod milegae() ta'rifini ta'minlashingiz kerak aks holda, child sinf ham abstrakt bo'lishi kerak bo'ladi. Shuning uchun, barcha child sinflar mileage() metod abstrakt ta'rifini ta'minlashingiz(yozishingiz) kerak.
Abstrakt sinf ichida abstrakt bo'lmagan metod
Har qanday hatto bitta abstrakt metodli sinf abstrakt deb e'lon qilinishi kerak. Ammo, abstrakt sinflarda abstrakt bo'lmagan metodlar ham bo'lishi mumkin, shuningdek, ularni qayta belgilamasdan turib, child sinflar orqali ulardan foydalanish va kirish mumkin.
Yuqoridagi kodimizda, Vehicle abstrakt sinfimizga uchta start(), stop() va setName() nomli abstrakt bo'lmagan metodlarni qo'shdik.
Boshqa sinflarga o'xshab, abstrakt sinfdan yangi sinf yaratishimiz mumkin bo'ladi.
Bu yerda yagona farq bu parent sinfda belgilangan abstrakt metod ta'rifini child sinflarda ham belgilashingiz kerak.
Agar child sinfda abstrakt metod ta'rifi yozilmagan bo'lsa, unda u abstrakt sinf sifatida belgilanishi kerak.
Keling, Vehicle sinfini meros qilib oluvchi 2 child sinf yaratamiz va unga abstrakt metod ta'rifi mileage() ni belgilaymiz:
Biz xohlaganimizcha child sinfni yaratishimiz mumkin, masalan:
Yuqorida ta'kidlab o'tkanimizdek, abstrakt sinfda hech qanday obyekt bo'lmaydi, bir marta mos child sinfni belgilaymiz va ularni obyektlarini yarataveramiz.
Agar urunib ko'rmoqchi bo'lsangiz, mavzuni boshiga o'ting va Vehicle sinfini obyektini yaratishga harakat qiling, aytilganidek yaratolmaysiz va xato FATAL ERROR ga duch kelasiz.
Do'stlaringiz bilan baham: |