绘图室(PaintOffice)
2016-04-30 11:34
549 查看
“绘图室”(PaintOffice)可以设计各个图形对象,每个图形对象包括坐标信息,并且可以通过构造函数初始化图形信息;每个图形对象提供Draw()函数,已完成自身的绘制,同时提供SetPos()成员函数来改变成员位置。本次设计中图形对象包括直线、椭圆、矩形三种,如果有兴趣的可以自行添加其他图形。每个类提供构造函数完成信息的初始化,类内没有系统能源申请,可以不要析构函数。Draw()、SetPos()函数可以看成类的成员函数。直线的坐标可用起点和终点的坐标来定位;矩形的坐标用左上角和右下角的坐标定位;椭圆的坐标可用椭圆的外接矩形来定位。
下面列出其中一个图形对象(直线)的相关程序,其他图形对象类似。
绘图室项目中的每个图形类都有坐标信息以及Draw()、SetPos()函数,这些成员可以作为一个共性放到一个基类中,有派生类继承。由于不同的图形类坐标信息的描述是一样的,所以坐标点和SetPos()函数适合放到父类中;但不同图形类的Draw()函数参数是一样的,只是具体实现不一样,所以在父类中可以设置为虚函数。
设计的基类CShape相关程序如下:
转载请注明出处:
C++博客园:godfrey_88
http://www.cnblogs.com/gaobaoru-articles/
下面列出其中一个图形对象(直线)的相关程序,其他图形对象类似。
//line.cpp #include "line.h" #include using namespace std; Cline::Cline(int x1,int y1,int x2,int y2):CShape(x1,y1,x2,y2) { m_x1=x1; m_y1=y1; m_x2=x2; m_y2=y2; } void Cline::Draw() { cout<<"绘制直线"<<endl; } void Cline::SetPos(int x1,int y1,int x2,int y2) { m_x1=x1; m_y1=y1; m_x2=x2; m_y2=y2; } //line.h #pragma once #include"Shape.h" class Cline:public CShape { public: Cline(int x1,int y1,int x2,int y2); void Draw(); void SetPos(int x1,int y1,int x2,int y2); private: int m_x1;//起点x坐标 int m_y1; int m_x2;//终点x坐标 int m_y2; };
绘图室项目中的每个图形类都有坐标信息以及Draw()、SetPos()函数,这些成员可以作为一个共性放到一个基类中,有派生类继承。由于不同的图形类坐标信息的描述是一样的,所以坐标点和SetPos()函数适合放到父类中;但不同图形类的Draw()函数参数是一样的,只是具体实现不一样,所以在父类中可以设置为虚函数。
设计的基类CShape相关程序如下:
//Shape.cpp #include "Shape.h" CShape::CShape(int x1,int y1,int x2,int y2) { m_x1=x1; m_y1=y1; m_x2=x2; m_y2=y2; } void CShape::SetPos(int x1,int y1,int x2,int y2) { m_x1=x1; m_y1=y1; m_x2=x2; m_y2=y2; } //Shape.h #pragma once class CShape { public: CShape(int x1,int y1,int x2,int y2); virtual void Draw()=0; void SetPos(int x1,int y1,int x2,int y2); protected: int m_x1;//起点x坐标 int m_y1;//起点y坐标 int m_x2;//终点x坐标 int m_y2;//终点y坐标 };
转载请注明出处:
C++博客园:godfrey_88
http://www.cnblogs.com/gaobaoru-articles/
相关文章推荐
- SVN提交时Commit Failed的解决方案
- Aizu 0558
- 设计模式(十二)职责链模式(Chain of Responsibility)(对象行为型)
- 设计模式(十二)职责链模式(Chain of Responsibility)(对象行为型)
- wait_event_interruptible() 分析
- LightOJ 1076 Get the Containers(二分经典)
- Jetbrains IntelliJ IDEA破解方法
- LeetCode 336. Palindrome Pairs(回文对)
- 人工智能中对机器学非常简要的介绍
- Disconnected: No supported authentication methods available (server sent: publickey)
- CodeForces - 582B Once Again... (LIS变型)好题
- public static void main(String[] args)字段解释
- LeetCode------Contains Duplicate
- CodeForces 567A Lineland Mail
- hdu 1789 Doing Homework again
- time_wait状态
- flume-ng负载均衡load-balance、failover集群搭建
- android.intent.action.MAIN与android.intent.category.LAUNCHER的区别
- CLOSE_WAIT问题
- RAID5 的那些事