C++ 软件工程中的继承
- 概述
- 流行的软件重用技术
- 继承对软件重用的贡献
- 类库的处理
- 继承而不是修改基类
概述
软件重用: 在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程.
软件重用的好处:
- 提高软件生成率
- 减少软件开发人员数量
- 缩短开发周期
- 降低软件开发和维护费用
- 生产更加标准化的软件
- 提高软件开发质量
- 增加软件系统的互操作性
- 使开发者易于适应不同性质的项目
软件重用形式:
- 源代码模块或者 一级的重用
- 二进制形式的重用, 如组件重用
- 组装式重用, 如集成多程序功能
- 分析级别重用
- 设计级别重用
- 软件文档重用
流行的软件重用技术
- 库函数: 只要知道函数的名称, 返回值的类型, 函数参数和函数功能就可以对其进行调用
- 面向对象: 与函数库对应. 很多面向对象语言为应用程序开发者提供了易于使用的类库. 通过方法, 消息, 类, 继承, 封装, 和实例等机制构造软件系统
- 模板: 用各种各样的模板 (如文档模板, 网页模板等), 快速地建立对应的软件产品
- 设计模式: 设计模式作为重用设计信息的一种技术, 在面向对象设计中越来越流行
- 构件 (Component), 构件 (Architectural), 框架 (framework)
继承对软件重用的贡献
类库的出现使得软件的重用更加方便. 类构件的重用方式:
- 实例重用: 定义类对象直接解决问题
- 继承重用: 继承已有的类的派生类, 用一种安全的手段修改已有类构件, 然后再产生对象解决问题
类库的处理
- 对类库中类的声明一般放在头文件中. 类的实现 (函数的定义部分) 是单独编译的, 以目标代码形式存放在系统某一目录下
- 用户使用类库时, 不需要了解源代码, 但必须知道头文件的使用方法和怎么样去连接这些目标代码, 以便源程序在编译后与之连接
- 由于基类是单独编译的, 在程序编译时只需对派生新增的功能进行编译, 这就大大提高了调试程序的效率
- 如果在必要时修改了基类, 只要基类的公用接口不变, 派生类不必修改. 但基类需要重新编译, 派生类也必须重新编译, 派生类也必须重新编译, 否则不起作用
继承而不是修改基类
- 在类库中, 一个基类可能已被指定与用户所需要的多种组建立了某种关系, 因此类库中的基类是不容许修改的
- 有许多基类是被程序的其他部分或其他程序使用的, 这些程序要求保留有的基类不受破坏
- 用户往往得不到基类的源代码
- 实际上, 许多基类并不是从已有的其他程序中选取来的, 而是专门作为基类设计的
- 在面向对象程序设计中, 需要设计类的层次结构. 从最初的抽象类出发, 每一层派生类的建立都逐步地向着目标的具体实现前进