Mavzu: Ko’rsatkichlar, havolalar. Ularning avlod-ajdod sinfda qo’llanilishi
Koʻrsatkichlar, havolalar va ajdod sinflari
Download 463.91 Kb. Pdf ko'rish
|
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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling