- 1、本文档共62页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
从面向对象分析到面向对象设计ood是一个逐渐扩充模型的-read
* * * * * 2. 为提高继承程度而修改类定义 如果在一组相似的类中存在公共的属性和公共的行为,则可以把这些公共的属性和行为抽取出来放在一个共同的祖先类中,供其子类继承,如图11.13(a)和(b)所示。在对现有类进行归纳的时候,要注意下述两点: (1)不能违背领域知识和常识;(2)应该确保现有类的协议(即同外部世界的接口)不变。 更常见的情况是,各个现有类中的属性和行为(操作),虽然相似却并不完全相同,在这种情况下需要对类的定义稍加修改,才能定义一个基类供其子类从中继承需要的属性或行为。 * 有时程序员只想用继承作为实现操作共享的一种手段,并不打算确保基类和派生类具有相同的行为。在这种情况下,如果从基类继承的操作中包含了子类不应有的行为,则可能引起麻烦。例如,假设程序员正在实现一个Stack(后进先出栈)类,类库中已经有一个List(表)类。如果程序员从List类派生出Stack类,则如图11.14(a)所示:把一个元素压入栈,等价于在表尾加入一个元素;把一个元素弹出栈,相当于从表尾移走一个元素。但是,与此同时,也继承了一些不需要的表操作。例如,从表头移走一个元素或在表头增加一个元素。万一用户错误地使用了这类操作,Stack类将不能正常工作。 * 图11.14(b)描绘了委托List类实现Stack类操作的方法。Stack类的每个实例都包含一个私有的List类实例(或指向List类实例的指针)。Stack对象的操作push(压栈),委托List类对象通过调用last(定位到表尾)和add(加入一个元素)操作实现,而pop(出栈)操作则通过List的last和remove(移走一个元素)操作实现。 * * * * * * * 由于一个层次的接口只影响与其紧相邻的上一层,因此,这种工作模式降低了各层次之间的相互依赖性,更容易理解和修改。在开放模式中,某层子系统可以使用处于其下面的任何一层子系统所提供的服务。这种工作模式的优点,是减少了需要在每层重新定义的服务数目,使得整个系统更高效更紧凑。但是,开放模式的系统不符合信息隐藏原则,对任何一个子系统的修改都会影响处在更高层次的那些子系统。设计软件系统时到底采用哪种结构模式,需要权衡效率和模块独立性等多种因素,通盘考虑以后再做决定。 * * 图11.7描绘了上章给出的ATM系统的问题域子系统的结构。 由于在面向对象分析过程中已经对ATM系统做了相当仔细的分析,而且假设所使用的实现环境能完全支持面向对象分析模型的实现,因此,在面向对象设计阶段无须对已有的问题域模型作实质性的修改或扩充。 * * * * * * 4. 设计人机交互类 人机交互类与所使用的操作系统及编程语言密切相关。例如,在Windows环境下运行的Visual C++语言提供了MFC类库,设计人机交互类时,往往仅需从MFC类库中选出一些适用的类,然后从这些类派生出符合自己需要的类就可以了。 * * * * * 关系数据库管理系统的理论基础是关系代数,它不仅理论基础坚实而且有下列一些主要优点: (1) 提供了各种最基本的数据管理功能(例如,中断恢复,多用户共享,多应用共享,完整性,事务支持等)。 (2) 为多种应用提供了一致的接口。 (3) 标准化的语言(大多数商品化关系数据库管理系统都使用SQL语言)。 但是,为了做到通用与一致,关系数据库管理系统通常都相当复杂,且有下述一些具体缺点,以致限制了这种系统的普遍使用: 扩展的关系数据库管理系统是在关系数据库的基础上,增加了抽象数据类型和继承机制,此外还增加了创建及管理类和对象的通用服务 * * * * * * * * * * * * 如果两个方向遍历的频度相差很大,而且需要尽量减少存储开销和修改时的开销,则这是一种很有效的实现双向关联的方法。 具体实现方法已在前面讲过,如图11.9所示。这种方法能实现快速访问,但是,如果修改了一个属性,则相关的属性也必须随之修改,才能保持该关联链的一致性。当访问次数远远多于修改次数时,这种实现方法很有效。 * 可以引入一个关联类来保存描述关联性质的信息,关联中的每个连接对应着关联类的一个对象。实现关联对象的方法取决于关联的重数。对于一对一关联来说,关联对象可以与参与关联的任一个对象合并。对于一对多关联来说,关联对象可以与“多”端对象合并。如果是多对多关联,则关联链的性质不可能只与一个参与关联的对象有关,通常用一个独立的关联类来保存描述关联性质的信息,这个类的每个实例表示一条具体的关联链及该链的属性。 3. 实现双向关联 实现双向关联的3种方法: (1) 只用属性实现一个方向的关联,当需要反向遍历时就执行一次正向查找。 (2) 两个方向的关联都用属性实现。 (3) 用独立的关联对象实现双向关联。 4. 关联对象的实现
您可能关注的文档
- 致理日三a双号班翻译课程讲义.doc
- 药学专业专科毕业实习计划-甘肃医学院.doc
- 航拍图像中绝缘子的提取算法-上海电力学院学报.pdf
- 西北大学法律事务工作暂行办法.doc
- 抽样调查-smweklycom.ppt
- 案例2中部双传动垂直重锤拉紧式带式输送机设计计算及选型某钢铁.doc
- 关于非线性光学中的相互作用哈密顿量.pdf
- 使用说明书-vidonn.pdf
- 天然草原青干草对农区洼地绵羊肉品质的影响-中国免疫学杂志-兰州.pdf
- 夹江外国语试验学校九年级上数学执笔胡容09811.doc
- 《安全生产法规与应用》课件.ppt
- 《安全生产档案法律法规与应用》课件.ppt
- 2024年中考英语二轮复习讲练测:专题17 补全对话(讲练)(原卷版).doc
- 2024年中考英语二轮复习讲练测:专题17 补全对话(讲练)(原卷版).docx
- 知到智慧树网课:大学计算机基础(下)章节测试满分答案.pdf
- 2024年中考英语学霸必刷子母题:第05讲 数词(基数词、序数词、分数的表达、时间表达法)(原卷版).pdf
- 2024年中考英语学霸必刷子母题:第06讲 介词(时间、方位、方式、范围、原因目的)(原卷版).pdf
- 知到智慧树网课:大学英语(沈阳农大)章节测试满分答案.pdf
- 知到智慧树网课:大学计算机应用基础(湖北理工学院)章节测试满分答案.doc
- 2024年中考英语二轮复习讲练测:专题13 任务型阅读(讲练)(原卷版).docx
文档评论(0)