2-amaliyot Sinflarda voris sinf elementlaridan foydalanish Voris olish va protected spetsifikatori


Avlod sinfiga yangi funksiyalar qo’shish



Download 404,16 Kb.
Pdf ko'rish
bet10/10
Sana04.02.2022
Hajmi404,16 Kb.
#431070
1   2   3   4   5   6   7   8   9   10
Bog'liq
2 sem 2 amaliyot Sinflarda voris sinf elementlaridan foydalanish

Avlod sinfiga yangi funksiyalar qo’shish
. Yuqoridagi misolda bizda ajdod-
sinfi uchun manba kodiga kirish imkonimiz bor, agar xohlasak, to'g'ridan-to'g'ri 
ajdod-sinfiga yangi funksiya qo'shishimiz mumkin. 
Ba'zida ajdod sinfiga kirishimiz mumkin, lekin biz uni o'zgartirishni 
xohlamaymiz. Masalan, biz faqat uchinchi tomon sotuvchisidan kod kutubxonasini 
sotib oldik, ammo bizga qo'shimcha funksiyalar kerak. Biz uni kutubxonaning 
manba kodiga qo'shishimiz mumkin, ammo bu eng yaxshi yechim bo'lmaydi. 
Yangilanish kelsa nima bo'ladi? Yangilashdan so'ng biz barcha kodni yana qo'lda 
ko'chirishimiz kerak bo'ladi, bu vaqt talab etadi va qo'shimcha ravishda 
yangilashdan so'ng bizning eski kodimiz kutubxona kodi bilan ishlamasligi xavfi 
mavjud. 
Ajdod sinfini o'zgartirish mumkin bo'lmagan holatlar ham mavjud. Misol 
uchun, biz C++ standart kutubxonasining bir qismi bo'lgan kodni o'zgartira 
olmaymiz. Ammo biz ushbu kutubxonadan sinflarni meros qilib olishimiz va keyin 
avlod sinflarimizga kerakli funksiyalarni qo'shishimiz mumkin. Xuddi shu narsa 


bizga sarlavha fayllari taqdim etiladigan uchinchi tomon kutubxonalari uchun ham 
amal qiladi, lekin kod oldindan kompilyatsiya qilinadi. 
Qanday bo'lmasin, eng yaxshi yechim - o'z ajdod sinfingizni yozish va avlod 
sinflarimizga kerak bo'lgan funksiyalarni qo'shish. 
Parent sinfining bir nyuansi shundaki, boshqa obyektlar m_value ga kirishlari 
mumkin. Biz buni Parent sinfiga kirish funksiyalarini qo'shish orqali tuzatishimiz 
mumkin, ammo misol uchun, Child sinfiga getter qo'shamiz. m_value Parent sinfida 
protected deb e'lon qilinganligi sababli, Child unga to'g'ridan-to'g'ri kirish huquqiga 
ega. 
Avlod sinfiga yangi funksiya qo'shish odatdagidek amalga oshiriladi: 
class Child: public Parent 

public: 
Child(int value) 
: Parent(value) 


int getValue() { return m_value; } 
}; 
Endi tashqaridan boshqa obyektlar m_value ga kirish uchun Child sinfining 
obyekti orqali getValue () ga murojaat qilishlari mumkin bo'ladi: 
int main() 

Child child(7); 
cout<<"Avlod "<return 0; 

Ko'rinib turibdiki, Parent sinfi obyektlari Child sinfida getValue () metodiga 
kirish huquqiga ega emas. Quyidagilar ishlamaydi: 
int main() 

Parent parent(7); 
cout <<"Parent" << parent.getValue() << " qiymatiga ega"<return 0; 



Buning sababi, Parent sinfida getValue () metodi mavjud emas. getValue () 
metodi Child sinfiga tegishli. Avlod ajdodning merosxo’ri bo'lgani uchun, avlod 
ajdod a'zolariga kirish huquqiga ega, Ajdod esa avlod sinfidagi hech narsadan 
foydalana olmaydi. 

Download 404,16 Kb.

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




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