O‘zbekiston respublikasi axborot texnologiyalari va kommunikatsiyalarini trivojlantirish vazirligi


Obyektlar massivlari. Sinf struktura kengaytmasi sifatida


Download 0.64 Mb.
bet5/6
Sana09.06.2023
Hajmi0.64 Mb.
#1474788
1   2   3   4   5   6
Bog'liq
loyihaSan

5.4. Obyektlar massivlari. Sinf struktura kengaytmasi sifatida


Obyektlar aniqlangandan so‘ng shu obyektlarga ko‘rsatkichlar belgilash mumkin. Masalan:
complex A(5.2,2.7); complex* PA=&A;
Obyektning umumiy elementlariga murojaat uchun -> operatsiyani yoki ism almashtirish va nuqta operatsiyasidan foydalanish mumkin
*PA.real() yoki PA->real;
Agarda konkret obyektga ishlov berish uchun sinf a’zosi – funksiya chaqirilsa, unda shu funksiyaga obyektga belgilangan ko‘rsatkich avtomatik va ko‘rsatilmagan holda uzatiladi. Bu ko‘rsatqich this ismiga ega va x* this kabi har bir funksiya uchun ko‘rsatilmagan holda belgilanadi.
Х sinfni ekvivalent ko‘rinishda shunday tavsiflash mumkin: class x {
int m; public:
int readm() { return this->m; }
};
A’zolarga murojaat etishda this dan foydalanish ortiqcha. Asosan this bevosita ko‘rsatkichlar bilan manipulyatsiya qilish uchun a’zo funksiyalarini yaratilishida foydalaniladi.
Sinf kompanentasi yagona bo‘lib va hamma yaratilgan obyektlar uchun umumiy bulishi uchun uni statik element sifatida ta’riflash ya’ni static atributi orqali ta’riflash lozimdir. Obyektlarni yaratishda sinf statik ma’lumotlari takrorlanmaydi, ya’ni har bir statik komponentlar birdan-bir ko‘rinishda mavjud. Statik elementlarga murojat qilish uchun oldin initsializatsiya kilinishi lozim. Inizializatsiya quyidagicha amalga oshiriladi:
:: Masalan:
int complex : : count = 0;
Bu taklifni sinfni aniqlashdan so‘ng global soxada joylashtirish lozim. Faqatgina sinf statistik ma’lumotlarini initsializatsiyalashda u xotiraga ega bo‘ladi va unga murojaat etish mumkin. Sinf statik ma’lumotlarga faqatgina obyekt ismi orqali murojaat etish mumkin. .
Masalan:
complex a; a.count=5;
Lekin, statik komponetlarga sinf obyekti aniqlanmagan holda ham murojaat etish mumkin. Statistik komponentlarga nafaqat obyekt ismi, balki sinf ismi orqali ham murojaat etish mumkin.
: :
Masalan
complex:: count=5;
Lekin shunday murojaat faqatgina public komponentlarga tegishli.
private statik komponentlarga tashqaridan murojaat etishda funksiya – statik komponentlardan foydalaniladi.
Bu funksiyalarni sinf ismi orqali chaqirish mumkin.
: : Misol.
#include class TPoint
{
double x,y;
static int N; // statik maydon: nuqtalar soni public:
TPoint(double x1 = 0.0,double y1 = 0.0){N++; x = x1; y = y1;} static int& count(){return N;} // statik komponenta-funksiya
};
int TPoint : : N = 0; //statik maydon initsializatsiyasi void main(void)
{TPoint A(1.0,2.0);
TPoint B(4.0,5.0);
TPoint C(7.0,8.0);
cout<< \nAniqlangan”<Obyektlar massivi ta’riflash uchun sinf ko‘zda tutilgan (parametrsiz) konstruktorga ega bo‘lishi kerak.
Obyektlar massivi ko‘zda tutilgan konstruktor tomonidan, yoki har bir element uchun konstruktor chaqirish yo‘li bilan initsializatsiya qilinishi mumkin.
class complex a[20]; //ko‘zda tutilgan parametrsiz konstruktorni chaqirish class complex b[2]={complex (10),complex (100)};//oshkor chaqirish



#include
#include
#include
#include
using namespace std;
class bookshope
{
public:
void control_panel();
void add_book();
void show_books();
void check_books();
void update_books();
void del_books();
};
void bookshope::control_panel()
{
system("cls");
cout<<"\n\n\t\t\t\tNazorat Paneli";
cout<<"\n\n 1. Yangi kitob qo'shish";
cout<<"\n 2. Kitoblarni kursatish";
cout<<"\n 3. Mahsuz kitobni tekshiring";
cout<<"\n 4. Yangilash kitobni";
cout<<"\n 5. Kitobni o'chirish";
cout<<"\n 6. Chiqish";
}

void bookshope::add_book()


{
system("cls");
fstream file;
int no_copy;
string b_name,a_name,b_id;
cout<<"\n\n\t\t\t\t Yangi kitob qo'shish";
cout<<"\n\n Kitob ID:";
cin>>b_id;
cout<<"|n\n\t\t\t Kitob nomi:";
cin>>b_name;
cout<<"\n\n\t\t\t Muallif nomi:";
cin>>a_name;
cout<<"\n\n\t\t\t nusxalar soni:";
cin>>no_copy;
file.open("D://book.txt",ios::out|ios::app);
file<<" "<file.close();
}
void bookshope::show_books()
{
system("cls");
fstream file;
int no_copy;
string b_name,a_name,b_id;
cout<<"\n\n\t\t\t Hamma kitoblarni ko'rsatish\n\n ";
file.open("D://book.txt",ios::in);
if(!file){
cout<<"\n\n fayl ochishdagi xatolik ....";
}
else
{
cout<<" Kitob ID KITOB Muallif Nusxalar soni\n ";
file>>b_id>>b_name>>a_name>>no_copy;
while(!file.eof())
{
cout<<" "<file>>b_id>>b_name>>a_name>>no_copy;

}
file.close();


}

}
void bookshope::check_books()


{
system("cls");
fstream file;
int no_copy,hisoblash=0;
string b_name,a_name,b_id,b_idd;
cout<<"\n\n\t\t\t\t Mahsuz kitobni tekshirish";
file.open("D://book.txt",ios::in);
if(!file){
cout<<"\n\n fayl ochishdagi xatolik ....";
}
else
{
cout<<"\n\n Kitob ID:";
cin>>b_idd;
file>>b_id>>b_name>>a_name>>no_copy;
while(!file.eof())
{
if(b_idd==b_id)
{
system("cls");
cout<<"\n\n\t\t\t\t Mahsuz kitobni tekshirish";
cout<<"\n\n Kitob ID : "<cout<<"\n\n\t\t\t Name :"<cout<<"\n\n Muallif:"<cout<<"\n\n\t\t\t Nusxalar sioni: "<hisoblash++;
break;
}
file>>b_id>>b_name>>a_name>>no_copy;
}
file.close();
if(hisoblash==0)
cout<<"\n\n Kitob ID mavjud emas ";

}
}
void bookshope::update_books()


{
system("cls");
fstream file,file1;
int no_copy,no_co,hisoblash=0;
string b_name,b_na,a_name,a_na, b_idd, b_id;
cout<<"\n\n\t\t\t kitobni yangilash";
file1.open("D://book1.txt",ios::app|ios::out);
file.open("D://book.txt",ios::in);
if(!file)
cout<<"\n\n fayl ochishdagi xatolik ....";

else
{


cout<<"\n\n KITOB ID:";
cin>>b_id;
file>>b_id>>b_name>>a_name>>no_copy;
while(!file.eof())
{
if(b_id==b_idd)
{
system("cls");
cout<<"\n\n\t\t\t Kitobni yangilash:";
cout<<"\n\n yangi kitob nomi:";
cin>>b_na;
cout<<"\n\n\t\t\t Muallif nomi:";
cin>>a_na;
cout<<"\n\n\t\t\t nusxalar soni:";
cin>>no_co;
file1<<" "<hisoblash++;
}
else
{
file1<<" "<file>>b_id>>b_name>>a_name>>no_copy;}
}
if(hisoblash==0)
cout<<"\n\n KITOB ID mavjud emas:";
}
file.close();
file1.close();
remove("D://book.txt");
rename("D://book1.txt","D://book.txt");
}
void bookshope::del_books()
{
system("cls");
fstream file,file1;
int no_copy,hisoblash=0;
string b_idd,b_id,b_name,a_name;
cout<<"\n\n\t\t\t KITOBNI o'chirish:";
file1.open("D://book1.txt",ios::app|ios::out);
file.open("D://book.txt",ios::in);
if(!file)
cout<<"\n\n fayl ochishdagi xatolik ....";
else
{
cout<<"\n\n KITOB ID:";
cin>>b_id;
file>>b_idd>>b_name>>a_name>>no_copy;
while(!file.eof())
{ if(b_id==b_idd)
{
system("cls");
cout<<"\n\n\t\t\t KITOBNI O'chirish";
cout<<"\n\n O'chirish bajarildi";
hisoblash++;
}
else
file1<<" "<file>>b_idd>>b_name>>a_name>>no_copy;

}


if(hisoblash==0)
cout<<"\n\n Kitob ID mavjud emas ";

}
file.close();


file1.close();
remove("D://book.txt");
rename("D://book1.txt","D://book.txt");
}

main()
{ int tanlash;


char x;
bookshope b;
p:
b.control_panel();
cout<<"\n\n Tanlang:";
cin>>tanlash;
switch(tanlash)
{
case 1:
do
{
b.add_book();
cout<<"\n\n Boshqa kitob kiritishni hohlaysizmi(y,n);";
cin>>x;
}
while(x=='y');
break;
case 2:
b.show_books();
break;
case 3:
b.check_books();
break;
case 4:
b.update_books();
break;
case 5:
b.del_books();
break;
case 6:
break;
exit(0);
default:
cout<<"\n\n invalid qiymat .... Iltimos qaytadan Harakat qiling";
getch();
goto p;
}
}



Download 0.64 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6




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