<span>绘图室(PaintOffice)</span>

    “绘图室”(PaintOffice)可以设计各个图形对象,每个图形对象包括坐标信息,并且可以通过构造函数初始化图形信息;每个图形对象提供Draw()函数,已完成自身的绘制,同时提供SetPos()成员函数来改变成员位置。本次设计中图形对象包括直线、椭圆、矩形三种,如果有兴趣的可以自行添加其他图形。每个类提供构造函数完成信息的初始化,类内没有系统能源申请,可以不要析构函数。Draw()、SetPos()函数可以看成类的成员函数。直线的坐标可用起点和终点的坐标来定位;矩形的坐标用左上角和右下角的坐标定位;椭圆的坐标可用椭圆的外接矩形来定位。

    下面列出其中一个图形对象(直线)的相关程序,其他图形对象类似。

 1 //line.cpp
 2  #include "line.h"
 3  #include
 4  using namespace std;
 5 
 6 Cline::Cline(int x1,int y1,int x2,int y2):CShape(x1,y1,x2,y2)
 7  {
 8   m_x1=x1;
 9   m_y1=y1;
10   m_x2=x2;
11   m_y2=y2;
12  }
13 
14 void Cline::Draw()
15  {
16   cout<<"绘制直线"<<endl;
17  }
18 
19 void Cline::SetPos(int x1,int y1,int x2,int y2)
20  {
21   m_x1=x1;
22   m_y1=y1;
23   m_x2=x2;
24   m_y2=y2;
25  }
26 
27 //line.h
28  #pragma once
29  #include"Shape.h"
30  class Cline:public CShape
31  {
32  public:
33   Cline(int x1,int y1,int x2,int y2);
34   void Draw();
35   void SetPos(int x1,int y1,int x2,int y2);
36  private:
37   int m_x1;//起点x坐标
38   int m_y1;
39   int m_x2;//终点x坐标
40   int m_y2;
41  };

    绘图室项目中的每个图形类都有坐标信息以及Draw()、SetPos()函数,这些成员可以作为一个共性放到一个基类中,有派生类继承。由于不同的图形类坐标信息的描述是一样的,所以坐标点和SetPos()函数适合放到父类中;但不同图形类的Draw()函数参数是一样的,只是具体实现不一样,所以在父类中可以设置为虚函数。

    设计的基类CShape相关程序如下:

 1 //Shape.cpp
 2  #include "Shape.h"
 3 
 4 CShape::CShape(int x1,int y1,int x2,int y2)
 5  {
 6   m_x1=x1;
 7   m_y1=y1;
 8   m_x2=x2;
 9   m_y2=y2;
10  }
11 
12 void CShape::SetPos(int x1,int y1,int x2,int y2)
13  {
14   m_x1=x1;
15   m_y1=y1;
16   m_x2=x2;
17   m_y2=y2;
18  }
19 
20 //Shape.h
21  #pragma once
22  class CShape
23  {
24  public:
25   CShape(int x1,int y1,int x2,int y2);
26   virtual void Draw()=0;
27   void SetPos(int x1,int y1,int x2,int y2);
28  protected:
29   int m_x1;//起点x坐标
30   int m_y1;//起点y坐标
31   int m_x2;//终点x坐标
32   int m_y2;//终点y坐标
33  };

 



转载请注明出处:

C++博客园:godfrey_88

http://www.cnblogs.com/gaobaoru-articles/

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务