- 1、本文档共34页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE 《C++面向对象程序设计》课程设计指导书指导实例:交互式绘图软件设计指导书说明:1.本实例软件经设计实作,为可实际运行的软件。指导书中所列程序代码,均为VC++6.0编程环境中可运行代码复制所得,所列示图,均为制作过程中屏幕截图,其目的是使学习者尽快弄清设计原理,掌握过程、方法,起到举一反三、正真领会面向对象程序设计的思想方法,原理,和操作技能的作用。使用中,“1.设计原理”(第3页),供系统设计分析用,实际操作可从“2.操作过程与步骤”(第6页)开始。2.其余推荐题目,可根据自身实际情况,酌情参考使用。1.设计原理面向对象的程序设计是现在最外流行的程序设计方法。面向对象的方法模仿人们建立现实世界模型的方法,认为客观世界是由各种各样的对象组成的,每个对象都有各自的内部状态和运动规律,不同对象之间的相互作用和联系就构成了各种各样的系统。利用人们对事物分类和抽象的自然倾向,引进了类的概念,具有封装性、继承性和多态性等特点。面向对象的程序设计吸取了传统的结构化程序设计的优点,采用数据抽象和信息隐藏技术、将数据与操作封装在一起,用类来抽象代表现实的实体,用类之间的继承关系来代表设计的抽象过程,将问题求解看作是一个非类演绎过程。1.1 类与数据封装在C++中,类是指由用户定义的一种抽象数据类型,将一组具有相关性的数据成员结合在一起,要使用类中所包含的数据时,必须通过有该类所提供的成员函数来存取。数据封装是指将类中的数据成员以其可被使用或不可被使用的方式进行分类,即有条件地限制类中部分或全部的数据成员被使用,在定义数据成员时在其前面冠以private、protected或public,分别表示私有的、保护的和公有的。因此,类是实现数据封装的一个有力方法,类的特性是实现了数据封装或数据抽象。在本设计中,可以把各种图形形状,如直线、矩形、圆、曲线、多边形等定义为各种各样的图形类,将图的具体绘制、存储操作和属性设置定义为图形类的public成员函数,这样就实现了类与数据封装。例如,直线类可以定义为:class Cline{private: COLORREF m_color; //直线的颜色 int m_lineWidth, m_lineStyle; //直线的线宽和直线的线型 POINT m_beginPoint, m_endPoint; //直线的起点和终点public: COLORREF getColor(); //返回直线的颜色 void setColor(COLORREF color); //设置直线的颜色 int getLineStyle(); //返回直线的线型 void setLingStyle(UINT style); //设置直线的线型 int getLineWidth(); //返回直线的线宽 void setLineWidth(int width); //设置直线的线宽 POINT getBeginPoint(); //返回直线的起点 POINT getEndPoint(); //返回直线的终点 void Draw(CDC *pDC); //直线的具体绘制 void Serialize(CArchive ar); … };1.2 派生类与继承性在C++中,派生类和继承性是指用户可以利用已有的类(称为基类或父类)定义出新的类(派生类或子类),派生类中不但拥有基类中的全部或部分数据成员与成员函数,而且还可以定义新的数据成员与成员函数。在本设计中,要绘制的图形形状很多,如直线、矩形、圆、曲线、多边形等。虽然图形的形状差别很大,其数据成员和成员函数也有许多不同之处,但是如果从抽象的角度出发,它们有些数据成员和成员函数是相同的,如颜色、线型、线宽属性以及设置或获取这些属性的成员函数,因此可以把这些共同点定义为一个基类CShape,然后从CShape类派生出直线类、矩形类、圆类、曲线类、多边形类等,这样,每个派生类都继承有这些共同点,又可以定义自己独特的数据成员和成员函数,程序结构更加简练合理。CShape类的定义如下:class CShape{protected: COLORREF m_color; //颜色 int m_lineWidth, m_lineStyle; //线宽和线型public: virtual COLORREF getColor(); //返回颜色 virtual void setColor(COLORREF color); //设置颜色 virtual int getLineStyle(); //返回线型 virtual int setLineStyle(int style); /
文档评论(0)