1.2 OYD ning merosxo’rlik va polimorfizm xususiyatlaridan foydalangan holda vazifaga muvofiq dasturlar yaratish
Ishning maqsadi: Polimorfizm(overload va override) metodlarni qayta e’lon qilish va qayta yuklash orqali dasturlash ko’nikmalarini shakllantirish.
Topshiriq: OYD ning merosxo’rlik va polimorfizm xususiyatlaridan foydalangan holda vazifaga muvofiq dasturni yozing.
Barcha classlarda class obyektlari yaratilishi kerak bo'lgan konstruktorlarni yozing.
Yaratiladigan obyektlarning parametrlari klaviaturadan (talaba xohlaganidek) kiritiladi va parametr sifatida konstruktorga uzatiladi.
Obyektlar haqida barcha ma'lumotlar chiqarilsin.
Virtual va do’st funksiyalar hamda do’st class lar yaratilsin.
Dastur:
#include
#include
using namespace std;
const string QIMMAT_REJISSOR_1 = "Stiven Spilberg", QIMMAT_REJISSOR_2="Djeyms Kemeron";
class Kinofilm {
protected:
string nomlanishi, rejissor;
int davomiyligi; //minutlarda
int aktyorlar_soni;
public:
Kinofilm(string nom, string rej, int dav, int akt) {
nomlanishi =nom;
rejissor =rej;
davomiyligi = dav;
aktyorlar_soni = akt;
}
virtual int narx() {
int narxi = davomiyligi * 20 + aktyorlar_soni * 30;
if (rejissor == QIMMAT_REJISSOR_1 || rejissor == QIMMAT_REJISSOR_2) {
narxi *= 2;
}
return narxi;
}
void axborot() {
cout <<"Nomlanishi: "<< nomlanishi << endl
<<"Rejissor: "<< rejissor << endl
<<"Davomiyligi: "<< davomiyligi << endl
<<"Aktyorlar soni: "<< aktyorlar_soni << endl
<<"Narxi: "<< narx() <<"\n\n";
}
};
class Multfilm :public Kinofilm {
public:
Multfilm(string nom, string rej, int dav, int akt) : Kinofilm(nom, rej, dav, akt){}
int narx() {
return davomiyligi * 25 + aktyorlar_soni * 10;
}
};
int main() {
//Ikkita film kiritish:
string nom, rej = QIMMAT_REJISSOR_1;
int dav, akt;
cout << rej <<"ning filmi nomini kiriting: "; getline(cin, nom);
cout << nom <<" filmi davomiyligi (minutlarda): "; cin >> dav;
cout << nom <<" filmi aktyorlar soni: "; cin >> akt; cin.ignore();
Kinofilm birinchi = Kinofilm(nom, rej, dav, akt);
rej ="Jorj Gofman";
cout << rej <<"ning filmi nomini kiriting: "; getline(cin, nom);
cout << nom <<" filmi davomiyligi (minutlarda): "; cin >> dav;
cout << nom <<" filmi aktyorlar soni: "; cin >> akt; cin.ignore();
Kinofilm ikkinchi = Kinofilm(nom, rej, dav, akt);
cout <<"Multfilm rejissori: "; getline(cin, rej);
cout << rej <<"ning multfilmi nomini kiriting: "; getline(cin, nom);
cout << nom <<" multfilmi davomiyligi (minutlarda): "; cin >> dav;
cout << nom <<" multfilmi aktyorlar soni: "; cin >> akt; cin.ignore();
Multfilm mulfilm = Multfilm(nom, rej, dav, akt);
cout <<"\n\nNatija:\n\n";
birinchi.axborot();
ikkinchi.axborot();
mulfilm.axborot();
}
Do'stlaringiz bilan baham: |