C++学习笔记
案例需求:电脑主要组成部件为CPU(用于计算),显卡(用于显示),内存条(用于存储)。将每个零件封装出抽象基类,并且提供不同的商生产不同的零件,创建电脑类提供让电脑工作的函数,并且调用每个零件工作的接口测试时组装三台不同的电脑进行工作
分别抽象CPU、GPU、内存条父类,用不同厂商类继承抽象父类。
用电脑类构造函数组装电脑,并提供接口 。
#include <iostream>
using namespace std;
class abstractCpu
{
public:
virtual void calculate() = 0;
};
class abstractGpu
{
public:
virtual void display() = 0;
};
class abstractMemory
{
public:
virtual void storage() = 0;
};
class IntelCpu:public abstractCpu
{
public:
void calculate()
{
cout << "Intel的CPU开始运行" << endl;
}
};
class IntelGpu:public abstractGpu
{
public:
void display()
{
cout << "Intel的GPU开始运行" << endl;
}
};
class IntelMemory:public abstractMemory
{
public:
void storage()
{
cout << "Intel的内存开始运行" << endl;
}
};
class AdmCpu :public abstractCpu
{
public:
void calculate()
{
cout << "Adm的CPU开始运行" << endl;
}
};
class AdmGpu :public abstractGpu
{
public:
void display()
{
cout << "Adm的GPU开始运行" << endl;
}
};
class AdmMemory :public abstractMemory
{
public:
void storage()
{
cout << "Adm的内存开始运行" << endl;
}
};
class Comp
{
public:
Comp(abstractCpu *cpu,abstractGpu *gpu,abstractMemory *memory)
{
m_cpu = cpu;
m_gpu = gpu;
m_memory = memory;
}
~Comp()
{
if (m_cpu != NULL)
{
delete m_cpu;
m_cpu = NULL;
}
if (m_gpu != NULL)
{
delete m_gpu;
m_gpu = NULL;
}
if (m_memory != NULL)
{
delete m_memory;
m_memory = NULL;
}
}
void work()
{
m_cpu->calculate();
m_gpu->display();
m_memory->storage();
cout << "-----------------------" << endl;
}
private:
abstractCpu *m_cpu;
abstractGpu *m_gpu;
abstractMemory *m_memory;
};
int main()
{
Comp no1(new IntelCpu, new IntelGpu, new IntelMemory);
no1.work();
Comp no2(new AdmCpu, new AdmGpu, new AdmMemory);
no2.work();
Comp no3(new IntelCpu, new AdmGpu, new IntelMemory);
no3.work();
system("pause");
return 0;
}