Sinf-nomi.ob’ekt-nomi
Dasturda ob’ekt komponentasiga quyidagicha
murojat kilish mumkin:
Sinf-nomi.ob’ekt-nomi :: komponenta-nomi yoki
soddarok holda
Ob’ekt-nomi. Element-nomi
Misol uchun:
x.real=1.24;
x.imag=0.0;
dim[3]. Real=0.25;
dim[3]. Imag=0.0;
Sinfga tegishli funksiyalarga quyidagicha murojat
qilinadi:
ob’ekt-nomi. funksiya-nomi
Misol uchun:
X. define(0.9) (Bu holda real=0.9 va imag=0.0)
X. define(4.3,20.0) (Bu holda kompleks son
4.3+i*20.0)
Display funksiyasi ekranda kompleks son
qiymatlarini tasvirlaydi.
Komponenta o‘zgaruvchilar va komponenta
funksiyalar.Sinf kompanenta o‘zgaruvchilari sifatida
o‘zgaruvchilar , massivlar, ko‘rsatkichlar ishlatilishi
mumkin. Elementlar ta’riflanganda initsializatsiya
kilish mumkin emas. Buning sababi shuki sinf uchun
xotiradan joy ajratilmaydi. Kompanenta
elementlariga kompanenta funksiyalar orkali
murojat qilinganda faqat nomlari ishlatiladi Sinfdan
tashqarida sinf elementlariga emas ob’ekt
elementlariga murojat kilish mumkin . Bu murojat
ikki xil bo‘lishi mumkindir.
Ob’ekt- nomi . Element - nomi.
Sinf elementlari sinfga tegishli funksiyalarida
ishlatilishidan oldin ta’riflangan bo‘lishi shart emas.
Xuddi shunday bir funksiyadan xali ta’rifi
berilmagan ikkinchi funksiyaga murojaat kilish
mumkin.
Komponentalarga murojaat xukuklari.
Komponentalarga murojaat xuquqi murojaat
spetsifikatorlari yordamida boshkariladi. Bu
spetsifikatorlar:
Protected – ximoyalangan;
Private – xususiy;
Public – umumiy;
Ximoyalangan kompanentalardan sinflar ierarxiyasi
qurilganda foydalaniladi. Oddiy holda Protected
spetsifikatori Private spetsifikatoriga ekvivalentdir.
Umumiy ya’ni Public tipidagi komponentalarga
dasturning ixtiyoriy joyida murojaat kilinishi
mumkin.
Xususiy ya’ni Private tipidagi komponentalarga sinf
tashqarisidan murojaat qilish mumkin emas. Agar
sinflar Struct xizmatchi so‘zi bilan kiritilgan bo‘lsa,
uning hamma komponentalari umumiy Public
bo‘ladi, lekin bu xuquqni murojaat spetsifikatorlari
yordamida o‘zgartirish mumkin.
Agar sinf Class xizmatchi so‘zi orkali ta’riflangan
bo‘lsa, uning hamma komponentalari xususiy
bo‘ladi. Lekin bu xuquqni murojaat spetsifikatorlari
yordamida o‘zgartirish mumkindir.
Bu spetsifikator yordamida sinflar umumiy holda
quyidagicha ta’riflanadi:
class class_name
{
int data_member; // Ma’lumot-element
void show_member(int); // Funksiya-element
};
Sinf ta’riflangandan so‘ng, shu sinf tipidagi
o‘zgaruvchilarni(ob’ektlarni) quyidagicha ta’riflash
mumkin:
class_name object_one, object_two, object_three;
Quyidagi misolda
employee,
sinfi kiritilgandir:
class employee
{
public:
long employee_id;
float salary;
void show_employee(void)
{
cout<<"Nomer: "<cout<<"Maosh: "<
};
};
Bu sinf ikki o‘zgaruvchi va bitta funksiya-elementga
ega.
Quyidagi dastur ikki employee ob’ektini yaratadi.
Nuqta operatordan foydalanib ma’lumot
elementlarga qiymat beriladi so‘ngra
show_employee
elementidan foydalanib xizmatchi
xakidagi ma’lumot ekranga chikariladi:
#include
using namespace std;
class employee
{
public:
long employee_id;
float salary;
void show_employee(void)
{
cout<<"Nomer: "<cout<<"Maosh: "<};
};
int main()
{
employee worker, boss;
worker.employee_id = 12345;
worker.salary = 25000;
boss.employee_id = 101;
boss.salary = 101101.00;
cout<<"\n"<<"ishchi"<
worker.show_employee();
cout<<"\n"<<"boss"<
boss.show_employee();
return 0;
}
Komponenta funksiya ta’rifi. Komponenta funksiya
albatta sinf tanasida ta’riflangan bo‘lishi lozim.
Global funksiyalardan farqli komponenta funksiya
sinfning hamma komponentalariga murojat qilishi
mumkin. Funksiyaning faqat prototipi emas to‘la
ta’rifi sinf tanasida joylashgan bo‘lsa, bu funksiya
joylashtiruvchi (inline) funksiya hisoblanadi.
Ma’lumki inline funksiyalardassikllar, kalit bo‘yicha
o‘tish operatori ishlatilishi mumkin emas. Bundan
tashqari bunday funksiyalar rekursiv funksiya
bo‘lolmaydi. Bu chegaralarni engish uchun sinf
tanasiga faqat funksiya prototipi joylashtirilib,
funksiyaning to‘la ta’rifi sinf tashqarisida dasturga
kiruvchi boshqa funksiyalar bilan birga beriladi.
Komponenta funksiyani sinf tashqarisida
ta’riflanganda, qaysi sinfga tegishli ekanligini
quyidagi shaklda ko‘rsatiladi:
Sinf-nomi :: Komponenta funksiya-nomi
Sinf tanasiga komponenta funksiya prototipi
quyidagi shaklda joylashtiriladi:
Tip funksiya-nomi(formal-parametrlar-ta’rifi)
Sinf tashqarisida funksiya quyidagi shaklda
ta’riflanadi:
Tip sinf-nomi :: funksiya-nomi(formal-parametrlar-
spetsifikatsiyasi)
{ funksiya tanasi };
Oldingi misoldagi
employee
sinfida funksiya sinf
ichida ta’riflangan. Bunday funksiya joylanuvchi
(inline) funksiya
deb qaraladi.
Dostları ilə paylaş: |