Texnologiyalari va kommunikatsiyalarini rivojlantirish vazirligi muhammad al-xorazmiy nomidagi



Yüklə 93,47 Kb.
səhifə2/2
tarix06.12.2022
ölçüsü93,47 Kb.
#72667
1   2
16-mustaqil ish

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‘llash


Dinamik 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: "<cout<<"Necha yil yashashi: "<}
};
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: "<cout<<"Manzil: "<cout<<"Yashash yili: "<}
};
int main()
{
int n,y; cout<<"Nechta parranda haqida ma'lumot kiritmochisiz: "; cin>>n;
parranda par[n]; string t,m;
array ar;
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<}
}



Yüklə 93,47 Kb.

Dostları ilə paylaş:
1   2




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©www.azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin