多态案例-电脑的组装

//多态的案例------电脑组装
//电脑主要组成部件:CPU、显卡、内存条

#include<iostream>
using namespace std;

//抽象CPU类
class CPU {
public:
	//抽象CPU计算
	virtual void calculate() = 0;
};

class VideoCard {
public:
	//抽象显示函数
	virtual void display() = 0;
};

class Memory {
public:
	//抽象存储函数
	virtual void storage() = 0;
};

class computer {
public:
	computer(CPU *cpu,VideoCard* card,Memory *mem) {
		m_cpu = cpu;
		m_card = card;
		m_mem = mem;
	}
	//提供工作的函数,调用接口
	void work() {
		m_cpu->calculate();

		m_card->display();

		m_mem->storage();
	}

	~computer() {
		if (m_cpu != NULL) {
			delete m_cpu;
			m_cpu = NULL;
		}
		if (m_card != NULL) {
			delete m_card;
			m_card = NULL;
		}
		if (m_mem != NULL) {
			delete m_mem;
			m_mem = NULL;
		}
	}
private:
	CPU* m_cpu;//CPU零件指针
	VideoCard* m_card;//显卡零件指针
	Memory* m_mem;//内存条零件指针
};

//具体厂商
//Inter
class InterCpu :public CPU {
	virtual void calculate() {
		cout << "Inter CPU 开始计算了" << endl;
	}
};

class InterVideoCard :public VideoCard {
	virtual void display() {
		cout << "Inter VideoCard 开始显示了" << endl;
	}
};

class InterMemory :public Memory {
	virtual void storage() {
		cout << "Inter Memory 开始存储了" << endl;
	}
};

//lenovo
class LenovoCpu :public CPU {
	virtual void calculate() {
		cout << "Lenovo CPU 开始计算了" << endl;
	}
};

class LenovoVideoCard :public VideoCard {
	virtual void display() {
		cout << "Lenovo VideoCard 开始显示了" << endl;
	}
};

class LenovoMemory :public Memory {
	virtual void storage() {
		cout << "Lenovo Memory 开始存储了" << endl;
	}
};


void test01()
{
	CPU* intercpu = new InterCpu;
	VideoCard* intercard = new InterVideoCard;
	Memory* intermem = new InterMemory;

	computer* com1 = new computer(intercpu, intercard, intermem);

	com1->work();

	delete com1;

	cout << "-------------------------------------------------" << endl;
	CPU* lenovocpu = new LenovoCpu;
	VideoCard* lenovocard = new LenovoVideoCard;
	Memory* lenovomem = new LenovoMemory;

	computer *com2 = new computer(lenovocpu, lenovocard, lenovomem);
	com2->work();
}
int main()
{
	test01();
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值