本书立足面向对象方法学,系统地介绍了面向对象编程思想。为了使读者掌握一定的实际编程能力,本书还介绍了面向对象编程语言基础。为了满足高级编程的需要并使读者了解面向对象技术的发展,本书还专门介绍了STL和UML。
本书力求以面向对象方法学为指导,各章节以面向对象软件开发的必要过程进行安排。本书可作为本科生、研究生的教材使用,也可供从事计算机软件开发的技术人员、相关专业的教师阅读。教师在授课时,可根据需要对部分内容进行适当取舍。
★ 本书配有电子教案,任课教师可免费索取。
第1章 绪论
1.1 面向对象简述
1.1.1 对象定义
1.1.2 面向对象
1.1.3 面向对象范型
1.2 面向对象程序设计范型
1.2.1 软件工程
1.2.2 面向对象理论及历史
1.2.3 面向对象编程
习题一
第2章 面向对象分析
2.1 面向对象分析中的术语
2.1.1 抽象
2.1.2 对象
2.1.3 类
2.1.4 封装
2.1.5 继承
2.1.6 消息
2.1.7 结构与联系
2.1.8 多态性
2.1.9 主动对象
2.2 各种分析方法
2.2.1 功能分解法
2.2.2 数据流法
2.2.3 信息建模法
2.2.4 面向对象法
2.3 支持软件复用
2.3.1 贯穿软件生命周期全过程的一致性
2.3.2 实用性
2.3.3 有利于用户参与
2.4 面向对象分析设计的主要过程
2.4.1 发现对象
2.4.2 定义属性
2.4.3 定义行为
2.4.4 定义结构
2.4.5 细分题目
2.5 具有支持OO特征的建模语言
2.5.1 OOA建模语言的评价
2.5.2 OOA模型的一般机制
2.5.3 OOA视图和提交
2.6 面向对象设计初步
2.6.1 OOD模型
2.6.2 优良的OOD
2.6.3 OOD中对象标识设计
2.6.4 复杂对象的构造设计
习题二
第3章 面向对象程序设计语言基础
3.1 面向对象程序设计语言
3.1.1 程序
3.1.2 语言及其分类
3.1.3 C++是面向对象程序设计语言
3.2 C++语言基础
3.2.1 C++的发展史
3.2.2 C++基础语法
3.2.3 常数
3.2.4 输入/输出
3.2.5 表达式和语句
3.2.6 函数
3.2.7 函数的重载
3.2.8 C++中的类
3.2.9 写C++类代码的相关墓础常识
3.2.10 继承
3.2.11 运算符重载
3.2.12 虚函数
3.2.13 模板
3.3 Java的基础知识
3.3.1 Java的发展史
3.3.2 Java的基本语法
3.3.3 运算符
3.3.4 表达式
3.3.5 流程控制语句
3.3.6 数组和字符串
3.3.7 Java环境的一些特征
习题三
第4章 发现对象及其属性、行为定义
4.1 怎样发现对象
4.1.1 从问题领域发现对象
4.1.2 从系统责任发现对象
4.1.3 对象的审查和筛选
4.2 定义属性
4.2.1 发现对象的属性
4.2.2 按一般常识确定属性
4.2.3 本问题领域中的属性
4.2.4 结合系统软件和将开发的软件确定属性
4.2.5 与其他对象相联系的属性
4.3 确定行为
4.3.1 对象的状态和状态转移图
4.3.2 根据一般常识确定行为
4.3.3 根据状态转移图确定行为
4.4 C++编程
4.5 Java编程
*4.6 主动对象识别及其程序设计
4.6.1 主动对象识别
4.6.2 主动对象程序设计基础
4.6.3 主动对象程序设计
习题四
第5章 对象系统设计步骤、对象关系及其实现-
5.1 面向对象程序设计步骤
5.1.1 构造一个解题模型
5.1.2 标识对象
5.1.3 标识对象间的关系
5.1.4 建立对象的型构
5.1.5 实现各对象
5.2 对象之间、类之间的关系
5.2.1 IS-A关系
5.2.2 HAS-A关系
5.2.3 USES-A关
5.2.4 IS-LIKE-A关系
5.2.5 CREATES-A关系
5.3 面向对象设计和开发示例
5.3.1 构造一个解题模型
5.3.2 标识对象
5.3.3 标识对象间的关系
5.3.4 建立对象的型构
5.3.5 实现各对象
习题五
*第6章 C++标准模块库(STL)及其程序设计
6.1 STL简介
6.1.1 初识STL
6.1.2 STL和HP公司
6.1.3 大众化的STL
6.1.4 STL总览
6.1.5 STL基本组件
6.1.6其他STL组件
6.1.7 完整的STL程序包
6.2 vectors
6.2.1 vector程序实例
6.2.2 初始化
6.2.3 vector容器的方法
6.2.4 对vector可执行的其他操作
6.3 STL与模板
6.3.1 template关键字
6.3.2 模板语法
6.3.3 模板函数
6.3.4 模板类
6.3.5 STL与模板的比较
6.4 迭代器
6.4.1 迭代器的使用
6.4.2 迭代器类型
6.5 算法
6.5.1 算法的定义
6.5.2 算法的使用
6.5.3 泛型算法的使用
6.5.4 函数对象
6.6 容器
6.6.1 容器的定义
6.6.2 适配器的定义
6.7 总结
习题六
*第7章 标准建模语言及其应用
7.1 标准建模语言(UML)概述
7.1.1 UML语言的特征
7.1.2 UML语言的目标
7.1.3 UML语言
7.2 UML的模型、视图、图与系统架构建模
7.2.1 视图
7.2.2 图
7.2.3 UML中的模型元素
7.3 用例建模
7.3.1 用例图
7.3.2 确定行为者
7.3.3 确定用例
7.3.4 用例之间的关系
7.4 类和对象建模
7.4.1 类图和对象图
7.4.2 确定类
7.4.3 UML中类之间的关系
7.4.4 包
7.4.5 模板
7.4.6 一个类图的实例
7.5 动态建模
7.5.1 消息
7.5.2 状态图
7.5.3 时序图
7.5.4 协作图
7.5.5 活动图
7.6 物理体系结构建模
7.6.1 逻辑体系结构和物理体系结构
7.6.2 构件图
7.6.3 部署图
7.7 使用UML的过程
7.7.1 UML过程的基础
7.7.2 面向对象方法的一般过程
7.7.3 Rational Objectory过程
习题七
参考文献
自20世纪80年代以来,面向对象程序设计(Object-Oriented Programming)被普遍认为是程序设计方法学及软件领域的实质性革命。面向对象思想及其软件编程实践在软件领域中得到了很大的发展和完善。近年来,高等院校有关专业均陆续开设了这门课程。C++来源于C,是支持多种范型的程序设计语言。许多高校在讲授面向对象程序设计课程时,都将C++作为重点内容讲述,这无疑是一种好的选择。
在计算机软件领域,很多新的方法与技术都首先是从编程阶段出现,进而发展到软件生命周期的前期阶段。人们对软件本身的认识,开始也只是着眼于编程,后来才形成了分析、设计、编程、测试以及维护等一整套的软件工程体系。但是,面向对象的方法与技术发展到软件生命的前期阶段后有着更为深刻的意义。因为面向对象方法的本质,就是强调从客观世界中固有的事物出发来构造系统,用人类在现实生活中常用的思维方式来认识、理解和描述客观事物,突出最终建立的系统使之能够映射问题域。本书也是围绕这一方式来编写的, 目的是使读者能够很清晰地把握面向对象的精髓,更好地掌握面向对象方法。
本书的编者一直从事计算机语言和面向对象课程的教学,本书的整体框架是从编者第一手教案中整理出来的,不求对C++语言语法细节的罗列介绍。从未接触过C十+语言和Java语言的读者,可以用较快的速度浏览一下其基本语法(本书第3章)。
本书在编写过程中做到了以下几点:
(1)既照顾面向对象思想又照顾其编程实现。这对初学者掌握面向对象方法有很大的好处。
(2)本书考虑到学生是在学习完结构化程序设计语言(如C语言)后接着学习C++语言,会用结构化程序设计的思想理解C++,从而淡化了C++作为优秀的多范型语言的特点的实际情况,对本书内容进行了有的放矢的编写。
(3)本书以“由点到线,再到面”这一逻辑思维为出发点,紧紧围绕面向对象思想进行阐述。
因此,本书从基本概念、基本语法到模型的建立,力求体现面向对象软件工程的整个体系,并对标准模板库(STL)和标准建模语言(UML)作了重点阐述。本书的整个编写过程清晰,提倡既不要陷入具体语言中,又努力做到联系实际;既寻求规律,又有所创新,使读者对面向对象有一个比较全面的认识,并从本书的学习中受到启迪。
在本书的完成整理过程中,教师蒋贵全、范时平,学生周敏、周大刚、张贵和秦志胜等参与了相关章节的编写录入和校对工作。
本书作为本科教材时,教学重点是第1—5章,带*号章节为选修内容:作为研究生教材时,教学重点放在第6、7章。本书也可供从事软件设计的技术人员参考。
本书得到了西安电子科技大学出版社马武装老师的大力支持。本书由深圳大学王小民博士审定,重庆邮电学院李秉智教授阅读了本书的初稿。
由于时间关系加上编者水平有限,疏漏和错误之处敬请谅解,并诚恳期待读者批评指正。