|
: Shablon sinflar yaratish va ulardan foydalanish
|
bet | 4/4 | Sana | 21.12.2023 | Hajmi | 106,51 Kb. | | #125890 |
Bog'liq DASTURLASH 54: Shablon sinflar yaratish va ulardan foydalanish
Konstruktor sinf ishga tushirilganda chaqiriladi. Agar
sinfni shablonni taqdim etadigan yoki "zavod" deb hisoblang
misollarni yaratish uchun chizilgan, konstruktor ishga tushiradi
ushbu namunalarning turishi. Konstruktor kirishda namuna oladi
ma'lumotlar ( o'zi parametr ) va uni usul ichida yangilaydi. Python yordam beradi
va avtomatik ravishda sizga namunani uzatadi. Biroq, bu sabab bo'lishi mumkin
tartibsizlik, lekin keyinchalik bu haqida ko'proq.
Konstruktor tanasining ichida (5) (chunki u ichkariga joylashtirilgan
undan keyin yo'g'on ichak) noyob xususiyatga ega bo'lgan ikkita atribut qo'shilgan
Masalan: id va count . Ko'pgina liftlarda, har birida
stul noyob raqam bilan belgilanadi. Id atributi raqamni anglatadi.
Bundan tashqari, bir nechta chang'ichilar bitta stulga minishlari mumkin - ularning soni
Qiymat hisoblash atributida saqlanadi va nolga tenglashtiriladi. To'lash
diqqat: konstruktor hech narsani qaytarmaydi, lekin qiymatlarni yangilaydi,
misol uchun noyob.
5: Shablon funksiyalarda funksiyalarni qayta yuklash mexanizmi.
Ma’lumki, funksiyalarni aniqlashda ulam ing qaytarishi lozim
bo‘lgan qiymatlar tipi va funksiya uchun zarur bo ‘lgan parametrlar
tipini ko'rsatish lozim edi.
Faraz qilaylik, ikkita butun sonni q o ‘shish uchun funksiya
ciurilgan b o ‘lsin. Agar uchta butun sonni q o ‘shish talab qilingan
bo‘lsa, ular uchun boshqa nomdagi funksiyani qurish talab qilinadi.
Ikkita haqiqiy sonni qo‘shish uchun esa boshqa funksiya qurish lozim
bo'ladi.
Bunday hollarda bir xil funksiyani takror va takror yozishning
o'm iga, C++ tili bir xil nomdagi funksiyalarni qurish imkonini beradi.
Dastumi kompilatsiya qilish jarayonida C++ funksiyalaming har
biridagi argumentlar miqdori e ’tiborga olinadi va aynan kerak bo'lgan
funksiyani chaqiradi. Kompilyatorga bir nechta funksiyalar orasidan
kcragini tanlash imkoniyati funksiyalarni qayta yuklash deb ataladi.
105
Funksiyalami qayta yuklash amali bir xil nomdagi param etrlam i
har xil tipga mansub b o ‘lgan turli funksiyalar uchun qo‘llashga ruxsat
beradi.
Masalan, quyidagi dastur addjvalues nomli ikkita funksiyani
qayta yuklash uchun xizmat qiladi:
#include
int add_values (int a, int b)
{
return(a + b);
}
int add_values (int a, int b, int c)
f
return(a + b + c);
}
void main(void)
{
cout « “200 + 801 = “ « add_values(200, 801) « endl;
cout « “100 + 201 + 700 = “ « add_values(100, 201, 700)
« endl;
}
Ushbu dastur quyidagi natijani beradi:
D :\TC \B IK \Q A YTA .EXE
-
3j X
2 0 0 + 801 = 1001
10 0
+ 201 + 7 0 0 = 1O01
K o‘rinib turibdiki, dasturda ikkita bir xil nomdagi, ammo para
metrlari soni har xil b o ‘lgan addjvalues funksiyasi aniqlangan. Bu
holda kompilyator param etrlar soniga k o ‘ra qaysi funksiyani qo‘llash
haqida mustaqil ravishda xulosa qiladi.
Quyidagi misolga e ’tibor bering. Unda show message funksiyasi
qayta yuklanadi. Birinchi show_message funksiyasiga parametrlar
uzatilmaydi va u ekranga standart axborotni chiqaradi. Ikkinchisi unga
uzatilgan bitta m a’lumotni, uchinchisi esa ikkita m a’lumotni ekranga
chiqaradi.
106
^include
void show_message(void)
{
cout « “ Standart axborot: “ « “ C + + da dastrulashni
o ‘rganamiz ” « endl;
}
void show_message(char *message)
{
cout « message « endl;
}
void show_message(char *first, char *second')
{ cout «
first « endl;
cout « second « endl; }
void main(void)
{
show_message();
show_m essage(“ C + + tili da dastrulash o so n ”);
show_m essage(“ C + + tili z o ‘r til!”, “Qayta yukalsh yaxshi
imkoniyat!”) ;
}
Bu dastur quyidagi natijani beradi:
D:\TC\RIN\QAYTA1 .EXE
. □ X
S t a n d a r t a x b o r o t :
C++ da d a s t r u l a s h n i 0
C++ t i l i da d a s t r u la s h oson
C++ t i l i z o ' r t i l *
Q a yta y u k ls h y a x s h i in k o n iy a t ?
o’r g a n a m iz
Qayta yuklanadigan funksiyalar bir xil tipdagi qiymatlami qay-
tarishi lozim, ammo parametrlarining miqdori va tiplari har xil bo‘lishi
ham mumkin.
Foydalanilgan adabiyotlar
internet: http://fayllar.org
|
| |