多态案例三-电脑组装
- 案例描述:
电脑的主要组成部件为CPU,显卡,内存条,将每个零件封装出抽象基类,并且提供不同的厂商生产不同的零件,例如Intel厂商和Lenovo厂商,创建电脑类提供让电脑工作的函数,并且调用每个零件工作的接口,测试时组装三台不同的电脑进行工作。
代码演示
在这里插入代码片#include<iostream>
using namespace std;
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;
videocaed *m_vc;
memory *m_mem;
};
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;
}
};
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;
}