内容简介
第1篇 面向对象奠基
第1单元 对象世界及其建模
1.1程序=模型+表现
1.1.1程序的概念
1.1.2模型
1.1.3模型表现工具
1.2面向对象程序设计的基本概念
1.2.1对象与类
1.2.2类的层次性
1.2.3消息传递
1.3 UML建模
1.3.1用例图
1.3.2序列图
1.3.3状态图
1.3.4类图与类间关系
1.3.5对象图
1.3.6类间联系的UML表示
习题1
第2单元 学生类
2.1类Student的声明
2.1.1类静态属性的C++++描述
2.1.2类行为的C++++描述
2.1.3类成员的访问控制
2.1.4类Student声明的完整形式
2.2类Student的实现
2.2.1函数定义概述
2.2.2成员函数setStud()的定义
2.2.3成员函数dispStud()的定义
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.5语法知识扩展1
2.5.1 C++++程序的组成
2.5.2类与对象
2.5.3 C++++单词
2.5.4数据类型初步
2.5.5变量与常量
习题2
第3单元 呼叫器
3.1呼叫器建模与类声明
3.1.1问题与建模
3.1.2呼叫器类声明的C ++++描述
3.2呼叫器类的实现
3.2.1用if-else结构定义display()
3.2.2用switch结构定义display()
3.2.3 if-else判断结构与switch判断结构比较
3.3选择结构的测试
3.3.1逻辑覆盖测试及其策略
3.3.2测试用例的使用
3.3.3呼叫器类测试
3.4用静态成员变量存储类对象的共享常量——呼叫器类的改进
3.4.1自动变量与静态变量:不同生命期的变量
3.4.2使用静态成员变量的呼叫器类及其测试
3.4.3静态成员变量的特点
3.5王婆卖瓜——静态成员变量作为类对象的共享成员的另一例
3.5.1问题与模型
3.5.2 WangPo类声明与实现
3.5.3 WangPo类的测试
3.5.4 WangPo类的改进
习题3
第4单元 累加器
4.1累加器类结构设计与类声明
4.1.1累加器类结构设计
4.1.2累加器类声明
4.2累加器类的实现
4.2.1构造函数的实现
4.2.2成员函数calc()的定义与while语句
4.2.3使用do-while结构的calc()函数
4.2.4使用for结构的calc()函数
4.2.5三种循环流程控制结构的比较
4.3循环结构的测试
4.3.1等价分类法与边值分析法
4.3.2循环结构的测试用例设计
4.3.3累加器类的测试
4.3.4变量(对象)的作用域问题
4.4语法知识扩展2
4.4.1 C++++语句
4.4.2函数
4.4.3对象的存储
习题4
第5单元 简单的公司人员体系
5.1公司人员的类层次结构
5.1.1问题建模
5.1.2类层次结构声明
5.1.3在派生类中重定义基类成员函数
5.1.4类层次结构中成员函数执行规则
5.1.5基于血缘关系的访问控制——protected
5.2指针与引用
5.2.1指针=基类型+地址
5.2.2指向对象的指针与this
5.2.3引用
5.3类层次中的赋值兼容规则与里氏代换原则
5.3.1类层次中的赋值兼容规则
5.3.2里氏代换原则
5.4虚函数与抽象类
5.4.1动态绑定与虚函数
5.4.2虚函数表
5.4.3虚函数规则与虚析构函数
5.4.4纯虚函数与抽象类
5.4.5虚函数在面向对象程序设计中的意义
5.5多基派生与虚拟派生
5.5.1多基派生
5.5.2多基派生的歧义性问题
5.5.3虚拟派生
习题5
第6单元 面向对象程序设计的原则与设计模式
6.1面向对象程序设计的基本原则
6.1.1从可重用说起:合成/聚合优先原则
6.1.2从可维护性说起:开-闭原则
6.1.3面向抽象原则
6.1.4单一职责原则
6.1.5接口分离原则
6.1.6不要和陌生人说话
6.2 GoF设计模式
6.2.1创建型设计模式
6.2.2结构型设计模式
6.2.3行为型设计模式
习题6
第2篇C++++晋阶
第7单元C++++常量
7.1字面常量
7.1.1整型字面常量的表示和辨识
7.1.2浮点类型字面常量的表示和辨识
7.1.3字符常量
7.1.4 bool类型常量
7.2 const保护
7.2.1用const修饰简单变量
7.2.2 const修饰函数
7.2.3 const修饰类成员与对象
7.2.4 const修饰引用
7.2.5 const修饰指针
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带参宏定义
习题7
第8单元 数组——顺序地组织同类型数据
8.1数组及其应用
8.1.1数组基础
8.1.2对象数组的定义与初始化
8.1.3数组元素的搜索与排序
8.1.4基于容器的for循环
8.1.5 const数组
8.1.6用数组作为类的数据成员
8.1.7数组下标越界问题
8.2二维数组
8.2.1二维数组的定义
8.2.2二维数组的初始化
8.2.3二维数组元素的访问
8.3数组元素的指针形式
8.3.1一维数组元素的指针形式
8.3.2二维数组元素的指针形式
8.3.3多维数组元素的指针形式
8.4栈
8.4.1用数组建栈
8.4.2栈的应用
8.5字符串
8.5.1 C字符串
8.5.2 string字符串
习题8
第9单元变量的作用域、生命期、连接性和名字空间
9.1基本概念
9.1.1标识符的作用域及其分类
9.1.2变量的生命期与内存分配
9.1.3标识符的连接性
9.2 C/C++++的存储属性关键字
9.2.1用auto或register定义自动变量
9.2.2用extern定义或修饰全局变量
9.2.3 static关键词
9.3名字空间域
9.3.1名字冲突与名字空间
9.3.2名字空间的使用
9.3.3无名名字空间和全局名字空间
习题9
第10单元C++++异常处理
10.1程序异常及其应对
10.1.1程序异常的概念
10.1.2程序异常的一般应对
10.1.3 C++++异常处理机制
10.2 C++++异常类型
10.2.1简单异常类型
10.2.2用类作为异常类
10.2.3 C++++标准异常类
10.3常用异常处理技术
10.3.1捕获任何异常
10.3.2重新抛出异常
10.3.3抛出多个异常
习题10
第11单元 动态内存分配与链表
11.1 C++++动态存储分配方法
11.1.1存储空间的编译器分配和程序员分配
11.1.2用new为单个数据动态分配内存
11.1.3用delete回收单个数据的动态存储空间
11.1.4数组的动态存储分配
11.1.5对象的动态存储分配
11.1.6数据成员的动态存储分配
11.1.7对象的浅复制与深复制
11.2 C++++动态存储分配中的异常处理
11.2.1捕获std: : bad_alloc异常
11.2.2避免使用std: : bad_alloc
11.3链表
11.3.1链表及其特点
11.3.2单向链表类设计
11.3.3单链表的操作与成员函数设计
11.3.4链表的测试
习题11
第3篇C++++探幽
第12单元C++++I/O流
12.1 C++++流与流类
12.1.1流与缓冲区
12.1.2 C++++流类库
12.1.3 ios类声明
12.2标准流对象与标准I/O流操作
12.2.1 C++++标准流对象
12.2.2标准输入输出流操作
12.3流的格式化
12.3.1 ios类的格式化成员函数和格式化标志
12.3.2格式化操作符
12.4文件流
12.4.1文件流的概念及其分类
12.4.2文件操作过程
12.5流的错误状态及其处理
12.5.1流的出错状态
12.5.2测试与设置出错状态位的ios类成员函数
习题12
第13单元C++++函数细节
13.1函数的参数
13.1.1值传递:变量/对象参数
13.1.2名字传递:引用参数
13.1.3地址传递:地址/指针参数
13.1.4函数调用时的参数匹配规则
13.1.5关于函数实参的计算顺序
13.1.6形参带有默认值的函数
13.1.7参数数目可变的函数
13.2函数返回
13.2.1函数返回的基本特点
13.2.2返回指针值的函数
13.2.3返回引用的函数
13.3函数名重载
13.3.1函数名重载的基本方式
13.3.2编译器对于函数名重载的匹配规则
13.3.3函数名重载的误区
13.3.4函数名重载中的二义性
13.3.5函数名重载与在派生类中重定义基类成员函数
13.4操作符重载
13.4.1操作符重载及其规则
13.4.2成员函数形式的操作符重载
13.4.3友元函数形式的操作符重载
13.4.4赋值操作符重载
习题13
第14单元 类型转换与运行时类型鉴别
14.1数据类型转换
14.1.1算术类型的隐式转换规则与校验表
14.1.2显式类型转换
14.1.3对象的向上转换和向下转换
14.1.4转换构造函数
14.2 dynamic_cast操作符
14.2.1 dynamic_cast及其格式
14.2.2上行强制类型转换与下行强制类型转换
14.2.3交叉强制类型转换
14.2.4类指针到void的强制转换
14.2.5 dynamic_cast应用实例
14.3用typeid获得对象的类型信息
14.3.1 type_info类
14.3.2 typeid操作符的应用
14.3.3关于typeid的进一步说明
习题14
第15单元 模板
15.1算法抽象模板——函数模板
15.1.1从函数重载到函数模板
15.1.2模板函数重载
15.1.3函数模板的实例化与具体化
15.2数据抽象模板——类模板
15.2.1类模板的定义
15.2.2类模板的实例化与具体化
15.2.3类模板的使用
15.2.4类模板实例化时的异常处理
15.3标准模板库
15.3.1容器
15.3.2算法与函数对象
15.3.3迭代器
15.3.4 STL标准头文件
习题15
附录A C++++保留字
A.1 C++++关键字
A.2替代标记
A.3 C++++库保留名称
A.4特定字
附录B C++++运算符的优先级别和结合方向
参考文献