软件工程第4版课件作者张海藩吕云翔编著08第八章节面向对象设计.pptVIP

软件工程第4版课件作者张海藩吕云翔编著08第八章节面向对象设计.ppt

  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文档。上传文档
查看更多
2.为提高继承程度而修改类定义 如果在一组相似的类中存在公共的属性和公共的行为,则可以把这些公共的属性和行为抽取出来放在一个共同的祖先类中,供其子类继承。在对现有类进行归纳的时候,要注意下述两点:①不能违背领域知识和常识;②应该确保现有类的协议(即同外部世界的接口)不变。 3.利用委托实现行为共享 仅当存在真实的一般/特殊关系(即子类确实是父类的一种特殊形式)时,利用继承机制实现行为共享才是合理的。有时程序员只想用继承作为实现操作共享的一种手段,并不打算确保基类和派生类具有相同的行为。在这种情况下,如果从基类继承的操作中包含了子类不应有的行为,则可能引起麻烦。 8.1 面向随想设计的准则 8.2 启发规则 8.3 系统分解 8.4 设计问题域子系统 8.5 设计人——机交互子系统 8.6 设计任务管理子系统 8.7 设计数据管理子系统 8.8 设计类中的服务 8.9 设计关联 8.10 设计优化 8.11 面向对象分析与设计实例 第八章:面向对象设计 本节介绍一个简化的C++类库管理系统的面向对象分析和设计过程(着重讲述概要的系统设计过程)。通过这个实例,一方面进一步具体讲述面向对象的软件开发技术,另一方面也为读者提供了一份实习材料。读者可以自己完成这个类库管理系统的详细设计(即对象设计),并用Visual C++语言编程实现它,从而亲身体会用面向对象方法开发软件的过程。 1.需求 ◇ 管理用C++语言定义的类。 ◇ 用户能够方便地向类库中添加新的类,并能建立新类与库中原有类的关系。 ◇ 用户能够通过类名从类库中查询出指定的类。 ◇ 用户能够查看或修改与指定类有关的信息 ◇ 用户能够从类库中删除指定的类。 ◇ 用户能够在浏览窗口中方便、快速地浏览当前类的父类和子类。 8.11.1 面向对象分析 ◇ 具有“联想”浏览功能,也就是说,可以把当前类的某个子类或父类指定为新的当前类,从而浏览这个新当前类的父类和子类。 ◇ 用户能够查看或修改某个类的指定成员函数的源代码。 ◇ 本系统是一个简化的多用户系统,每个用户都可以建立自己的类库,不同类库之间互不干扰。 ◇ 对于用户的误操作或错误的输入数据,系统能给出适当的提示信息,并且仍然继续稳定地运行。 ◇ 系统易学易用,用户界面应该是GUI的。 2.建立对象模型 (1)确定问题域中的类 从对这个类库管理系统的需求不难看出,组成这个系统的基本对象是“类库”和“类”。类是类库中的“条目”,不妨把它称为“类条目”(ClassEntry)。类条目中应该包含的信息(即它的属性)主要有类名、父类列表、成员函数列表和数据成员列表。 (2)分析类之间的关系 在这个问题域中,各个类之间的逻辑关系相当简单。分析系统需求,并结合关于C++语言语法的知识,可以知道问题域中各个类之间的关系是:一个用户拥有多个类库,每个类库由0或多个类条目组成,每个类条目由0或多个父类、0或多个数据成员及0或多个成员函数组成。图8.12所示为本问题域的对象模型。 图8.12 类库管理系统的对象模型 1.设计类库结构 通常,类库中包含一组类,这一组类通过归纳、组合等关系组成一个有机的整体,其中归纳(即继承)关系对于重用来说具有特别重要的意义。 至少有两种数据结构可用来把类条目组织成类库,一种数据结构是二叉树,另一种是链表。 当用二叉树来存储类条目的时候,左孩子是子类,右孩子是兄弟类;当用链表存储类条目的时候,链表中每个节点都是一个类条目。 8.11.2 面向对象设计 2.设计问题域子系统 通过面向对象分析,我们对问题域已经有了较深入的了解,图8.12给出了我们对问题域的认识。在面向对象设计过程中,仅需从实现的角度出发,并根据我们所设计的类库结构,对图8.12所示的对象模型做一些补充和细化。 (1)类条目(ClassEntry) 它的数据成员“父类列表”、“成员函数列表”和“数据成员列表”也都采用链表结构来存储。因此,在每个类条目的数据成员中,应该用“父类链表头指针”、“成员函数链表头指针”和“数据成员链表头指针”分别取代原来比较抽象的“父类列表”、“成员函数列表”和“数据成员列表”。 (2)类库(ClassEntryLink) 由于采用链表结构实现类库,每个类库实际上就是一条类链,因此把类库称为类条目链(ClassEntryLink)。类库的数据成员“类条目列表”具体化为“类链头指针”。 一般来说,实用的类库管理系统应该采用数据库来存储类库。在我们这个简化的实例中,为了简化处理,决定使用标准的流式文件存储类库。 类库应该提供的服务主要有:取得库中类条目的个数;读文件并在内存中

您可能关注的文档

文档评论(0)

118压缩包课件库 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档