O‘zbekiston respublikasi axborot texnologiyalari va kommunikatsiyalarini rivojlantirish vazirligi muhammad al-xorazmiy nomidagi toshkent axborot texnologiyalari universiteti urganch filali dasturlash 1 fanidan Mustaqil ish Gurux: 972-21
Download 93,47 Kb.
|
1 2
Bog'liq16-mustaqil ish
- Bu sahifa navigatsiya:
- Dinamik polimorfizmni qo‘llash
Do‘stona munosabat qoidalari
Odatda sinflarni loyihalashda savol kelib chiqadi, sinflarni o‘zaro munosabatini qanday qurish kerak bo‘ladi.Ikkita oddiy sinflarga misol ko‘ramiz – Square va Rectangle, ular kvadrat va to‘g‘rito‘rtburchaklardir. Shunisi tushunarliki bu 6566 sinflar vorislik bog‘lanishida bo‘ladi, lekin ikkita sinfdan qaysi biri ajdod sinf bo‘ladi. Yana ikkita sinfga misol – Car va Person, ya’ni mashina va inson. Bu sinflar bilan Person_of_Car ya’ni mashina egasi sinfi qanday aloqada bo‘lishi mumkin? Bu ikki sinf bilan vorislik bog‘lanishida bo‘lishi mumkinmi? Sinflarni loyihalash bilan bog‘liq bu savollarga javob topish uchun shuni nazarda tutish kerakki, “mijoz yetkazuvchi” bog‘lanishi “ega” (“has”) bog‘lanishini, vorislik bog‘lanishi esa “bir xil” (“is a”) bog‘lanishi tushunchalarini ifodalaydi. Square va Rectangle sinflari misoli tushunarli, har bir obyekt kvadrat to‘g‘rito‘rtburchakdir, shuning uchun bu sinflar o‘rtasida vorislik bog‘lanishi ifodalanadi, va Rectangle sinfi ota-onalar sinfini ifodalaydi. Square sinfi uning o‘g‘lidir. Mashina egasi mashinaga ega va insondir. Shuning uchun Person_of_Car sinfi Car sinfning mijozi bo‘lib hisoblanadi va Person sinfning vorisidir. Dinamik polimorfizmni qo‘llashDinamik polimorfizm vositasida dastur bajarilishini boshqarishning moslanuvchan boshqarishni amalga oshirish mumkin. Quyida, butun sonlarning bog‘langan ro‘yxati ko‘rinishida amalga oshirilgan stek va navbat tuzilmalari ustida ishlash qaralgan. Ma’lumki, navbat - ”birinchi kelgan - birinchi ketadi”, stek - ”oxirda kelgan - birinchi ketadi” tamoyili bo‘yicha berilganlarni saqlash va qayta ishlashni amalga oshiruvchi tuzilmalar hisoblanadi. Dasturda bog‘langan ro‘yxatni yaratish, unga qiymat joylashtirish va o‘chirishni amalga oshiruvchi Ruyxat tayanch sinfi va uning vorislari sifatida navbat hosil qiluvchi mos ravishda Navbat va Stek sinflari yaratiladi. Garchi bu tuzilmalar bilan ishlash turlicha amalga oshirilsa ham, ularni ishlatishda yagona interfeysdan foydalaniladi. Misol: Hayvonlar va parrandalar sinfini(meros) o’zaro bog’lash #include #include #include using namespace std; class hayvonlar { protected: string nomi; int yili; public: hayvon(string n, int y) { this->nomi=n; this->yili=y; } void print() { cout<<"Nomi: "< }; class parranda:hayvonlar { protected: string turi,yashash_joyi; public: parrandalar(string t, string y, int yy) { this->turi=t; this->yashash_joyi=y; this->yili=yy; } static void saralash(parranda* massiv, int n) { for (int i = 0; i for (int j = i + 1; j if (massiv[i].yili >massiv[j].yili) swap(massiv[i], massiv[j]); } } } void print() { cout<<"Turi: "< }; int main() { int n,y; cout<<"Nechta parranda haqida ma'lumot kiritmochisiz: "; cin>>n; parranda par[n]; string t,m; array for(int i=0; i cout<cout<<"Turini kiriting: "; cin>>t; cout<<"Yashash manzililini kiriting: "; cin>>m; cout<<"Necha yil yashashini kiriting: "; cin>>y; ar.at(i)=y; par[i].parrandalar(t,m,y); } for (int i = 0; i for (int j = i + 1; j if (ar.at(i) >ar.at(j)) swap(ar.at(i), ar.at(j)); } } cout<<"\n\n"; for(int i=0; i cout<par[i].print(); } par[0].saralash(par,n); cout<<"\n\nSaralandi yashash yili bo'yicha\n\n"; for(int i=0; i cout<par[i].print(); } cout<<"\nYashash yili bo'yich saralandi\n\n"; for(int i=0; i cout< } Download 93,47 Kb. Do'stlaringiz bilan baham: |
1 2
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2025
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling