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. 实现一般-特殊(即泛化)结构的机制 ◼ 既包括实现继承的机制,也包括解决名字冲突的机制。 ◼ 名字冲突指的是继承多个基类可能出现的重名问题。 ◼ 某些语言拒绝接受有名字冲突的程序,另一些语言提供了 解决冲突的协议。 ◼ 程序员应该尽力避免出现名字冲突