第12章面向对象实现 12,1程序设计语言 122程序设计风格 12.3测试策略 124设计测试用例
第12章 面向对象实现 12.1 程序设计语言 12.2 程序设计风格 12.3 测试策略 12.4 设计测试用例
面向对象实现主要包括两项工作 口把面向对象设计结果翻译成用某种程序语言书写的面向对象 程序; 口测试并调试面向对象的程序。 ■面向对象程序的质量基本上由面向对象设计的质量决 定,所采用的程序语言的特点和程序设计风格也将对 程序的可靠性、可重用性及可维护性产生深远影响。 ■软件测试仍然是保证软件可靠性的主要措施。但是, 面向对象程序中特有的封装、继承和多态等机制,也 给面向对象测试带来一些新特点,增加了测试和调试 的难度
◼ 面向对象实现主要包括两项工作: ❑ 把面向对象设计结果翻译成用某种程序语言书写的面向对象 程序; ❑ 测试并调试面向对象的程序。 ◼ 面向对象程序的质量基本上由面向对象设计的质量决 定,所采用的程序语言的特点和程序设计风格也将对 程序的可靠性、可重用性及可维护性产生深远影响。 ◼ 软件测试仍然是保证软件可靠性的主要措施。但是, 面向对象程序中特有的封装、继承和多态等机制,也 给面向对象测试带来一些新特点,增加了测试和调试 的难度
121程序设计语言 1211面向对象语言的优点 在软件开发过程中,读程序的时间比写程序的时间还要多, 因此,程序设计语言的选择非常重要 ■从原理上说,使用任何一种通用语言都可以实现面向对象 概念。 面向对象设计的结果要转换为计算机系统可以识别的代码, 选择的语言工具包括: 口(1)面向对象语言 >OO语言的结构与设计的构造是相似的,支持对象、多态性和继 承性。 由于语言本身充分支持面向对象概念的实现,编译程序可以自 动把面向对象概念映射到目标程序中
◼ 在软件开发过程中,读程序的时间比写程序的时间还要多, 因此,程序设计语言的选择非常重要。 ◼ 从原理上说,使用任何一种通用语言都可以实现面向对象 概念。 ◼ 面向对象设计的结果要转换为计算机系统可以识别的代码, 选择的语言工具包括: ❑ (1) 面向对象语言 ➢ OO语言的结构与设计的构造是相似的,支持对象、多态性和继 承性。 ➢ 由于语言本身充分支持面向对象概念的实现,编译程序可以自 动把面向对象概念映射到目标程序中。 12.1 程序设计语言 12.1.1 面向对象语言的优点
口(2)非面向对象语言 作○○语言需要特别注意和规定保留程序○O结构。O○概念可以 映射到非OO语言结构中,这只是一个表达方式的问题,不是语 言能力的问题。因为,编程语言最终要转换为机器语言 所有非面向对象语言都不支持一般到特殊结构的实现。此时, 要么完全回避继承的概念,要么在声明特殊化类时,把对一般 化类的引用嵌套在它里面 〉非面向对象语言编写面向对象程序,必须由程序员自己把面向 对象概念映射到目标程序中 因此,选择具有能够更完整、更准确地表达问题域语义的 语法的面向对象语言是非常重要的,它给系统带来的重要 优点包括: 口(1)一致的表示方法 口(2)可重用性 口(3)可维护性
❑ (2) 非面向对象语言 ➢ 非OO语言需要特别注意和规定保留程序OO结构。OO概念可以 映射到非OO语言结构中,这只是一个表达方式的问题,不是语 言能力的问题。因为,编程语言最终要转换为机器语言。 ➢ 所有非面向对象语言都不支持一般到特殊结构的实现。此时, 要么完全回避继承的概念,要么在声明特殊化类时,把对一般 化类的引用嵌套在它里面。 ➢ 非面向对象语言编写面向对象程序,必须由程序员自己把面向 对象概念映射到目标程序中。 ◼ 因此,选择具有能够更完整、更准确地表达问题域语义的 语法的面向对象语言是非常重要的,它给系统带来的重要 优点包括: ❑ (1) 一致的表示方法 ❑ (2) 可重用性 ❑ (3) 可维护性
1.一致的表示方法 面向对象开发基于不随时间变化的、一致 的表示方法。这种表示方法应该从问题域到 OOA,从OOA到OOD,最后从OOD到面向对 象编程(OOP),始终稳定不变。一致的表示 方法既有利于在软件开发过程中始终使用统 的概念,也有利于维护人员理解软件的各种配 置成分
1. 一致的表示方法 面向对象开发基于不随时间变化的、一致 的表示方法。这种表示方法应该从问题域到 OOA,从OOA到OOD,最后从OOD到面向对 象编程(OOP),始终稳定不变。一致的表示 方法既有利于在软件开发过程中始终使用统一 的概念,也有利于维护人员理解软件的各种配 置成分
2.可重用性 为了能带来可观的商业利益,必须在更广泛 的范围中运用重用机制。在OOA,OOD直到 OOP中都显式地表示问题域语义,其意义是十 分深远的。随着时间的推移,软件开发组织既 可能重用它在某个问题域内的OOA结果,也可 能重用相应的OOD和OOP结果
2. 可重用性 为了能带来可观的商业利益,必须在更广泛 的范围中运用重用机制。在OOA,OOD直到 OOP中都显式地表示问题域语义,其意义是十 分深远的。随着时间的推移,软件开发组织既 可能重用它在某个问题域内的OOA结果,也可 能重用相应的OOD和OOP结果
3.可维护性 在选择编程语言时,应该考虑的首要因素 是在供选择的语言中哪个语言能最好地表达 问题域语义。一般说来,应该尽量选用面向 对象语言来实现面向对象分析、设计的结果
3. 可维护性 在选择编程语言时,应该考虑的首要因素, 是在供选择的语言中哪个语言能最好地表达 问题域语义。一般说来,应该尽量选用面向 对象语言来实现面向对象分析、设计的结果
122面向对象语言的技术特点 两大类面向对象语言 a纯面向对象语言: Smalitalk和Ee等 口混合型面向对象语言:过程语言+OO,如C++ ■纯面向对象语言着重支持面向对象方法研究和 快速原型的实现。 混合型面向对象语言的目标则是提高运行速度 和使传统程序员容易接受面向对象思想
◼ 两大类面向对象语言: ❑ 纯面向对象语言: Smalltalk和Eiffel等 ❑ 混合型面向对象语言: 过程语言+OO,如C++ ◼ 纯面向对象语言着重支持面向对象方法研究和 快速原型的实现。 ◼ 混合型面向对象语言的目标则是提高运行速度 和使传统程序员容易接受面向对象思想。 12.1.2 面向对象语言的技术特点
选择面向对象语言时应着重考察的技术特点: 1.支持类与对象概念的机制 所有面向对象语言都允许用户动态创建对象,并且可以用 指针引用动态创建的对象。允许用户动态创建对象,意味 着系统必须处理内存管理问题 有两种管理内存的方法: 口1)语言的运行机制自动管理内存,即自动回收“垃圾”的机制; (必须采用先进的垃圾收集算法) 2)由程序员编写释放内存的代码。(例如:程序员定义析构函数 ( destructor)。每当一个对象超出范围或被显式删除时,就自动调 用析构函数。这种机制使得程序员能够方便地构造和唤醒释放内存 的操作)
选择面向对象语言时应着重考察的技术特点: 1. 支持类与对象概念的机制 ◼ 所有面向对象语言都允许用户动态创建对象,并且可以用 指针引用动态创建的对象。允许用户动态创建对象,意味 着系统必须处理内存管理问题。 ◼ 有两种管理内存的方法: ❑ 1)语言的运行机制自动管理内存,即自动回收“垃圾”的机制; (必须采用先进的垃圾收集算法) ❑ 2)由程序员编写释放内存的代码。(例如: 程序员定义析构函数 (destructor)。每当一个对象超出范围或被显式删除时,就自动调 用析构函数。这种机制使得程序员能够方便地构造和唤醒释放内存 的操作)
2.实现整体-部分(即聚集)结构的机制 分别使用指针和独立的关联对象实现整体-部分结构。 大多数现有的面向对象语言并不显式支持独立的关联对象 在这种情况下,使用指针是最容易的实现关联的方法。 3.实现一般-特殊(即泛化)结构的机制 既包括实现继承的机制,也包括解决名字冲突的机制 ■名字冲突指的是继承多个基类可能出现的重名问题 ■某些语言拒绝接受有名字冲突的程序,另一些语言提供了 解决冲突的协议。 程序员应该尽力避免出现名字冲突
2. 实现整体-部分(即聚集)结构的机制 ◼ 分别使用指针和独立的关联对象实现整体-部分结构。 ◼ 大多数现有的面向对象语言并不显式支持独立的关联对象, 在这种情况下,使用指针是最容易的实现关联的方法。 3. 实现一般-特殊(即泛化)结构的机制 ◼ 既包括实现继承的机制,也包括解决名字冲突的机制。 ◼ 名字冲突指的是继承多个基类可能出现的重名问题。 ◼ 某些语言拒绝接受有名字冲突的程序,另一些语言提供了 解决冲突的协议。 ◼ 程序员应该尽力避免出现名字冲突