多态案例三-电脑组装

多态案例三-电脑组装

  • 案例描述:
    电脑的主要组成部件为CPU,显卡,内存条,将每个零件封装出抽象基类,并且提供不同的厂商生产不同的零件,例如Intel厂商和Lenovo厂商,创建电脑类提供让电脑工作的函数,并且调用每个零件工作的接口,测试时组装三台不同的电脑进行工作。

代码演示

在这里插入代码片#include<iostream>
using namespace std;

//抽象不同零件类
//抽象CPU类
class CPU
{
public:
	//抽象计算函数
	virtual void cacluate()  = 0;
};

//抽象显卡类
class videocaed
{
public:
	//抽象计算函数
	virtual void display() = 0;
};

//抽象内存条类
class memory
{
public:
	//抽象计算函数
	virtual void storage() = 0;
};

//电脑类
class computer
{
public:
	computer(CPU *C,videocaed *v, memory *m)
	{
		m_cpu = C;
		m_vc = v;
		m_mem = m;
	}

	//工作函数
	void work()
	{
		m_cpu->cacluate();

		m_vc->display();

		m_mem->storage();
	}
	//提供析构函数,释放三个电脑零件
	~computer()
	{
		if (m_cpu != NULL)
		{
			delete m_cpu;
			m_cpu = NULL;
		}
		if (m_vc != NULL)
		{
			delete m_vc;
			m_vc = NULL;
		}
		if (m_mem != NULL)
		{
			delete m_mem;
			m_mem = NULL;
		}
	}


private:
	CPU *m_cpu;//CPU的零件指针
	videocaed *m_vc;//显卡零件指针
	memory *m_mem;//内存条零件指针
};

//具体厂商
//Intel厂商
class intelcpu :public CPU
{
public:
	virtual void cacluate()
	{
		cout << "intel的cpu开始计算了" << endl;

	}
};
class intelvideocard :public videocaed
{
public:
	virtual void display()
	{
		cout << "intel的显卡开始显示了" << endl;

	}
};
class intelmemory :public memory
{
public:
	virtual void storage()
	{
		cout << "intel的内存条开始存储了" << endl;

	}
};
//Lenovo厂商
class Lenovocpu :public CPU
{
public:
	virtual void cacluate()
	{
		cout << "Lenovo的cpu开始计算了" << endl;

	}
};
class Lenovovideocard :public videocaed
{
public:
	virtual void display()
	{
		cout << "Lenovo的显卡开始显示了" << endl;

	}
};
class Lenovomemory :public memory
{
public:
	virtual void storage()
	{
		cout << "Lenovo的内存条开始存储了" << endl;

	}
};

void test01()
{
	//第一台电脑零件
	CPU *cpu = new intelcpu;
	videocaed *ilvc = new intelvideocard;
	memory *ilmem = new intelmemory;

	//创建第一台电脑
	computer *computer1 = new computer(cpu,ilvc, ilmem);
	computer1->work();
	delete computer1;

	//创建第二台电脑
	computer *computer2 = new computer(new Lenovocpu,new Lenovovideocard,new Lenovomemory);
	computer2->work();
	delete computer2;

	//创建第三台电脑
	computer *computer3 = new computer(new Lenovocpu, new intelvideocard, new Lenovomemory);
	computer3->work();
	delete computer3;

}



int main()
{
	test01();


	system("pause");
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值