- 1、本文档共70页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第12章 面向对象实现 面向对象实现主要包括两项工作: 把面向对象设计结果翻译成用某种程序语言书写的面向对象程序; 测试并调试面向对象的程序。 第12章 面向对象实现 与结构化实现技术中先以模块为单位进行过程设计和编码调试相似,面向对象实现技术是先以类为单位进行操作设计、编码调试; 然后实现类与类之间的关联定义,并进行系统测试; 最后交予用户使用并根据使用情况进行维护。 在每一个阶段都必须按照有关规范编写相应的说明书或报告。 第12章 面向对象实现(续) 1、实现语言 毫无疑问,面向对象设计的实现最自然的实现方式是利用面向对象语言。目前最常用的面向对象语言是C++,其它比较著名的面向对象语言则还有Smalltalk、面向对象PASCAL,JAVA、Objective-C,Common Lisp Object System (CLOS),等等。 12.1 程序设计语言 12.1.1 面向对象语言的优点 面向对象设计的结果既可以用面向对象语言、也可以用非面向对象语言实现。 1. 一致的表示方法 面向对象开发基于不随时间变化的、一致的表示方法。 这种表示方法应该从问题域到OOA,从OOA到OOD,最后从OOD到面向对象编程(OOP),始终稳定不变。 2. 可重用性 在OOA,OOD直到OOP中都显式地表示问题域语义,其意义是十分深远的。 软件开发组织既可能重用它在某个问题域内的OOA结果,也可能重用相应的OOD和OOP结果。 3. 可维护性 尽管人们反复强调保持文档与源程序一致的必要性,但是,在实际工作中很难做到交付两类不同的文档,并使它们保持彼此完全一致。特别是考虑到进度、预算、能力和人员等限制因素时,做到两类文档完全一致几乎是不可能的。因此,维护人员最终面对的往往只有源程序本身。 因此,在选择编程语言时,应该考虑的首要因素,是在供选择的语言中哪个语言能最好地表达问题域语义。一般说来,应该尽量选用面向对象语言来实现面向对象分析、设计的结果。 12.1.2 面向对象语言的技术特点 1. 支持类与对象概念的机制 所有面向对象语言都允许用户动态创建对象,并且可以用指针引用动态创建的对象。 允许动态创建对象,就意味着系统必须处理内存管理问题,如果不及时释放不再需要的对象所占用的内存,动态存储分配就有可能耗尽内存。 2. 实现整体-部分(即聚集)结构的机制 一般说来,有两种实现方法,分别使用指针和独立的关联对象实现整体-部分结构。 大多数现有的面向对象语言并不显式支持独立的关联对象,在这种情况下,使用指针是最容易的实现方法,通过增加内部指针可以方便地实现关联。 3. 实现一般-特殊(即泛化)结构的机制 既包括实现继承的机制也包括解决名字冲突的机制。所谓解决名字冲突,指的是处理在多个基类中可能出现的重名问题,这个问题仅在支持多重继承的语言中才会遇到。 某些语言拒绝接受有名字冲突的程序,另一些语言提供了解决冲突的协议。不论使用何种语言,程序员都应该尽力避免出现名字冲突。 4. 实现属性和服务的机制 实现属性的机制应该考虑: 支持实例连接的机制; 属性的可见性控制; 对属性值的约束。 服务,主要应该考虑下列因素: 支持消息连接(即表达对象交互关系)的机制; 控制服务可见性的机制; 动态联编。 5. 类型检查 程序设计语言可以按照编译时进行类型检查的严格程度来分类。如果语言仅要求每个变量或属性隶属于一个对象,则是弱类型的;如果语法规定每个变量或属性必须准确地属于某个特定的类,则这样的语言是强类型的。 强类型语言主要有两个优点: 一是有利于在编译时发现程序错误,二是增加了优化的可能性。通常使用强类型编译型语言开发软件产品,使用弱类型解释型语言快速开发原型。 6. 类库 大多数面向对象语言都提供一个实用的类库。某些语言本身并没有规定提供什么样的类库,而是由实现这种语言的编译系统自行提供类库。 存在类库,许多软构件就不必由程序员重头编写了,这为实现软件重用带来很大方便。 7. 效率 使用拥有完整类库的面向对象语言,有时能比使用非面向对象语言得到运行更快的代码。这是因为类库中提供了更高效的算法和更好的数据结构,例如,程序员已经无须编写实现哈希表或平衡树算法的代码了,类库中已经提供了这类数据结构,而且算法先进、代码精巧可靠。 8. 持久保存对象 任何应用程序都对数据进行处理,如果希望数据能够不依赖于程序执行的生命期而长时间保存下来,则需要提供某种保存数据的方法。希望长期保存数据主要出于以下两个原因: (1) 为实现在不同程序之间传递数据,需要保存数据; (2) 为恢复被中断了的程序的运行,首先需要保存数据。 一些面向对象语言,没有提供直接存储对象的机制。这些语言的用户必须自己管理对象的输入输出,或者
您可能关注的文档
- 高二物理椤次定律应用3.ppt
- 高二化学盐类水解7.ppt
- 控制工程基础第二篇——数学模型.ppt
- 高电压技术 第一篇第三节 自持放电条件.ppt
- 复变函数和积分变换第1章.ppt
- 反射与折射--.ppt
- 多媒体技术基础和应用(第3版) 鄂大伟 chap5.ppt
- 电子课件第一章计算机基础知识与常见故障排查1.ppt
- 江苏南通市通州区西亭初级中学2016届中考一轮复习:专题5 光折射 光色散.ppt
- 江苏省专转本高等数学第六节 函数的连续性与连续函数第七节 函数的间断点.ppt
- 2024下半年省考第三十一季行测模考大赛(湖北卷).docx
- 2024下半年省考第六季行测模考大赛(湖北卷).docx
- 2023下半年省考第二十一季行测模考大赛(湖北卷).docx
- 2023下半年省考第二十二季行测模考大赛(湖北卷).docx
- 2023下半年省考第三十季行测模考大赛(湖北卷).docx
- 2021下半年省考第二十六季行测模考大赛(黑龙江卷).docx
- 2023下半年省考第十一季行测模考大赛(湖北卷).docx
- 2023下半年省考第二十三季行测模考大赛(湖北卷).docx
- 2023下半年省考第十四季行测模考大赛(湖北卷).docx
- 2024下半年省考第三十二季行测模考大赛(湖北卷).docx
文档评论(0)