O‘zbekiston respublikasi axborot texnologiyalari va kommunikatsiyalarini trivojlantirish vazirligi
Obyektlar massivlari. Sinf struktura kengaytmasi sifatida
Download 0.64 Mb.
|
loyihaSan
5.4. Obyektlar massivlari. Sinf struktura kengaytmasi sifatidaObyektlar 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: 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. #include { 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 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<<" "< } 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<<" "< }
} }
{ 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 : "< break; } file>>b_id>>b_name>>a_name>>no_copy; } file.close(); if(hisoblash==0) cout<<"\n\n Kitob ID mavjud emas "; }
{ 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<<" "< } else { file1<<" "< } 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<<" "< }
if(hisoblash==0) cout<<"\n\n Kitob ID mavjud emas "; }
file1.close(); remove("D://book.txt"); rename("D://book1.txt","D://book.txt"); } main()
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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling