1.需求:建造小人
假设需要使用画笔和图片画两个小人,小人只需要包含头部、身体和腿就可以。这两个小人一个是瘦人、一个是胖子。现给出画笔和图片两个类如下:
class Pen {
public:
Pen();
};
class Graphics {
public:
Graphics();
};
构造函数
Pen::Pen() {
cout << "use yellow pen" << endl;
}
Graphics::Graphics() {
cout << "start to write" << endl;
}
main函数
int main()
{
Pen *p = new Pen();
Graphics *g = new Graphics();
//自己添加
return 0;
}
请设计BuildThinPerson和BuildFatPerson两个类完成最终需要输出如下。
2.普通实现
设计两个类BuildThinPerson 和BuildFatPerson,这两个类十分相似,都有两个成员变量m_pen和m_graphics指针,来自题设给定的Pen和Graphics 两个类,BuildThinPerson的方法就是画头、身子、腿如下。
class BuildThinPerson {
public:
BuildThinPerson(Pen *pen, Graphics *graphics);
void BuildHead();
void BuildBody();
void BuildLeg();
void BuildThin();
private:
Pen *m_pen;
Graphics *m_graphics;
};
BuildThinPerson 类的实现很简单,由于main函数已经实现了一部分,所以BuildThinPerson 类的构造函数传参即可。在BuildHead(); BuildBody();BuildLeg()三个函数中打印需要的输出,而BuildThin()函数负责调用三个函数封装起来。
BuildThinPerson::BuildThinPerson(Pen * pen, Graphics * graphics) :m_pen(pen), m_graphics(graphics) {
}
void BuildThinPerson::BuildHead() {
cout << "build Head of thin person" << endl;
}
void BuildThinPerson::BuildBody() {
cout << "build Body of thin person" << endl;
}
void BuildThinPerson::BuildLeg() {
cout << "build Leg of thin person" << endl;
}
void BuildThinPerson::BuildThin()
{
BuildHead();
BuildBody();
BuildLeg();
}
BuildFatPerson类的实现只有打印语句和BuildThinPerson不同略去实现。那么补全的main函数如下
int main()
{
Pen *p = new Pen()