Mavzu: Ko’rsatkichlar, havolalar. Ularning avlod-ajdod sinfda qo’llanilishi


Koʻrsatkichlar, havolalar va ajdod sinflari


Download 463.91 Kb.
Pdf ko'rish
bet3/4
Sana11.02.2023
Hajmi463.91 Kb.
#1189856
1   2   3   4
Bog'liq
1-ma\'ruza

Koʻrsatkichlar, havolalar va ajdod sinflari. “Nima 
uchun faqat kichik obyektdan foydalanishimiz mumkin boʻlsa, 
ajdod-sinf koʻrsatkichidan yoki avlod sinf obyektiga havoladan 
foydalanishimiz kerak?” degan tabiiy savol paydo boʻlishi 
mumkin. Buning bir qancha yaxshi sabablari bor ekan. 
Birinchidan, hayvonning nomi va tovushini chiqaradigan 
funksiyani yozmoqchimiz deylik. Ajdod-sinfga koʻrsatkich 
ishlatmasdan, funksiyani qayta yuklash orqali buni amalga 
oshirishingiz kerak(5-listing). 
5-listing 
void report(Cat &cat) 



cout << cat.getName() << cat.speak() <<" 
deydi"<< '\n'; 

void report(Dog &dog) 

cout << dog.getName() << dog.speak() <<" 
deydi"<< '\n'; 

Bu kod juda qiyin emas, lekin tasavvur qiling, bizda 30 xil 
turdagi hayvonlar bor. Bu holda 30 ta qayta yuklanuvchi 
funksiya yozishimiz kerak. Bundan tashqari, agar yangi turdagi 
hayvonlarni qoʻshsangiz, u holda ushbu turdagi hayvon uchun 
yangi funksiya yozishingiz kerak boʻladi. Bu juda katta vaqtni 
yoʻqotishdir. 


Biroq, Cat va Dog sinflari Animal sinfini voris qilib olganligi 
sababli, Cat va Dog sinfining Animal qismi bor, shuning uchun 
quyidagilarni bajarishimiz mumkin (6-listing). 
6-listing 
int main() 

Cat cats[] = { Cat("Matros"), Cat("Ivan"), 
Cat("Martun") }; 
Dog dogs[] = { Dog("Barsik"), Dog("Tolik"), 
Dog("Tyzik") }; 
for (int i=0; i < 3; i++) 
cout << cats[i].getName() << 
cats[i].speak() <<" deydi"<< '\n'; 
for (int i=0; i < 3; i++) 


cout << dogs[i].getName() << dogs[i].speak() <<" 
deydi"<< '\n';
return 0; 

Bu ham toʻliq yechim emas. Chunki, hayvonlarning turi koʻp 
boʻlsa, juda koʻp massiv yaratishimiz kerak edi, har bir hayvon 
turi uchun bittadan. 
Biroq, Dog va Cat Animaldan voris qilib olganligi sababli
quyidagilarni bajarishimiz mumkin (7-listing). 

Download 463.91 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




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