Klasslarni yozishda biz funktsiyalarni yozishdagi tartib qoidalarga rioya qilamiz. Klassning birinchi qatoriga kalit so’z class va klass nomi, so’ngra yangi qatordan figurali qavslar ochiladi va uning ichiga klass usullari va atributlari yoziladi.
Klass quyidagi sektsiyalarga ega bo’lishi mumkin:
private (private, ichki).
protected (protekted, himoyalangan qism).
public (publik, umumiy).
– Ommaviy (public ) – barcha obektlar kirishi uchun ruxsat bor;
– Himoyalangan (protected) - faqat ushbu ekzemplyarga va har qanday tarmoq sinflarga kirishga ruxsat bor;
– Xususiy (private) - faqat ushbu ekzemplyarga kirishga ruxsat bor.
1.4 Tanlash operatori : switch. Tanlash operatori switch tanlanuvchi ifoda qiymatini birnechta konstantalar bilan taqqoslab chiqadi. switch case ko‟plik tanlov operatori hisoblanadi. switch da ko‟rsatilgan ifosa qiymati case so‟zidan keyin yozilgan har bir qiymat bilan taqqoslab chiqiladi. Taqqoslanuvchi qiymat qaysidir qatordagi case operatoridan yozilgan qiymatga teng u holda uning davomida yozilgan amallar bajariladi.
1.5 Vorislik.Vorislik mavjud bo‘lgan sinfning ta’rifi asosida yangi sinfni
yaratish imkonini beradi. Yangi sinf boshqasi asosida yaratilgach, uning ta’rifi
avtomatik tarzda mavjud sinfning barcha hususiyatlari, hulq-atvori va joriy
qilinishiga vorislik qiladi. Avval mavjud bo‘lgan sinf interfeysining barcha
metodlari va xususiyatlari avtomatik tarzda voris interfeysida paydo bo‘ladi.
Vorislik voris sinfida biron-bir jixatdan to‘g‘ri kelmagan xulq-atvorni avvaldan
ko‘ra bilish imkonini beradi. Bunday foydali xususiyat dasturiy ta’minotni
talablarning o‘zgarishiga moslashtirish imkonini beradi. Agar o‘zgartirishlar
kiritishga ehtiyoj tug‘ilsa, bu holda eski sinf funksiyalariga vorislik qiluvchiyangi sinf yozib qo‘ya qolinadi. Keyin o‘zgartirilishi lozim bo‘lgan funksiyalargaqaytadan ta’rif beriladi hamda yangi funksiyalar qo‘shiladi. Bunda o‘rniga o‘rin qo‘yishning mazmuni shundan iboratki, u dastlabki sinf ta’rifini o‘zgartirmay turib, obyekt ishini o‘zgartirish imkonini beradi. Axir bu holda ayta test sinovlaridan puxta o‘tkazilgan asosiy sinflarga tegmasa ham bo‘ladi. Agar siz ko‘p martalab qo‘llash yoki boshqa biron maqsadlarga ko‘ra vorislikni qo‘llashga ahd qilsangiz, avval har gal qarang - vorislik-sinf bilan vorislikni berayotgan sinfning turlari o‘zaro mos keladimi. Vorislikda turlarining mos kelishi ko‘pincha «Is-a» testi deb ataladi. Ikkita sinf bir hil turga ega bo‘lgandagina, o‘zaro «Is-a» munosabatida turibdi deb hisoblanadi. Birinchi sinf o‘zida ikkinchisinfning ekzemplyariga ega bo‘lgandagina ikkita sinf o‘zaro «Xas-a»munosabatidaturibdidebhisoblanadi
II-amaliy qism
Dastur kodi
#include #include #include using namespace std;
class asosiy
{
public:
void bosh_menu()
{
cout<cout<<" Siz bosh menudasiz "<cout<<" 1 => Mahsulotlar "<cout<<" 2 => Xaridorlar ro`yxati "<cout<<" 3 => Yangi xaridorlar uchun "<cout<<" 4 => Sotib olish "<cout<<" 5 => Dasturchi haqida malumot "<cout<<" Bo`limlardan birini tanlang "<cout<<" Bo`lim raqami: ";
}
void bolim1()
{
string text1;
cout<<" Omborlarimizdagi mahsulotlar\n\n";
ifstream oqi_ombor("tavar.txt");
if(oqi_ombor.is_open())
{
while ( getline(oqi_ombor,text1))
{
cout<}
oqi_ombor.close();
}
else
cout<<" Faylni ochishda xatolik yuzaga keldi";
int maxsulot1;
omborga1:
cout<<"\n Maxsulot raqamini kiriting yoki "
<<"\n bosh MENUGA qaytish uchun 0 ni bosing: ";
cin>>maxsulot1;
switch (maxsulot1)
{
case 1:cout<<"\n Bolalar futbolkasi \n narxi: 30 ming so`m \n"; break;
case 2:cout<<"\n Futbolka \n narxi: 50 ming so`m \n"; break;
case 3:cout<<"\n SHim \n narxi: 75 ming so`m \n"; break;
case 4:cout<<"\n Bolalar kastuyumi\n narxi: 145 ming so`m \n"; break;
case 5:cout<<"\n Paypoqlar \n narxi: donasi 2000 so`m \n"; break;
case 0:cout<<"\n"; break;
default: cout<<" Noto`g`ri raqam kiritdingiz. \n"; goto omborga1; break;
}
}
void bolim2()
{
int xaridor2;
string xaridor;
cout<< "\tXaridorlar "<ifstream oqi_xaridor("xaridor.txt");
if(oqi_xaridor.is_open())
{
while ( getline(oqi_xaridor,xaridor))
{
cout<}
oqi_xaridor.close();
}
else
cout<<" Faylni ochishda xatoli yuzaga keldi";
cout<<" Malumot olish uchun tartib raqamini kiriting\n";
cout<<" Raqam: "; b2qayt: cin>>xaridor2;
if(xaridor2<1 || xaridor2>10)
{
cout<<" Noto`g`ri raqam kiritdiz \n qaytadan raqam kiriting: "; goto b2qayt;
}
else
{
cout<<" ismi | hamkorlik muddati | sotilgan maxsulot hajmi (so`m)\n";
switch(xaridor2)
{
case 1: cout<<" Raxmatillo | 3.5 yil | 30 mlrd\n"; break;
case 2: cout<<" Bobur | 3 yil| 23 mlrd \n"; break;
case 3: cout<<" Xusnidin | 3 yil | 20 mlrd \n"; break;
case 4: cout<<" Natasha | 2.5 yil | 19.5 mlrd\n"; break;
case 5: cout<<" Mirzobek | 2.5 yil | 15 mlrd \n"; break;
case 6: cout<<" Shaxboz | 2.5 yil | 15 mlrd \n"; break;
case 7: cout<<" Javohir | 2 yil | 10 mlrd\n"; break;
case 8: cout<<" Xusan | 1.5 yil | 5 mlrd\n"; break;
case 9: cout<<" Jek | 2 yil | 15 mlrd \n"; break;
case 10: cout<<" OLiver | 1.5 yil | 12 mlrd \n"; break;
}
}
}
void bolim3()
{
cout<<"\n Bizni firmamizni tanlaganizdan xursandmiz. \n";
cout<<" Yangi xaridor bo`lsangiz \n";
cout<<" raxmatilllotoxirov2003@gmail.com ga yozing ";
}
void bolim4()
{
int fud1,fud2,shim,kas,pay;
cout<<" Sotib olmoqchi bo`lgan narsalarizni kiriting \n";
cout<<" Sotib olmaydigan maxsulotlarizga 0 qiymat kiriting \n";
b4qayt:
cout<<" 1) Bolalar futbolkasi "; cin>>fud1;
cout<<" 2) Futbolka kattalarniki "; cin>>fud2;
cout<<" 3) Shim "; cin>>shim;
cout<<" 4) Bolalar kastuyumi "; cin>>kas;
cout<<" 5) Paypoqlar "; cin>>pay;
if( fud1<0 ||fud2<0 ||shim<0 ||kas<0 || pay<0 )
{
cout<<" Kiritgan sonlarizda xatolik mavjud "<<<" Qaytadan sonlarni kiriting: \n"; goto b4qayt;
}
else
{
long long narx;
narx=30*fud1+50*fud2+75*shim+145*kas+2*pay;
cout<<" Sotib olmoqchi bo`lgan narsalringiz miqdori \n "<cout<<" To`lovni kassaga qilasiz \n";
}
}
void bolim5()
{
cout<<"\n DASTURCHI HAQIDA MA`LUMOT\n";
cout<<" Bu dasturni RAXMATILLO TOXIROV tuzgan \n";
cout<<" Dasturchini manzillari: \n";
cout<<" Telegramm => @Raxmatillo_Toxirov \n";
cout<<" Elektron pochta => raxmatillotoxirov2003@gmail.com\n";
{
case 1:cout<<"\n Mahsulotlar bo`limi\n"; break;
case 2:cout<<"\n Xaridorlar arxivi bo`limi \n"; break;
case 3:cout<<"\n Yangi xaridorlar bo`limi\n"; break;
case 4:cout<<"\n Sotib olish bo`limi\n"; break;
case 5:cout<<"\n Dasturchi bo`limi \n"; break;
default: cout<<" Noto`g`ri raqam kiritdingiz. \n Qaytadan raqam kiriting:\n"; goto bosh; break;
}
if(menu==1)
{
p.bolim1(); goto bosh;
}
if(menu==2)
{
p.bolim2(); goto bosh;
}
if(menu==3)
{
p.bolim3(); goto bosh;
}
if(menu==4)
{
p.bolim4(); goto bosh;
}
if(menu==5)
{
p.bolim5(); goto bosh;
}
return 0;
}
Dastur ishlash jarayonidan suratlar
Xulosa:
Birinchi kichik loyiha ishi topshirig’ida men yangi tushunchalar hosil qildim va bu tushunchalarimni mustahkamladim va bilmagan xato fikrlarimni ustozimdan do’stlarimdan tushunib oldim. Operatorlardan foydalanishda hatolikka yo`l qo`ygan joylarimni o`rgandim va o`zimga hulosa chiqardim. Men bu dasturda parametrli takrorlash operatori for() bilan ishlash davomida hatolikka yo`l qo`ymadim. Chunki ustozlarim menga bergan bilim tufayli bu operatordan foydalanish menga muammo tug`dirmadi.If operatori yordamida malumotlarni tarmoqlash sifatida fordalandim. Ikki o`lchamli massivdan foydanalishda bir oz hatolikka yo`l qo`ydim ammo o`qituvchilarim qilgan hatoyimni menga tushuntirishdi. Massiv haqidagi tushunchalarimni yanada mustahkamlash kerak ekanligi haqida qarorga keldim. Loyiha ishining asosiy maqsadi bu bizning barcha operatorlarni yaxlit holda ishlatish, ular yordamida murakkablashgan dastur tuzish tushunchasini mustahkamlashga hizmat qiladi va shu o`rinda aytish joyizki murakkab tartibdagi dasturlardan foydalanishda hatoliklarga yo`l qo`ymaslik kerar ekanligini tushundik. Sababi biz birgina xatoyimiz tufayli dasturni boshidan ohirigacha tekshirib chiqishga to`g`ri kelishini inobatga olish kerak garchi Code :: Blocks dasturida qayerda xato qilganimizni ko`rsatib beradi lekin Dev C++ dasturida ishlashida xatoliklarni ko`rsatib bermaydi.Shu sababdan dasturlash tilida xatolikka yo`l qo`ymaslikka harakat qilaman.
Yurtimizda AKT sohasiga juda kata etibor berilmoqda. Dasturlash tili esa AKT sohasida alohida o`ringa ega. Shuning uchun ham Dasturlash tilini mukammal egallashimiz va kelajakda eng yaxshi dasturchilar qotoridan o`rin egallashimiz kerak.
Men bu loyiha ishini tayyorlashda olgan bilimlarimni yanada mukammalroq ishlatishni o`rgandim. Bir gap bilan aytganda C++ dasturlash tili men uchun eng ajoyib va jozibador dasturlash tili va undagi barcha tiplar, operatorlar uning jozibasini o`zida mujassam etadi.
Foydalanilgan adabiyotlar :
С vа С ++ TILI , Toshkent “voris – nashriyoti” 2013
«C++ da dasturlash» Fanidan tajriba ishlarini bajarish bo‘yicha Uslubiy