#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
enum CPU_Rank{ P1=1,P2,P3,P4,P5,P6,P7 };
enum Ram_Leixing{ DDR1=1,DDR2,DDR3,DDR4};// 声明枚举类型 CPU_Rank p1-7递增
enum CD_ROM_Jiekou{ SATA,USB};
enum CD_ROM_Anzhuang{external,builtin};
class CPU{
public:
CPU (CPU_Rank r, int f, float v)//构造函数
{
rank = r;
frequency = f;
voltage = v;
cout<< "创造了一个CPU"<<endl;
}
~CPU(){
cout<<"析构了一个CPU!"<< endl;
}
CPU_Rank GetRank() const {return rank;}//函数成员的外部接口 访问三个私有成员的接口
int GetFrequency() const { return frequency;}
float GetVolatage() const { return voltage;}
void SetRank(CPU_Rank r){rank = r;// 设置三个私有成员的接口
}
void SetFrequency(int f){ frequency = f;
}
void SetVoltage(float v){ voltage = v;
}
void Run(){
cout<< "CPU开始运行!"<<endl;
}
void Stop(){
cout<<"CPU停止运行!"<<endl;
}
private:
CPU_Rank rank;
int frequency;
float voltage;
};
class RAM
{
private:
Ram_Leixing leixing;
int Rongliang;
char Zhuping;
public:
RAM (int r ,Ram_Leixing l,char z)//构造函数
{
leixing = l;
Rongliang = r;
Zhuping = z;
cout << "创建了一个RAM"<< endl;
}
~RAM(){ //析构函数
cout <<"析构了一个RAM!" << endl;
}
Ram_Leixing Getleixing() const {return leixing;} // 访问三个私有成员的外部接口
int GetRongliang() const {return Rongliang;}
char GetZhuping() const {return Zhuping;}
void SetRongliang(int r) { // 设置三个私有成员的外部接口
Rongliang = r;
}
void SetRam_Leixing(Ram_Leixing l){
leixing = l;
}
void SetZhuping(char z){
Zhuping = z;
}
void Run (){
cout << "RAM开始运行" << endl;
}
void Stop (){
cout << "RAM停止运行" << endl;
}
};
class CD_ROM{
private:
CD_ROM_Jiekou jiekou;
CD_ROM_Anzhuang anzhuang;
int huancun;
public :
CD_ROM(CD_ROM_Jiekou j,CD_ROM_Anzhuang a, int h){
jiekou = j;
anzhuang = a;
huancun = h;
cout<<"创建了一个CD_ROM"<<endl;
}
~CD_ROM(){
cout << "析构了一个CD_ROM"<<endl;
}
//访问三个私有成员的外部接口
CD_ROM_Jiekou GetJiekou() const {return jiekou;}
CD_ROM_Anzhuang GetAnzhuang () const {return anzhuang;}
int Gethuancun () const { return huancun;}
//设置三个私有成员的外部接口
void SetJiekou(CD_ROM_Jiekou j)
{
jiekou = j;
}
void SetAnzhuang( CD_ROM_Anzhuang a){
anzhuang = a;
}
void Sethuancun (int h){
huancun = h;
}
void Run(){
cout<<"CD_ROM 开始运行!"<< endl;
}
void Stop(){
cout<<"CD_ROM停止运行!"<< endl;
}
};
class COMPUTER{
private:
CPU my_cpu;
RAM my_ram;
CD_ROM my_cdrom;
unsigned int storage_size;//GB
unsigned int bandwidth;//MB
public:
COMPUTER(CPU c, RAM r, CD_ROM cd, unsigned int s,unsigned int b);
~COMPUTER (){cout << "析构了一个computer!"<< endl; }
void Run(){
my_cpu.Run();
my_ram.Run();
my_cdrom.Run();
cout << "computer开始运行!"<< endl;
}
void Stop(){
my_cpu.Stop();
my_ram.Stop();
my_cdrom.Stop();
cout << "computer停止运行!"<< endl;
}
};
COMPUTER::COMPUTER(CPU c,RAM r,CD_ROM cd, unsigned int s, unsigned int b):my_cpu(c),my_ram(r),my_cdrom(cd)
{
storage_size = s;
bandwidth = b;
cout <<"构造了一个computer!" << endl;
}
int main(){
CPU A(P6,300,28); //声明了一个cpu的对象 并调用了三个参数的构造函数初始化
A.Run();
A.Stop();
cout<< "*****************************"<<endl;
RAM R(100,DDR4,1);
R.Run();
R.Stop();
cout<< "*****************************"<<endl;
CD_ROM M ( USB,builtin,10);
M.Run();
M.Stop();
cout<< "*****************************"<<endl;
COMPUTER C(A,R,M,100,100);
C.Run();
C.Stop();
return 0;
}