一、问题描述
电脑主要组成部件为CPU(用于计算),SCREEN(用于显示)与MEM(用于存储),
要求将每个部件封装成抽象基类,并提供不同厂商生产的不同部件,例如 Intel 或者 Lenovo
创建电脑类提供让电脑工作的函数,并且调用每个部件工作的接口函数
测试时组装三台不同的电脑进行工作
二、代码实现
#include <iostream>
/*
问题描述:
电脑主要组成部件为CPU(用于计算),SCREEN(用于显示)与MEM(用于存储),
要求将每个部件封装成抽象基类,并提供不同厂商生产的不同部件,例如Intel厂商或者Lenovo厂商
创建电脑类提供让电脑工作的函数,并且调用每个部件工作的接口函数
测试时组装三台不同的电脑进行工作
*/
using namespace std;
class CPU{
public :
virtual calculator() = 0;
};
class SCREEN{
public :
virtual show() = 0;
};
class MEM{
public :
virtual save() = 0;
};
class Intel : public CPU, public SCREEN, public MEM {
public :
calculator() {
cout << "Intel 的 CPU 计算" << endl;
}
show() {
cout << "Intel 的 SCREEN 显示" << endl;
}
save() {
cout << "Intel 的 MEM 存储" << endl;
}
};
class Lenovo : public CPU, public SCREEN, public MEM {
public :
calculator() {
cout << "Lenovo 的 CPU 计算" << endl;
}
show() {
cout << "Lenovo 的 SCREEN 显示" << endl;
}
save() {
cout << "Lenovo 的 MEM 存储" << endl;
}
};
class Computer{
private :
CPU *cpu;
SCREEN *screen;
MEM* mem;
public :
Computer(CPU *c, SCREEN *s, MEM* m) : mem(m), screen(s), cpu(c) {}
void test() {
cout << "------------测试开始-----------" << endl;
cpu->calculator();
screen->show();
mem->save();
cout << "------------测试结束-----------" << endl;
}
};
int main() {
Computer *com1 = new Computer(new Lenovo, new Intel, new Lenovo);
com1->test();
Computer *com2 = new Computer(new Intel, new Lenovo, new Intel);
com2->test();
delete com1;
delete com2;
}