Natija:
0
1.2 Classlar o’rtasida vorislikni tashkil qilish. Overriding va overloading bo’ladigan funksiyalarni yaratish
səhifə 2/4 tarix 25.03.2023 ölçüsü 174,13 Kb. #89913
1678362604 (2)
Natija:
0
1.2 Classlar o’rtasida vorislikni tashkil qilish. Overriding va overloading bo’ladigan funksiyalarni yaratish
Ishning maqsadi: Merosxo’rlik imkoniyatlaridan foydalanib dasturlash ko’nikmalarini shakllantirish.
Topshiriq:1 - jadvaldagi berilgan vazifalar uchun ajdod class va voris class larni yarating. Voris class da quyidagi funksiyalarni yozing:
Konstruktor.
Uchinchi ustundagi qo’yilgan vazifani bajaruvchi funksiya.
Avlod obyektlari haqida ma’lumotlarini chop qiluvchi funksiya.
Ajdod va voris class larning obyektlari haqida ma’lumotlarni kiritish va chiqarishni bajaruvchi friend funksiyalar va ularning shablonini yarating.
Dastur:
#include
#include
constint HOZIRGI_YIL = 2020;
usingnamespace std;
classTovar { // Ajdod sinf
protected:
string nomi ;
int narxi;
string ishlab_chiqaruvchi;
//friend funksiyalar shablonlari
template
friendvoid kirit(T&);
template
friendvoid chiqar(T);
};
classTovar2 :publicTovar {
int yili;
int chegirma ;
public:
//Konstruktorlar:
Tovar2() {}
Tovar2(stringnomi, intnarxi, stringish, intyil, intchegirma) {
this->nomi =nomi;
this->narxi = narxi;
ishlab_chiqaruvchi =ish;
this->yili = yil;
this->chegirma = chegirma ;
}
//Uchinchi ustundagi vazifani bajaruvchi metod:
void uchinchi() {
if (HOZIRGI_YIL - yili >= 2) {
int narx = narxi * (100 - chegirma) / 100.0;
cout <<"Chegirma bilan narxi: "<< narx< }
else {
cout <<"Chegirma mavjud emas\n";
}
}
//chiqarish:
void print() {
cout << endl;
chiqar(*this);
}
//friend funksiyalar shablonlari
template
friendvoid kirit(T&);
template
friendvoid chiqar(T);
};
//kiritish funksiyasi shabloni
template
void kirit(T&tovar) {
cout <<"Tovarning nomi: ";
cin.ignore();
getline(cin, tovar.nomi);
cout <<"Tovarning narxi: "; cin >>tovar.narxi;
cout <<"Tovarning ishlab chiqaruvchisi: "; cin.ignore(); getline(cin, tovar.ishlab_chiqaruvchi);
if (typeid(&tovar) ==typeid(&Tovar2())) {
cout <<"Tovarning ishlab chiqarilgan yili: "; cin >>tovar.yili;
cout <<"Tovarning foizli chegirmasi: "; cin >>tovar.chegirma;
}
cout << endl;
}
//chiqarish funksiyasi shabloni
template
void chiqar(Ttovar) {
cout <<"Tovarning nomi: "< <<"Tovarning narxi: "< <<"Tovarning ishlab chiqaruvchisi: "< if (typeid(&tovar) ==typeid(&Tovar2())) {
cout <<"Tovarning ishlab chiqarilgan yili: "< cout <<"Tovarning foizli chegirmasi: "< }
}
int main() {
int n;
cout <<"Tovarlar soni: "; cin >> n;
Tovar2* tovarlar ;
tovarlar = newTovar2[n];
//Kiritish
for (int i = 0; i < n; i++) {
kirit(tovarlar[i]);
}
//Uchinchi ustundagi shart + chiqarish:
for (int i = 0; i < n; i++) {
tovarlar[i].print();
tovarlar[i].uchinchi();
}
}
Dostları ilə paylaş: