ToshkentAxborot texnologiyalari universiteti mustaqil ish




Download 321,36 Kb.
Pdf ko'rish
bet9/9
Sana06.01.2024
Hajmi321,36 Kb.
#131130
1   2   3   4   5   6   7   8   9
Bog'liq
Jalilov Lazizbek

S I N F - N O M I . O B ’ E K T - N O M I
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. 
Funksiyani sinf tashqarisida ta’riflab sinf ichiga funksiya prototipini 
joylashtirish mumkin. Sinf ta’rifi bu holda quyidagi ko’rinishda bo’ladi: 
class employee 

public: 
long employee_id; 
float salary; 
void show_employee(void); 
}; 
Har xil funksiyalar bir xil nomli funksiyalardan foydalanishi mumkin bo’lgani 
uchun funksiya nomi sinf nomi va global ruxsat operatori belgisi (::) qo’yilishi 
lozim. 
void employee::show_employee(void) 

cout<<"Nomer: "<cout<<"Maosh: "<}; 
Funksiya sinf tashqarisida ta’riflangan bo’lsa ularni inline funksiya sifatida 
qarash uchun funksiya ta’rifida inline so’zi aniq ko’rsatilgan bo’lishi kerak. 
Quyidagi 
dastur show_employee funksiyasi 
ta’rifini sinf tashqarisiga 
joylashtiradi va inline so’zi anik ko’rsatiladi: 
#include  
using namespace std; 
class employee 

public: 
long employee_id; 
float salary; 


void show_employee(void); 
}; 
inline void employee::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; 

K O N S T R U K T O R L A R .
K O N S T R U K T O R L A R
B U
S I N F
K O M P O N E N T A
F U N K S I Y A L A R I
B O ’ L I B ,
OB’EKTLARNI 
A V T O M A T I K
I N I T S I A L I Z A T S I Y A
Q I L I S H
U C H U N
I S H L A T I L A D I .
Konstruktorlar ko’rinishi quyidagicha bo’lishi mumkin: 
Sinf nomi (formal parametrlar ro’yxati) 
{konstruktor tanasi} 
Bu komponenta funksiya nomi sinf nomi bilan bir xil bo’lishi lozim. 
Misol uchun complex sinfi uchun konstruktorni quyidagicha kiritish mumkin : 


complex (double re = 0.0; double im = 0.0 ) 
{real=re; imag=im;} 
Konstruktorlar uchun qaytariluvchi tiplar, xatto void tipi ham ko’rsatilmaydi. 
Dasturchi tomonidan ko’rsatilmagan holda ham ob’ekt yaratilganda konstruktor 
avtomatik ravishda chaqiriladi. 
 



Download 321,36 Kb.
1   2   3   4   5   6   7   8   9




Download 321,36 Kb.
Pdf ko'rish

Bosh sahifa
Aloqalar

    Bosh sahifa



ToshkentAxborot texnologiyalari universiteti mustaqil ish

Download 321,36 Kb.
Pdf ko'rish