- 1、本文档共77页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第12章面向对象实现分析
第12章 面向对象实现 回顾 本章目标 主要内容 面向对象实现的任务 程序设计语言 程序设计风格 测试策略 设计测试用例 内容线索 面向对象实现的任务 程序设计语言 程序设计风格 测试策略 设计测试用例 面向对象实现的任务 面向对象实现主要包括两项工作 把面向对象设计结果翻译成用某种程序语言书写的面向对象程序 测试并调试面向对象的程序 内容线索 面向对象实现的任务 程序设计语言 面向对象语言的优点 面向对象语言的技术特点 选择面向对象语言 程序设计风格 测试策略 设计测试用例 面向对象实现语言的选择 面向对象设计的结果既可以用面向对象语言、也可以用非面向对象语言实现 选择编程语言的关键因素,是语言的一致的表达能力、可重用性及可维护性 面向对象语言的优点 从面向对象观点看来,能够更完整、更准确地表达问题域语义的面向对象语言的语法是非常重要的,因为这会带来下述几个重要优点 一致的表示方法 可重用性 可维护性 一致的表示方法 面向对象开发基于不随时间变化的、一致的表示方法 从问题域到OOA,从OOA到OOD,最后从OOD到面向对象编程(OOP),始终稳定不变 一致的表示方法既有利于在软件开发过程中始终使用统一的概念,也有利于维护人员理解软件的各种配置成分 可重用性 在OOA,OOD直到OOP中都显式地表示问题域语义,其意义: 既可能重用它在某个问题域内的OOA结果 也可能重用相应的OOD和OOP结果 可维护性 在实际工作中很难做到交付两类不同的文档,并使它们保持彼此完全一致 特别是考虑到进度、预算、能力和人员等限制因素时,做到两类文档完全一致几乎是不可能的 维护人员最终面对的往往只有源程序本身 实例 以ATM系统为例,说明在程序内部表达问题域语义对维护工作的意义 假设在维护该系统时没有合适的文档资料可供参阅,于是维护人员人工浏览程序或使用软件工具扫描程序,记下或打印出程序显式陈述的问题域语义,维护人员看到“ATM”、“账户”、“现金兑换卡”等,这对维护人员理解所要维护的软件将有很大帮助 因此,在选择编程语言时,应该考虑的首要因素,是在供选择的语言中哪个语言能最好地表达问题域语义。一般说来,应该尽量选用面向对象语言来实现面向对象分析、设计的结果 面向对象语言的技术特点 面向对象语言的形成借鉴了历史上许多程序语言的特点 两大类面向对象语言 纯面向对象语言 混合型面向对象语言 支持类与对象概念的机制… 所有面向对象语言都允许用户动态创建对象,并且可以用指针引用动态创建的对象。允许动态创建对象,就意味着系统必须处理内存管理问题,如果不及时释放不再需要的对象所占用的内存,动态存储分配就有可能耗尽内存 …支持类与对象概念的机制 有两种管理内存的方法,一种是由语言的运行机制自动管理内存,即提供自动回收“垃圾”的机制;另一种是由程序员编写释放内存的代码。自动管理内存不仅方便而且安全,但是必须采用先进的垃圾收集算法才能减少开销。某些面向对象的语言允许程序员定义析构函数(destructor)。每当一个对象超出范围或被显式删除时,就自动调用析构函数。这种机制使得程序员能够方便地构造和唤醒释放内存的操作,却又不是垃圾收集机制。 实现整体-部分(即聚集)结构的机制 一般说来,有两种实现方法,分别使用指针和独立的关联对象实现整体-部分结构。大多数现有的面向对象语言并不显式支持独立的关联对象,在这种情况下,使用指针是最容易的实现方法,通过增加内部指针可以方便地实现关联 实现一般-特殊(即泛化)结构的机制 既包括实现继承的机制也包括解决名字冲突的机制。所谓解决名字冲突,指的是处理在多个基类中可能出现的重名问题,这个问题仅在支持多重继承的语言中才会遇到。某些语言拒绝接受有名字冲突的程序,另一些语言提供了解决冲突的协议。不论使用何种语言,程序员都应该尽力避免出现名字冲突。 实现属性和服务的机制 对于实现属性的机制应该着重考虑以下几个方面: 支持实例连接的机制;属性的可见性控制;对属性值的约束。对于服务来说,主要应该考虑下列因素: 支持消息连接(即表达对象交互关系)的机制;控制服务可见性的机制;动态联编。 所谓动态联编,是指应用系统在运行过程中,当需要执行一个特定服务的时候,选择(或联编)实现该服务的适当算法的能力。动态联编机制使得程序员在向对象发送消息时拥有较大自由,在发送消息前,无须知道接受消息的对象当时属于哪个类。 类型检查… 程序设计语言可以按照编译时进行类型检查的严格程度来分类。如果语言仅要求每个变量或属性隶属于一个对象,则是弱类型的;如果语法规定每个变量或属性必须准确地属于某个特定的类,则这样的语言是强类型的。面向对象语言在这方面差异很大,例如,Smalltalk实际上是一种无类型语言(所有变量都是未指定类的对象);C++和E
文档评论(0)