1 – dars. C++ Dasturlash tilining kelib chiqishi xaqida ma’lumot


- DARS. SINF KOMPONENTA FUNKTSIYALARI



Download 4,47 Mb.
bet69/89
Sana15.04.2022
Hajmi4,47 Mb.
#553102
1   ...   65   66   67   68   69   70   71   72   ...   89
Bog'liq
C kitob TAYYOR

68 - DARS. SINF KOMPONENTA FUNKTSIYALARI.


Komponenta funktsiya ta'rifi.
Komponenta funktsiya albatta sinf tanasida ta'riflangan bo’lishi lozim. Global funktsiyalardan farqli komponenta funktsiya sinfning hamma komponentalariga murojaat qilishi mumkin. Funktsiyaning faqat prototipi emas to’la ta'rifi sinf tanasida joylashgan bo’lsa, bu funktsiya joylashtiruvchi (inline) funktsiya hisoblanadi. Ma'lumki inline funktsiyalarda tsikllar, kalit bo’yicha o’tish operatori ishlatilishi mumkin emas. Bundan tashqari bunday funktsiyalar rekursiv funktsiya bo’lolmaydi. Bu chegaralarni engish uchun sinf tanasiga faqat funktsiya prototipi joylashtirilib, funktsiyaning to’la ta'rifi sinf tashqarisida dasturga kiruvchi boshqa funktsiyalar bilan birga beriladi. Komponenta funktsiyani sinf tashqarisida ta'riflanganda, qaysi sinfga tegishli ekanligini qo’yidagi shaklda ko’rsatiladi:
Sinf-nomi :: Komponenta funktsiya-nomi
Sinf tanasiga komponenta funktsiya prototipi qo’yidagi shaklda joylashtiriladi:
Tip funktsiya-nomi(formal-parametrlar-ta'rifi)
Sinf tashkarisida funktsiya qo’yidagi shaklda ta'riflanadi:
Tip sinf-nomi :: funktsiya-nomi(formal-parametrlar-spetsifikatsiyasi)
{ funktsiya tanasi };
Oldingi misoldagi employee sinfida funktsiya sinf ichida ta'riflangan. Bunday funktsiya joylanuvchi (inline) funktsiya deb qaraladi. Funktsiyani sinf tashqarisida ta'riflab sinf ichiga funktsiya prototipini joylashtirish mumkin. Sinf ta'rifi bu holda qo’yidagi kurinishda bo’ladi:
class employee
{
public:
char name[64];
long employee_id;
float salary;
void show_employee(void); |————————> Prototip funktsii
};
Har hil funktsiyalar bir hil nomli funktsiyalardan foydalanishi mumkin bo’lgani uchun funktsiya nomi sinf nom va global ruhsat operatori belgisi (::) qo’yilishi lozim.
void employee:: show_employee (void) //-------------->Imya klassa
{
sout << "Imya: " << name << endl; Imya elementa cout << "Nomer slujathego: " << employee_id << endl;
cout << "Oklad: " << salary << endl;
};
. Qo’yidagi CLASSFUN.CPP dastur show_employee funktsiyasi ta'rifini sinf tashqarisiga joylashtiradi:
#include
#include
class employee
{
public:
char name [64];
long employee_id;
float salary;
void show_employee(void);
};
void employee::show_employee(void)
{
cout << "Imya: " << name << endl;
cout << "Nomer slujathego: " << employee_id << endl;
cout << "Oklad: " << salary << endl;
};
void main(void)
{
employee worker, boss;
strcpy(worker.name, "John Doe");
worker.employee_id = 12345;
worker.salary = 25000;
strcpy(boss.name, "Happy Jamsa");
boss.employee_id = 101;
boss.salary = 101101.00;
worker.show_employee();
boss.show_employee();
}
Ikkinchi misol:
Bu misolda PEDIGREE.CPP dasturida dog, sinfi kiritiladi. Dasturda sinf funktsiyasi show_breed tashqarisida ta'riflanadi. So’ngra dog tipidagi ikki ob'ekt yaratilib, har biri haqidagi ma'lumot ekranga chiqariladi
#include
#include
class dogs
{
public:
char breed[64];
int average_weight;
int average_height;
void show_dog(void) ;
};
void dogs::show_breed(void)
{
cout << "Poroda: " << breed << endl;
cout << "Sredniy ves: " << average_weight << endl;
cout << "Srednyaya vihsota: " << average_height << endl;
}
void main(void)
{
dogs happy, matt;
strcpy(happy.breed, "Dolmatin") ;
happy.average_weight = 58;
happy.average_height = 24;
strcpy(matt.breed, "Kolli");
matt.average_weight =22;
matt.average_height = 15;
happy.show_breed() ;
matt.show_breed();
}
3 misol
Misol tariqasida nuqta tushunchasini aniqlovchi Point.L fayliga yozib qo’yamiz:
# includef Point.h
#define Point1.h
class point {
protected:
int x,y;
public;
Point ( int xi=0, int yi=0);
Int& givex(void);
Int& givey (void);
Void show(void);
Void move(int xn=0, int yn=0);
Private:
Void hid();
}
#endif
Kelgusida point sinfini boshqa sinflarga qo’shish mumkin bo’lgani uchun shartli protsessor direktivasi #ifndef POINT.H ishlatilgan. Protsessorli identifikator POINT.H #define POINT1.H direktivasi orqali kiritilgan.
Shuning uchun # include “point.h” direktivasi bir necha marta ishlatilganda ham POINT sinfi ta'rifi teksti faqat bir marta kompilyatsiya qilinayotgan faylda paydo bo’ladi. POINT sinfi komponenta funktsiyalarini qo’yidagicha ta'riflaymiz:
#ifndef POINT.CPP
#define POINT1.CPP
#include
#include “point.h”
Point ::point(int xi=0, int yi=0)
{ x=xi; y=yi;}
int &point::givex(void) {return x;}
int &point::givey(void) {return y;}
void point::show(void)
{putpixel(x,y,get color());}
void point::hide (void)
{ putpixel(x,y,get b color());}
void point::move(int xn=0, int yn=0)
{ hide( );
x=xn; y=yn;
show( );
}
#endif
sinf ta'rifida qo’yidagi grafik funktsiyalar ishlatiladi:
void putpixel(intx; inty; int color)
Ekranda color rangli(x,y) kordinatali nuqtani tasvirlaydi.
Int getbcolor(void)
Fon rangini qaytaradi
Int getcolor(void)
Tasvir rangini qaytaradi.
Kiritilgan point sinfi va komponenta funktsiyalari bilan ishlovchi dasturni keltiramiz:
#include
#include
#include “point.epp”
void main()
{ point A(200,50);
point B;
point D(500,200);
int dr=Detect, mod;
initgraph(&dr, &mod, ”c:\borland\bgi”);



Download 4,47 Mb.

Do'stlaringiz bilan baham:
1   ...   65   66   67   68   69   70   71   72   ...   89




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish