第九章进一步掌面向对象程序设计.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第九章进一步掌面向对象程序设计

面向对象的设计:通过建立一些类以及它们之间的关系来解决实际问题。 面向对象的程序实例 面向对象的设计 建立类等级:利用继承机制减少冗余信息。只要不违背领域知识和常识,就应当尽量抽取出相似类的公共属性和公共服务,以建立相似的父类 考虑更一般的图形:坐标和可见性是共同的属性。把其抽象出来放在点类中定义。把点类作为公共父类 思考点的属性:位置代表几何意义的点。抽象为更一般的基类“位置” 面向对象的程序实例 面向对象的设计中的几个问题 类的确定 从问题中归纳出需要描述的一个概念或实体 应当尽量使类小而简单 充分利用封装增加类的自身可靠性 通过继承建立类族,使多态性有用 面向对象的设计方法 自顶而下的设计方法 自底向上的设计方法 一般的面向对象的设计方法 类群和类树 类群由一些彼此互不相关的类和类族组成 类树:具有共同的相关类 面向对象的设计 进一步改变思维方法 减少对自由全局变量的使用 减少使用自由过程 减少类型模糊,保证类型正确 用new和delete代替malloc和free 设计中的几个问题 整体认识 编译器自动生成复制构造函数、赋值运算符、运算符地址 设计中的几个问题 类和函数的设计与说明 尽量使类接口既完整又最紧凑 注意成员函数、全局函数和友元函数的差别 在公共接口中勿用数据成员 尽量多用const 通过引用而不是值来传递和返回对象 在返回对象时不要试图返回引用 继承和面向对象设计 公有继承指的“就是一个 has-a” 利用分层技术实现“has-a”和”is-implemented-in-terms-of” 尽量使用单一继承 * * * * * 第九章进一步掌握面向对象程序设计 面向对象的程序实例 需求陈述 在显示器上圆心坐标为(100,100)的位置画一个半径为40的圆,在圆心坐标为(200,300)的位置画一个半径为20的圆,在圆心半径为(400,150)的位置画一个弧,弧的起始角度为30度,结束角度为120度,半径为50 面向对象的分析 确定对象 显示器 圆心坐标 位置 半径 圆 圆弧 起始角度 结束角度 显示器:不是问题中有意义的事物 圆心半径、位置:是圆、圆弧的属性,不需要独立存在 起始角度、结束角度:是圆弧的属性 对象:圆、圆弧 确定属性:增加可见性 确定服务: 圆 圆心坐标 半径 可见性 读写圆心坐标 读写半径 读写可见性 显示 隐藏 弧 圆心坐标 半径 起始角度 结束角度 可见性 读写圆心坐标 读写半径 读写起始角度 读写结束角度 读写可见性 显示 隐藏 类--对象圆和圆弧 面向对象的程序实例 位置 坐标 点 可见性 显示隐藏 圆 半径 显示隐藏 弧 起始角度 结束角度 显示隐藏 简单图形程序的对象模型 定义属性 确定每个属性的数据类型和数据结构和访问权限 坐标:整型;可见性:布尔型;半径:整型 坐标等为保护;起始角度和结束角度因无派生定义为私有 定义服务 用c++语言实现 定义类 class Location class Point:public Location {…}; {…}; 说明数据成员 enum Boolean{false,true}; class Location{ class Point:public Location{ protected: protected: int X; Boolean Visible;…}; int Y;…}; 面向对象的程序实例 说明和定义成员函数 构造函数 Location::Location(int InitX,int InitY) {x=InitX;y=InitY;} Point::Point(int InitX,int InitY):Location(InitX,InitY) {Visible=false;} 虚函数 Show和Hide class Empty{}; const Empty e1;//产生缺省构造函数 Empty() Empty e2=e1;//产生复制构造函数Empty(const Empty rhs) e2=e1;//产生赋值运算符Empty operator=(const Empty rhs) Empty *pe2=e2; //Empty *operator() const Empty *pe1=e1; //const Empty* operator() const 类的组织 正确定义动态内存类的复制构造函数和赋值运算符 在构造函数中使用初始化而不要使用赋值 初始化表的成员应按它们在说明时出现的顺序列出 把

文档评论(0)

haowendangqw + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档