Mavzu: Voris sinflar yaratish va ular yordamida
masalalarni yechish.
Reja:
1.Voris sinflarga ta'rif
2.VORISLIKDA MUROJAAT HUQUQLARI.
3.Ular yordamida misollar
Har hil sinflar ob'ektlar va sinflarning uzlari vorislik munosabatlarida
bo’lishi mumkin. Bu munosabat obe'ktlar va sinflar ierarhiyasi hosil
bo’lishiga olib keladi. Sinflar ierarhiyasi mavjud sinflar yordamida, ya'ngi
sinf yaratishga imkon beradi. Mavjud sinflar asosiy (yoki yaratuvchi) bu
sinflar asosida shakillangan sinflar hosilaviy (yoki yaratilgan), ba'zida sinf
vorislari yoki meroshurlari deb ataladi.
Hosilaviy sinflar asosiy sinflarning ma'lumotlari va metodlarini merosga
oladilar. Bundan tashqari ularning o’z ma'lumotlari va metodlari bo’lishi
mumkin.
Me'roslik o’tuvchi pommosontalar hosilaviy sinflarga ko’chmaydi, balki
asosiy sinflarda qoladi. Agar ahborotlarni qayta ishlash uchun hosilaviy
sinfda yuq bo’lgan ma'lumotlar kerak bo’lsa ular avtomatik ravishda
asosiy sinfda qidiriladi.
Sodda vorislik
Vorislik hosilaviy sinfning mavjud asosiy sinfning harakteristikalarini
merosga olish hususiyatidir.
Misol uchun asosiy sinf employee mavjud bo’lsin:
Class employee
{
Public:
Employee(char *, char *, float);
Void show_employee(void);
Private:
Char name[64];
Char position[64];
Float salary;
};
Dasturda yangi manager sinfi yaratib employee sinfining qo’yidagi
elementlarini merosga olishi lozim bo’lsin:
public:
manager(char *, char *, char *, float, float, int);
void show_manager(void);
private:
float annual_bonus;
char company_car[64];
int stock_options;
};
Hosilaviy sinf asosiy sinfning elementlariga to’g’ridan – to’g’ri nuqta
operatori orqali murojaat qila olmaydi. Qo’yidagi MGR_EMP.CPP
dasturda vorislikdan foydalanish ko’rsatiladi:
#include
#include
class employee
{
public:
employee(char *, char *, float);
void show_employee(void);
private:
char name [ 64 ];
char position[64];
float salary;
};
Hosilaviy sinf asosiy sinfning elementlariga to’g’ridan – to’g’ri nuqta
operatori orqali murojaat qila olmaydi. Qo’yidagi MGR_EMP.CPP
dasturda vorislikdan foydalanish ko’rsatiladi:
public:
manager(char *, char *, char *, float, float, int);
void show_manager(void);
private:
float annual_bonus;
char company_car[64];
int stock_options;
};
Hosilaviy sinf asosiy sinfning elementlariga to’g’ridan – to’g’ri nuqta
operatori orqali murojaat qila olmaydi. Qo’yidagi MGR_EMP.CPP
dasturda vorislikdan foydalanish ko’rsatiladi:
#include
#include
class employee
{
public:
employee(char *, char *, float);
void show_employee(void);
private:
char name [ 64 ];
char position[64];
float salary;
};
Yana shunga e'tibor berinki show_manager funktsiyasi show_employee
funktsiyasini chaqirishi mumkin, chunki manager sinfi employee sinfining
vorisi bo’lgani uchun, umumiy elemenlariga murojaat qilishi mumkindir.
Vorislikda asosiy sinfning ba'zi komponenta ma'lumotlari yoki
komponenta funktsiyalari hosilaviy sinfda yangidan ta'riflanishi mumkin.
Bu holda asosiy sinfning komponentalariga hosilaviy sinfdan to’g’ridan-
to’g’ri murojaat qilib bo’lmaydi. Bu holda ko’rinish doirasini aniqlovchi
^:: amalidan foydalanish lozimdir. Har qanday komplament sinf o’z
urnida boshqa sinflar uchun hosilaviy bo’ladi. Sinflar va ob'ektlar
ierarhiyasida hosilaviy ob'ekt hamma asosiy sinflarning ruhsat berilgan
komponentalarini hisobga oladi. Sinflar volisligida komponentalarning
murojaat huquqlari katta rol' o’ynaydi. Haqiqiy sinf uchun
komponentalari ta'sir doirasida yotadi. Shuning uchun sinfga tegishli har
qanday funktsiya ihtiyoriy komponenta ma'lumotlariga murojaat qilishi
va sinfga tegishli ihtiyoriy funktsiyani chaqirishi mumkin. Sinf
tashqarisida faqat public huquqiga ega komponentalarga murojaat qilish
mumkin. Sinflar perergiyasida sinf komponentalariga murojaat huquqlari
qo’yidagilar:
Hususiy (private) metodlar va ma'lumotlarga faqat sinf ichida murojaat
qilish mumkin.
Himoyalangan (protected) komponentalari o’z sinflari va shu
sinfga me'roshur bo’lgan hamma hosilaviy sinflarga murojaat
qilish mumkin.
Umumiy (public) komponentlar global ya'ni dastur ihtiyoriy nuqtasidan
murojaat qilish mumkin.
Himoyalanganlari murojaat sinf clarl, istruct yoki union so’zlarining qaysi
biri bilan ta'riflanganligiga ham bog’likdir.
A « ekrandagi nuqta» asosiy sinf hisoblansa uning asosida « ekrandagi
darcha sinfni ugirish mumkin. Bu sinf berilganlarni ikki nuqta :
& chap yuqori burchakli aniqlovchi nuqta
& darcha o’lchovlarini ya'ni chap yuqori burchakka nisbatan
koordinatalar o’qi Buyicha siljish.
|