Samarqand davlat universiteti matematika fakulteti amaliy


Download 16.38 Kb.
Sana16.06.2023
Hajmi16.38 Kb.
#1488417
Bog'liq
azamat



SHAROF RASHIDOV NOMIDAGI
SAMARQAND DAVLAT UNIVERSITETI
MATEMATIKA FAKULTETI AMALIY
MATEMATIKA
YO’NALISHI KECHKI 209-GURUH
TALABASI
NURILLAYEV XURSHIDNING
PROGRAMMALASH ASOSLARI
FANIDAN
MUSTAQIL ISHI

Ma'lumotlar turini o'zgartirish operatorlarini qo'shimcha yuklash


C++ da haddan tashqari yuklangan ma'lumotlar turini o'zgartirish operatorlari
sinfga uni qanday qilib boshqa ma'lumotlar turiga aylantirish kerakligini aniqlash
imkonini beradi. Ma'lumotlar turini o'zgartirish operatorini ortiqcha yuklash uchun
usul nomi sifatida operator kalit so'zidan keyin maqsadli ma'lumotlar turi ishlatiladi.
Masalan, MyClass nomli sinfni int turiga aylantirish uchun biz sinf ichida
quyidagi usulni belgilashimiz mumkin:
class MyClass {
public:
operator int() const {}
};
Bu MyClass misolida int kutilayotgan kontekstlarda, masalan, matematik
hisob-kitoblarda foydalanish imkonini beradi. Shuni ta'kidlash kerakki, ma'lumotlar
turini o'zgartirish operatorlarini haddan tashqari yuklashdan ehtiyotkorlik bilan
foydalanish kerak, chunki bu kutilmagan xatti-harakatlarga olib kelishi va kodni
tushunishni qiyinlashtirishi mumkin.
Dastur orqali misol
#include
using namespace std;
class Fut {
private:
double fut;
public:
Fut(double f) {
fut = f;
}
operator double() const {
return fut / 3.28084;
}
};
int main() {
Fut f(100.0);
double metr = f;
cout << "100 fut " << metr << " metrga teng." << endl;
return 0;
}
Dastur natijasi
100 fut 30.48 metrga teng.

Ajdod sinf metodlarini qayta aniqlash


Obyektga yo'naltirilgan dasturlashda siz ajdod sinflaridan birida allaqachon
aniqlangan pastki sinfdagi usulni qayta belgilashingiz mumkin. Ushbu jarayon
usulni bekor qilish deb ataladi. Bu quyi sinfga oʻziga xos usulni amalga oshirish
imkonini beradi, bu esa quyi sinfning xatti-harakatlariga xos boʻlishi mumkin.
Usulni bekor qilish uchun bola sinfidagi usul ota-sinfdagi usul bilan bir xil
imzoga (nom va parametr turlari) ega bo'lishi kerak. Bola sinfidagi usul uchun kirish
spetsifikatori ota-sinfdagi usul uchun kirish spetsifikatoriga qaraganda bir xil yoki
ko'proq ruxsat beruvchi bo'lishi kerak.
Dastur orqali misol
#include
using namespace std;
class Hayvon {
public:
virtual void hayvonovozi() {
cout << "Hayvon nomi va ovozi quyidagicha: " << endl;
}
};
100 fut 30.48 metrga teng.
class It : public Hayvon {
public:
void hayvonovozi() override {
cout << "Bu it va uning ovozi vovf" << endl;
}
};
int main()
{
Hayvon ovoz;
ovoz.hayvonovozi();
It kuchuk;
kuchuk.hayvonovozi();
return 0;
}
Dastur natijasi
Hayvon nomi va ovozi quyidagicha:
Bu it va uning ovozi vovf

Yuqoridagi dasturda Hayvon{} sinfidagi hayvonovozi() funksiyasi virtualdir,


bu uni It{} sinfida bekor qilishga imkon beradi. It{} sinfidagi override kalit so' zi ota
sinfdagi usulni bekor qilishini bildiradi. hayvonovozi() funksiyasi It misolida
chaqirilganda, u Hayvon{} sinfidagi kodni emas balki It{} sinfidagi kodni bajaradi.
Ajdod sinf metodlarini yashirish
Ajdod sinfdagi metodlarni yashirish uchun private kalit sozi ishlatiladi.
Private kalit sozida elon qilingan metodlarni nafaqat meros olingan sinflarda balki
dasturni int main qismida ham qo’llab bo’lmaydi. Private kalit so’zida elon qilingan
metodlar faqat elon qilingan sinfni ichida ishlaydi.
Dastur orqali misol
Hayvon nomi va ovozi quyidagicha:
Bu it va uning ovozi vovf
#include
using namespace std;
class mashina
{
private:
string rangi;
int yili;
public:
mashina(string a, int b)
{
rangi=a;
yili=b;
}
void chiqar()
{
cout << "Mashina rangi: " << mashina::rangi << "\n";
cout << "Mashina yili: " << mashina::yili << "\n" ;
}
};
class Yukmashina: public mashina
{
private:
int ogirlik_kuchi;
string massa;
public:
Yukmashina(int d, string c): mashina("qora",2022)
{
ogirlik_kuchi=d;
massa=c;
}
void chiqar()
{
cout << "Mashinaning og'irlik ko'tara olish darajasi: " << ogirlik_kuchi << " "
<< massa << "\n";
}
};
int main()
{
mashina Yuk("qora", 2022);
Yuk.chiqar();
Yukmashina Kamaz(5000,"kg");
Kamaz.chiqar();
return 0;
}
Dastur natijasi
Mashina rangi: qora
Mashina yili: 2022
Mashinaning og'irlik ko'tara olish darajasi: 5000 kg

Ko'plikdagi merosxo'rlik


Ko'plikdagi merosxo'rlik ob'ektga yo'naltirilgan dasturlashning xususiyati
bo'lib, sinf ikki yoki undan ortiq ota-sinflarning xatti-harakatlari va atributlarini
meros qilib olishi mumkin. Bu kodni ko'proq qayta ishlatish imkonini beradi va
murakkab tizimlar dizaynini yaxshilashga yordam beradi. Biroq, bu, shuningdek,
olmos muammosi kabi muammolarga olib kelishi mumkin, bu erda bir nechta otaMashina rangi: qora
Mashina yili: 2022
Mashinaning og'irlik ko'tara olish darajasi: 5000 kg
ona sinflari umumiy ajdodga ega va merosni qanday hal qilishda nizolar paydo
bo'ladi.
Dastur orqali misol
#include
using namespace std;
class Shakl {
public:
double yuza;
virtual void yuzani_hisoblash() = 0;
};
class Rang {
public:
string rang;
};
class Tortburchak : public Shakl, public Rang {
public:
Tortburchak(double w, double h, string c) {
eni = w;
buyi = h;
rang = c;
}
void yuzani_hisoblash() {
yuza = eni * buyi ;
}
void Shakl_xususiyatlari() {
cout << "Eni " << eni << endl;
cout << "Bo'yi " << buyi << endl;
cout << "Yuzasi: " << yuza << endl;
cout << "Rangi: " << rang << endl;
}
private:
double eni,buyi;
};
int main() {
Tortburchak T(5.0, 10.0, "qizil");
T.yuzani_hisoblash();
T.Shakl_xususiyatlari();
return 0;
}
Dastur natijasi
Eni 5
Bo'yi 10
Yuzasi: 50
Rangi: qizil

Download 16.38 Kb.

Do'stlaringiz bilan baham:




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