#include <iostream> using namespace std; //抽象层-------------------------------------- class cpu { public: virtual void CPU()=0; }; class gpu { public: virtual void GPU()=0; }; class neicun { public: virtual void NEICUN()=0; }; class computer { public: computer(cpu *p1,gpu *p2,neicun *p3) { this->p1=p1; this->p2=p2; this->p3=p3; } void print() { p1->CPU(); p2->GPU(); p3->NEICUN(); } private: cpu *p1; gpu *p2; neicun *p3; }; //实现层-------------------------------------------- class intercpu:public cpu { public: virtual void CPU() { cout<<"使用因特尔的cpu"<<endl; } }; class intergpu:public gpu { public: virtual void GPU() { cout<<"使用因特尔的Gpu"<<endl; } }; class interneicun:public neicun { public: virtual void NEICUN() { cout<<"使用因特尔的内存"<<endl; } }; class nvidiagpu:public gpu { public: virtual void GPU() { cout<<"使用nvidia的gpu"<<endl; } }; class kingstonneicun:public neicun { public: virtual void NEICUN() { cout<<"使用kingston的内存"<<endl; } }; class couputer1:public intercpu,public intergpu,public interneicun { public: void print() { this->CPU(); this->GPU(); this->NEICUN(); cout<<"couputer1........"<<endl; } }; class couputer2:public intercpu,public nvidiagpu,public kingstonneicun { public: void print() { this->CPU(); this->GPU(); this->NEICUN(); cout<<"couputer2..............."<<endl; } }; //业务层--------------------- //case1 若有新组合类型电脑,仍然需要继承不同的类 //int main() //{ // // couputer1 com1=couputer1(); // couputer2 com2=couputer2(); // com1.print(); // // com1.CPU(); // com1.NEICUN(); // com1.GPU(); // cout<<"---------------------------"<<endl; // com2.print(); // //} //case 2 不需要新写实现层 int main() { intercpu *pp1=new intercpu; intergpu *pp2=new intergpu; interneicun *pp3=new interneicun; nvidiagpu *pp4=new nvidiagpu; kingstonneicun *pp5=new kingstonneicun; computer *com1=new computer(pp1,pp2,pp3); com1->print(); // cout<<"----------------------------"<<endl; computer com2=computer(pp1,pp4,pp5); com2.print(); // delete com2; }
面向抽象类编程-电脑组装练习
最新推荐文章于 2022-11-07 22:23:21 发布