继承与多态性的应用
把本题程序写成一个完整的程序也可,不一定分步书写。
(1)每个计算机配件ComputerAccessory都有制造商manufaceurer和价格price两种属性。请定义类ComputerAccessory,并提供必要的操作。
(2)主板MotherBoard、内存Memory、显示器Monitor是典型的计算机配件。芯片组chipset、内存容量capacity、显示器类型mtype分别是这三种配件的重要特征。请定义类MotherBoard、Memory、Monitor,并提供必要的操作。
(3) 主板、内存、显示器是计算机Computer的重要组成部分,请定义类Computer,并提供必要的操作。现配置一台计算机(芯片组为Intel的主板,2G内存,显示器类型为LCD),请计算其价格(暂不考虑其他配件的价格)。
#include<iostream>
#include<string>
using namespace std;
class ComputerAccessory{
private:
string manuf;
double price;
public:
ComputerAccessory(const char* mf = "",double p=0) : manuf(mf),price(p){}
double GetPrice() {
return price;
}
};
class MotherBoard:public ComputerAccessory{
private:
string chipset;
public:
MotherBoard(const char*mf="",double p=0,const char*c="")
:ComputerAccessory(mf,p),chipset(c){}
};
class Memory:public ComputerAccessory{
private:
int capacity;
public:
Memory(const char*mf="",double p=0,int c=0)
:ComputerAccessory(mf,p),capacity(c){}
};
class Monitor:public ComputerAccessory{
private:
string mtype;
public:
Monitor(const char*mf="",double p=0,const char*m="")
:ComputerAccessory(mf,p),mtype(m){}
};
class Computer{
private:
MotherBoard mboard;
Memory mem;
Monitor mtype;
public:
Computer(const MotherBoard& mb,const Memory& me,const Monitor& mt)
:mboard(mb),mem(me),mtype(mt){}
double TotalPrice(){
return mboard.GetPrice()+mem.GetPrice()+mtype.GetPrice();
}
};
int main()
{
MotherBoard mb("Intel",1000,"Intel");
Memory me("Kingmax",1000,2);
Monitor mt("Founder",1000,"LCD");
Computer c(mb,me,mt);
cout<<c.TotalPrice()<<endl;
return 0;
}