- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
纯面向对象语言-Read.ppt
第12章 面向对象实现;面向对象实现与面向过程的一样应包括:
编码,测试。
面向对象的分析和设计共同的模型使它们难于分开。
面向对象编程(OOP)需要OOP语言OOL
OOL具有自己的特点和风格。
面向对象程序中的封装、继承和多态等机制,给测试带来新特点,增加了测试和调试的难度。
;应用的实现;面向对象的设计适宜用OOL来实现, 理论上也可以用非OOL实现但不可取。
若用非OOL编写面向对象程序,则程序员必须自己实现OOL编译程序自动提供的面向对象的概念和机制:类,继承,封装。
若有可能,应选用OOL,因为它的下述重要优点。
;1. 一致的表示方法
面向对象开发基于不随时间变化的、一致的表示方法OO模型:OOA,OOD,OOP。
2. 可重用性
软件开发组织可重用OOA, OOD和OOP结果。
3. 可维护性
保持文档与源程序一致的完全一致几乎不可能。OOL的可读性(对象名等) =可维护性。
;两大类面向对象语言:
纯面向对象语言: Smalltalk和Eiffel等
混合型面向对象语言: 过程语言+OO,如C++
纯面向对象语言着重支持面向对象方法研究和快速原型的实现,
混合型面向对象语言的目标则是提高运行速度和使传统程序员容易接受面向对象思想。
比较面向对象语言/开发环境时需要考察的特点:
;1. 支持类与对象概念的机制:内存管理
允许用户动态创建对象意味着系统必须处理内存管理问题。
有两种管理内存的方法:
1)语言的运行机制自动管理内存,即自动回收“垃圾”的机制;(必须采用先进的垃圾收集算法)
2)由程序员编写释放内存的代码。
(例如: 程序员定义析构函数(destructor)。每当一个对象超出范围或被显式删除时,就自动调用析构函数。这种机制使得程序员能够方便地构造和唤醒释放内存的操作);2. 实现整体-部分(即聚集)结构的机制
两种实现关联方法: 指针和独立的关联对象
大多数现有的面向对象语言并不显式支持独立的关联对象,在这种情况下,使用指针是最容易的实现关联的方法。
;3. 实现一般-特殊(即泛化)结构的机制
实现继承 + 解决名字冲突。
名字冲突指的是继承多个基类可能出现的重名问题。
某些语言拒绝接受有名字冲突的程序,另一些语言提供???解决冲突的协议。
程序员应该尽力避免出现名字冲突。;4. 实现属性和服务的机制
属性的机制:
支持实例连接;
属性的可见性控制;
对属性值的约束。
服务的机制:
支持消息连接(即表达对象交互关系) ;
控制服务可见性;
动态联编。;5. 类型检查
强/弱类型: 语法规定变量/属性分类的严格性。
强类型优点:
一是在编译时能发现程序错误,
二是增加了优化的可能性。
强类型有助于提高软件的可靠性和运行效率.
强类型宜用于开发软件产品,
弱类型适于快速开发原型。
;6. 类库
类库:编译/开发环境提供的重用类构件。
类库包含实现通用数据结构(例如,动态数组、表、队列、栈、树等等)的类,GUI用户界面类。
7. 效率
面向对象语言的主要缺点是效率低: 解释型语言, 动态联编.
类库中提供的算法和数据结构更高效.
差别可以忽略,利大于弊。;8. 持久保存对象
不依赖于程序执行的生命期而长时间保存数据对象的两个原因:
(1) 实现不同时运行程序间传递数据
(2) 恢复被中断了的程序的运行
理想情况下,应该使程序设计语言语法与对象存储管理语法实现无缝集成。
;9. 参数化类
类的数据(属性)类型可以由参数给定。
一个类可以对不同的数据类型施以同样的操作。如对整数和实数排序。
Eiffel 和C++语言提供了参数化类/类模板。
10. 开发环境
软件工具或开发环境对软件生产率有很大影响。
一个语言可有不同的编译程序。
CASE工具与语言的兼容性。
;选择面向对象语言应考虑的因素:
1. 将来能否占主导地位
语言的生命力及稳定性:维护的考虑。
2. 可重用性
影响重用的要素:封装,继承,多态。
3. 类库和开发环境
语言、开发环境和类库这3个因素共同决定可重用性。
类库是否提供有价值的类?
开发环境是否提供使用方便的类库编辑和浏览工具。
;4. 其他因素
在选择编程语言时,应该考虑的其他因素还有: 对用户学习面向对象分析、设计和编码技术所能提供的培训服务;
在使用这个面向对象语言期间能提供的技术支持;能提供给开发人员使用的开发工具、开发平台、发行平台;
对机器性能和内存的需求;
集成已有软件的容易程度(调用其它语言的模块)。;为适应面向对象方法所特有的概念(例如,继承性)而必须遵循的一些新准则。;两种代码重用: 1) 本项目内的代码重用,2) 重用旧/外项目的代码。
1) 内部重用:利用继承机制共享相同或相似的部分
;实现两类重用的程序设计准则:
1. 提高方法的内聚
一个方法(即
文档评论(0)