软件工程电子课件第10章-面向对象实现.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《软件工程电子课件第10章-面向对象实现.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 电子 课件 10 面向 对象 实现
- 资源描述:
-
1、2023-1-2412023-1-241第第1010章章 面向对象实现面向对象实现 面向对象实现的主要工作面向对象实现的主要工作 面向对象设计的质量面向对象设计的质量 面向对象测试面向对象测试2023-1-24210.1 10.1 面向对象面向对象语言语言n 10.1.1 10.1.1 面向对象语言的优点面向对象语言的优点n 10.1.2 10.1.2 面向对象语言的技术特点面向对象语言的技术特点n 10.1.3 10.1.3 选择面向对象语言选择面向对象语言2023-1-24310.1.1 10.1.1 面向对象语言的优点面向对象语言的优点 面向对象设计的结果,既可以用面向对象语言,也可以用
2、面向对象设计的结果,既可以用面向对象语言,也可以用非面向对象语言实现。使用面向对象语言时,由于语言本身非面向对象语言实现。使用面向对象语言时,由于语言本身充分支持面向对象概念的实现,因此,编译程序可以自动地充分支持面向对象概念的实现,因此,编译程序可以自动地把面向对象概念映射到目标程序中。使用非面向对象语言编把面向对象概念映射到目标程序中。使用非面向对象语言编写面向对象程序,则必须由程序员自己把面向对象概念映射写面向对象程序,则必须由程序员自己把面向对象概念映射到目标程序中。到目标程序中。2023-1-24410.1.1 10.1.1 面向对象语言的优点面向对象语言的优点 到底应该选用面向对象
3、语言还是非面向对象语言,关键不到底应该选用面向对象语言还是非面向对象语言,关键不在于语言功能强弱。选择编程语言的关键因素,是语言的一致在于语言功能强弱。选择编程语言的关键因素,是语言的一致的表达能力、可重用性及可维护性。从面向对象观点看来,能的表达能力、可重用性及可维护性。从面向对象观点看来,能够更完整、更准确地表达问题域语义的面向对象语言的语法是够更完整、更准确地表达问题域语义的面向对象语言的语法是非常重要的,因为这会带来下述几个重要优点。非常重要的,因为这会带来下述几个重要优点。2023-1-24510.1.1 10.1.1 面向对象语言的优点面向对象语言的优点n 1 1一致的表示方法一致
4、的表示方法 从前面章节的讲述中可以知道,面向对象开发基于不随时从前面章节的讲述中可以知道,面向对象开发基于不随时间变化的、一致的表示方法。这种表示方法应该从问题域到间变化的、一致的表示方法。这种表示方法应该从问题域到OOAOOA,从,从OOAOOA到到OODOOD,最后从,最后从OODOOD到面向对象编程到面向对象编程(OOPOOP),始终稳定不变。一致的表示方法既有利于在软件),始终稳定不变。一致的表示方法既有利于在软件开发过程中始终使用统一的概念,也有利于维护人员理解软件开发过程中始终使用统一的概念,也有利于维护人员理解软件的各种配置成分。的各种配置成分。2023-1-24610.1.1
5、10.1.1 面向对象语言的优点面向对象语言的优点n 2 2可重用性可重用性 为了能带来可观的商业利益,必须在更广泛的范围中运用为了能带来可观的商业利益,必须在更广泛的范围中运用重用机制,而不是仅仅在程序设计这个层次上进行重用。因此,重用机制,而不是仅仅在程序设计这个层次上进行重用。因此,在在OOAOOA、OODOOD直到直到OOPOOP中都显式地表示问题域语义,其意义中都显式地表示问题域语义,其意义是十分深远的。随着时间的推移,软件开发组织既可能重用它是十分深远的。随着时间的推移,软件开发组织既可能重用它在某个问题域内的在某个问题域内的OOAOOA结果,也可能重用相应的结果,也可能重用相应的
6、OODOOD和和OOPOOP结果。结果。2023-1-24710.1.1 10.1.1 面向对象语言的优点面向对象语言的优点n 3 3可维护性可维护性 尽管人们反复强调保持文档与源程序一致的必要性,但是,尽管人们反复强调保持文档与源程序一致的必要性,但是,在实际工作中很难做到交付两类不同的文档,并使它们保持彼此在实际工作中很难做到交付两类不同的文档,并使它们保持彼此完全一致。特别是考虑到进度、预算、能力、人员等限制因素时,完全一致。特别是考虑到进度、预算、能力、人员等限制因素时,做到两类文档完全一致几乎是不可能的。因此,维护人员最终面做到两类文档完全一致几乎是不可能的。因此,维护人员最终面对的
7、往往只有源程序本身对的往往只有源程序本身。2023-1-24810.1.2 10.1.2 面向对象语言的技术特点面向对象语言的技术特点 一般说来,纯面向对象语言着重支持面向对象方法研一般说来,纯面向对象语言着重支持面向对象方法研究和快速原型的实现,而混合型面向对象语言的目标则是究和快速原型的实现,而混合型面向对象语言的目标则是提高运行速度和使传统程序员容易接受面向对象思想。成提高运行速度和使传统程序员容易接受面向对象思想。成熟的面向对象语言通常都提供丰富的类库和强有力的开发熟的面向对象语言通常都提供丰富的类库和强有力的开发环境。环境。2023-1-24910.1.2 10.1.2 面向对象语言
8、的技术特点面向对象语言的技术特点n 1 1支持类与对象概念的机制支持类与对象概念的机制 所有面向对象语言都允许用户动态创建对象,并且可以用指所有面向对象语言都允许用户动态创建对象,并且可以用指针引用动态创建的对象。允许动态创建对象,就意味着系统必须针引用动态创建的对象。允许动态创建对象,就意味着系统必须处理内存管理问题。有两种管理内存的方法:一种是由语言的运处理内存管理问题。有两种管理内存的方法:一种是由语言的运行机制自动管理内存,即提供自动回收行机制自动管理内存,即提供自动回收“垃圾垃圾”的机制;另一种的机制;另一种是由程序员编写释放内存的代码。是由程序员编写释放内存的代码。2023-1-2
9、41010.1.2 10.1.2 面向对象语言的技术特点面向对象语言的技术特点 自动管理内存不仅方便而且安全,但是必须采用先进的自动管理内存不仅方便而且安全,但是必须采用先进的垃圾收集算法才能减少开销。某些面向对象的语言(如垃圾收集算法才能减少开销。某些面向对象的语言(如C+C+)允许程序员定义析构函数(允许程序员定义析构函数(destructordestructor)。每当一个对象)。每当一个对象超出范围或被显式删除时,就自动调用析构函数。这种机制超出范围或被显式删除时,就自动调用析构函数。这种机制使得程序员能够方便地构造和唤醒释放内存的操作,却又不使得程序员能够方便地构造和唤醒释放内存的操
10、作,却又不是垃圾收集机制。是垃圾收集机制。2023-1-241110.1.2 10.1.2 面向对象语言的技术特点面向对象语言的技术特点n 2 2实现整体一部分结构的机制实现整体一部分结构的机制 一般说来,有两种实现方法,分别使用指针和独立的关联一般说来,有两种实现方法,分别使用指针和独立的关联对象实现整体一部分结构。大多数现有的面向对象语言并不显对象实现整体一部分结构。大多数现有的面向对象语言并不显式支持独立的关联对象,在这种情况下,使用指针是最容易的式支持独立的关联对象,在这种情况下,使用指针是最容易的实现方法,通过增加内部指针可以方便地实现关联。实现方法,通过增加内部指针可以方便地实现关
11、联。2023-1-241210.1.2 10.1.2 面向对象语言的技术特点面向对象语言的技术特点n 3 3实现一般一特殊结实现一般一特殊结 这里既包括实现继承的机制也包括解决名字冲突的机制。这里既包括实现继承的机制也包括解决名字冲突的机制。所谓解决名字冲突,指的是处理在多个基类中可能出现的重名所谓解决名字冲突,指的是处理在多个基类中可能出现的重名问题,这个问题仅在支持多重继承的语言中才会遇到。某些语问题,这个问题仅在支持多重继承的语言中才会遇到。某些语言拒绝接受有名字冲突的程序,另一些语言提供了解决冲突的言拒绝接受有名字冲突的程序,另一些语言提供了解决冲突的协议。不论使用何种语言,程序员都应
12、该尽力避免出现名字冲协议。不论使用何种语言,程序员都应该尽力避免出现名字冲突。突。2023-1-241310.1.2 10.1.2 面向对象语言的技术特点面向对象语言的技术特点n 4 4实现属性和服务的机制实现属性和服务的机制 对于实现属性的机制应该着重考虑以下几个方面:支持对于实现属性的机制应该着重考虑以下几个方面:支持实例连接的机制;属性的可见性控制;对属性值的约束。对实例连接的机制;属性的可见性控制;对属性值的约束。对于服务来说,主要应该考虑下列因素:支持消息连接(即表于服务来说,主要应该考虑下列因素:支持消息连接(即表达对象交互关系)的机制;控制服务可见性的机制;动态联达对象交互关系)
13、的机制;控制服务可见性的机制;动态联编。编。2023-1-241410.1.2 10.1.2 面向对象语言的技术特点面向对象语言的技术特点 所谓动态联编,是指应用系统在运行过程中,当需要执所谓动态联编,是指应用系统在运行过程中,当需要执行一个特定服务的时候,选择(或联编)实现该服务的适当行一个特定服务的时候,选择(或联编)实现该服务的适当算法的能力。动态联编机制使得程序员在向对象发送消息时算法的能力。动态联编机制使得程序员在向对象发送消息时拥有较大自由,在发送消息前,无须知道接受消息的对象当拥有较大自由,在发送消息前,无须知道接受消息的对象当时属于哪个类。时属于哪个类。2023-1-24151
14、0.1.2 10.1.2 面向对象语言的技术特点面向对象语言的技术特点n 5 5类型检查类型检查 程序设计语言可以按照编译时进行类型检查的严格程度来程序设计语言可以按照编译时进行类型检查的严格程度来分类。如果语言仅要求每个变量或属性隶属于一个对象,则是分类。如果语言仅要求每个变量或属性隶属于一个对象,则是弱类型的;如果语法规定每个变量或属性必须准确地属于某个弱类型的;如果语法规定每个变量或属性必须准确地属于某个特定的类,则这样的语言是强类型的。面向对象语言在这方面特定的类,则这样的语言是强类型的。面向对象语言在这方面差异很大。差异很大。2023-1-241610.1.2 10.1.2 面向对象
15、语言的技术特点面向对象语言的技术特点 强类型语言主要有两个优点:一是有利于在编译时发强类型语言主要有两个优点:一是有利于在编译时发现程序错误,二是增加了优化的可能性。通常使用强类型现程序错误,二是增加了优化的可能性。通常使用强类型编译型语言开发软件产品,使用弱类型解释型语言快速开编译型语言开发软件产品,使用弱类型解释型语言快速开发原型。总的来说,强类型语言有助于提高软件的可靠性发原型。总的来说,强类型语言有助于提高软件的可靠性和运行效率,现代的程序语言理论支持强类型检查,大多和运行效率,现代的程序语言理论支持强类型检查,大多数新语言都是强类型的。数新语言都是强类型的。2023-1-241710
16、.1.2 10.1.2 面向对象语言的技术特点面向对象语言的技术特点n 6 6类库大多数面向对象语言都提供一个实用的类库类库大多数面向对象语言都提供一个实用的类库 某些语言本身并没有规定提供什么样的类库,而是由实现这种某些语言本身并没有规定提供什么样的类库,而是由实现这种语言的编译系统自行提供类库。存在类库,许多软构件就不必由程语言的编译系统自行提供类库。存在类库,许多软构件就不必由程序员重头编写了,这为实现软件重用带来很大方便。序员重头编写了,这为实现软件重用带来很大方便。2023-1-241810.1.2 10.1.2 面向对象语言的技术特点面向对象语言的技术特点n 7 7效率效率 事实上
17、,使用拥有完整类库的面向对象语言,有时能比使用事实上,使用拥有完整类库的面向对象语言,有时能比使用非面向对象语言得到运行更快的代码,这是因为类库中提供了更非面向对象语言得到运行更快的代码,这是因为类库中提供了更高效的算法和更好的数据结构。例如,程序员已经无须编写实现高效的算法和更好的数据结构。例如,程序员已经无须编写实现哈希表或平衡树算法的代码了,类库中已经提供了这类数据结构,哈希表或平衡树算法的代码了,类库中已经提供了这类数据结构,而且算法先进、代码精巧可靠。而且算法先进、代码精巧可靠。2023-1-241910.1.2 10.1.2 面向对象语言的技术特点面向对象语言的技术特点 一些面向对
18、象语言(如一些面向对象语言(如C+C+),没有提供直接存储对象的机),没有提供直接存储对象的机制。这些语言的用户必须自己管理对象的输入制。这些语言的用户必须自己管理对象的输入/输出,或者购买面输出,或者购买面向对象的数据库管理系统。向对象的数据库管理系统。另外一些面向对象语言(如另外一些面向对象语言(如SmalltalkSmalltalk),把当前的执行状态),把当前的执行状态完整地保存在磁盘上。还有一些面向对象语言,提供了访问磁盘完整地保存在磁盘上。还有一些面向对象语言,提供了访问磁盘对象的输入对象的输入/输出操作。输出操作。2023-1-242010.1.2 10.1.2 面向对象语言的技
19、术特点面向对象语言的技术特点 通过在类库中增加对象存储管理功能,可以在不改变通过在类库中增加对象存储管理功能,可以在不改变语言定义或不增加关键字的情况下,就在开发环境中提供语言定义或不增加关键字的情况下,就在开发环境中提供这种功能。然后,可以从这种功能。然后,可以从“可存储的类可存储的类”中派生出需要持中派生出需要持久保存的对象,该对象自然继承了对象存储管理功能。这久保存的对象,该对象自然继承了对象存储管理功能。这就是就是EiffelEiffel语言采用的策略。理想情况下,应该使程序设计语言采用的策略。理想情况下,应该使程序设计语言语法与对象存储管理语法实现无缝集成。语言语法与对象存储管理语法
20、实现无缝集成。2023-1-242110.1.2 10.1.2 面向对象语言的技术特点面向对象语言的技术特点n 9 9参数化类参数化类 所谓参数化类,就是使用一个或多个类型去参数化一个类所谓参数化类,就是使用一个或多个类型去参数化一个类的机制。有了这种机制,程序员就可以先定义一个参数化的类模的机制。有了这种机制,程序员就可以先定义一个参数化的类模板(即在类定义中包含以参数形式出现的一个或多个类型),然板(即在类定义中包含以参数形式出现的一个或多个类型),然后把数据类型作为参数传递进来,从而把这个类模板应用在不同后把数据类型作为参数传递进来,从而把这个类模板应用在不同的应用程序中,或用在同一应用
21、程序的不同部分。的应用程序中,或用在同一应用程序的不同部分。2023-1-242210.1.2 10.1.2 面向对象语言的技术特点面向对象语言的技术特点n 1010开发环境软件工具和软件工程环境对软件生开发环境软件工具和软件工程环境对软件生产率有很大影响产率有很大影响 由于面向对象程序中继承关系和动态联编等引入的特殊复杂由于面向对象程序中继承关系和动态联编等引入的特殊复杂性,面向对象语言所提供的软件工具或开发环境就显得尤其重要性,面向对象语言所提供的软件工具或开发环境就显得尤其重要了。了。至少应该包括下列一些最基本的软件工具:编辑程序、编译至少应该包括下列一些最基本的软件工具:编辑程序、编译
22、程序或解释程序、浏览工具、调试器(程序或解释程序、浏览工具、调试器(debuggerdebugger)等。)等。2023-1-242310.1.3 10.1.3 选择面向对象语言选择面向对象语言n 1 1选择选择将来能否占主导地位将来能否占主导地位的语言的语言 根据目前占有的市场份额,以及专业书刊和学术会议上所做根据目前占有的市场份额,以及专业书刊和学术会议上所做的分析、评价,人们往往能够对未来哪种面向对象语言将占据主的分析、评价,人们往往能够对未来哪种面向对象语言将占据主导地位做出预测。导地位做出预测。但是,最终决定选用哪种面向对象语言的实际因素,往往是但是,最终决定选用哪种面向对象语言的实
23、际因素,往往是诸如成本之类的经济因素而不是技术因素。诸如成本之类的经济因素而不是技术因素。2023-1-242410.1.3 10.1.3 选择面向对象语言选择面向对象语言n 2 2考虑具有良好考虑具有良好类库和开发环境类库和开发环境的语言的语言 语言、开发环境和类库这语言、开发环境和类库这3 3个因素综合起来,共同决定了可个因素综合起来,共同决定了可重用性。考虑类库的时候,不仅应该考虑是否提供了类库,还应重用性。考虑类库的时候,不仅应该考虑是否提供了类库,还应该考虑类库中提供了哪些有价值的类。随着类库的日益成熟和丰该考虑类库中提供了哪些有价值的类。随着类库的日益成熟和丰富,在开发新应用系统时
24、,需要开发人员自己编写的代码将越来富,在开发新应用系统时,需要开发人员自己编写的代码将越来越少。越少。2023-1-242510.1.3 10.1.3 选择面向对象语言选择面向对象语言n 3 3考虑考虑其他因素其他因素 在选择编程语言时,应该考虑的其他因素还有:对用户学习在选择编程语言时,应该考虑的其他因素还有:对用户学习面向对象分析、设计和编码技术所能提供的培训服务;在使用这面向对象分析、设计和编码技术所能提供的培训服务;在使用这个面向对象语言期间能提供的技术支持;能提供给开发人员使用个面向对象语言期间能提供的技术支持;能提供给开发人员使用的开发工具、开发平台和发行平台,对机器性能和内存的需
25、求,的开发工具、开发平台和发行平台,对机器性能和内存的需求,集成已有软件的容易程度等。集成已有软件的容易程度等。2023-1-242610.2 10.2 面向对象面向对象程序设计风格程序设计风格n 10.2.1 10.2.1 提高可重用性提高可重用性n 10.2.2 10.2.2 提高可扩充性提高可扩充性n 10.2.3 10.2.3 提高健壮性提高健壮性2023-1-242710.2.1 10.2.1 提高可重用性提高可重用性 面向对象方法的一个主要目标,就是提高软件的可面向对象方法的一个主要目标,就是提高软件的可重用性。软件重用有多个层次,在编码阶段主要考虑代重用性。软件重用有多个层次,在
展开阅读全文