C++代码设计与重用

《C++代码设计与重用》
基本信息
作者: [美]Martin D.Carroll Margaret A.Ellis [作译者介绍]
译者: 陈伟柱
丛书名: C和C++实务精选
出版社:人民邮电出版社
ISBN:9787115278289
上架时间:2012-6-14
出版日期:2012 年7月
开本:16开
页码:268
版次:1-1
所属分类: 计算机 > 软件与程序设计 > C++ > C++
合作专区 > 微软技术图书 > 微软程序设计 > 微软C/C++/VC++
zcover.jpg
更多关于 》》》《 C++代码设计与重用
内容简介
计算机书籍
  《c++代码设计与重用》全面展示如何使用c++编写可重用的代码,从而提高程序员的开发效率。
  全书分为12章。包括重用性基本概念、类设计、扩展性、效率、错误、冲突、兼容性、继承、移植性、程序库等和重用相关的诸多话题。每一章的最后,通过总结和练习帮助你巩固概念、加深理解,参考文献和相关资料为你指明了深入学习的方向。
  《c++代码设计与重用》适合有一定c++经验的程序员阅读,也可供以提高代码重用性为专门学习方向的读者参考。
目录
《c++代码设计与重用》
第1章 重用性介绍 1
1.1 什么是重用性 1
1.1.1 提取代码来作为重用 2
1.1.2 可重用代码的基本特性 2
1.2 重用的神话 3
1.3 重用的障碍 4
1.3.1 非技术障碍 4
1.3.2 技术障碍 5
1.4 希望是否尚存 6
1.5 这本书能给我们带来什么 7
l.6 练习 8
1.7 参考文献和相关资料 9
第2章 类的设计 11
2.1 抽象性 11
2.2 正规函数 12
2.3 nice类 14
2.4 存在最小标准接口吗 15
2.4.1 缺省构造函数 16
2.4.2 赋值运算符 17
2.4.3 拷贝构造函数 18
2.4.4 相等运算符 18
2.4.5 析构函数 18
2.5 浅拷贝和深拷贝 19
2.6 接口一致性 22
2.7 转型 25
2.7.1 多重所有权(multiple ownership) 26
2.7.2 敏感转型 26
2.7.3 不敏感转型 28
2.7.4 转型数目(fanout) 28
2.8 const关键字的使用 29
2.8.1 抽象const对比位元const 29
2.8.2 最大限度地使用const 31
2.8.3 对const不安全的解释 32
2.9 总结 33
2.10 练习 34
2.11 参考文献和相关资料 37
第3章 扩展性 39
3.1 扩展性的权衡 39
3.2 扩展性和继承 40
3.2.1 只继承基类的接口 41
3.2.2 只继承基类的实现 42
3.2.3 同时继承基类的接口和实现 43
3.3 继承语义(semantie) 43
3.4 继承的障碍 45
3.4.1 非虚成员函数 45
3.4.2 过度保护 47
3.4.3 模块化不足 48
3.4.4 friend关键字的使用 51
3.4.5 成员变量过多 52
3.4.6 非虚(nonvirtual)派生 52
3.4.7 妨碍继承的成员函数 53
3.5 派生赋值问题 55
3.6 允许入侵(用户修改源代码)继承 57
3.7 总结 58
3.8 练习 58
3.9 参考文献和相关资料 60
第4章 效率 61
4.1 效率和重用性 61
4.2 程序创建时间 62
4.2.1 编译时间 62
4.2.2 实例化时间 64
4.3 代码大小 69
4.3.1 源文件分割 69
4.3.2 外联的(outlined)inline 71
4.3.3 模板特化大小 71
4.4 运行时间 72
4.4.1 内联(inlning) 72
4.4.2 虚函数 74
4.4.3 返回引用 76
4.5 空闲存储空间(free-store)和堆栈空间(stack space) 78
4.5.1 使用高效的算法 79
4.5.2 尽可能快地释放空闲资源 80
4.5.3 静态对象 81
4.5.4 庞大的对象 82
4.6 效率的权衡 83
4.6.1 实现更加困难 84
4.6.2 使用更加困难 86
4.7 总结 86
4.8 练习 87
4.9 参考文献和相关资料 89
第5章 错误 91
5.1 可重用代码中的错误 91
5.2 错误检测 92
5.2.1 函数前提条件 93
5.2.2 表示不变性 93
5.3 处理错误 95
5.3.1 程序库变量 95
5.3.2 解决问题 95
5.3.3 程序退出或者程序终止(exit or abort) 96
5.3.4 抛出异常 96
5.3.5 返回错误值 97
5.3.6 创建nil值 98
5.3.7 把无效的数据解释为有效的数据 99
5.3.8 允许不确定的行为 99
5.4 资源限制(resource-limit)错误 100
5.4.1 堆栈溢出 100
5.4.2 用完空闲存储空间 101
5.4.3 文件系统限制 102
5.5 异常安全性 103
5.5.1 不一致的状态 104
5.5.2 资源泄漏 105
5.6 总结 106
5.7 练习 107
5.8 参考文献和相关资料 110
第6章 冲突 111
6.1 全局名称 111
6.1.1 翻译单元 112
6.1.2 类的定义 112
6.1.3 函数和数据的定义 114
6.1.4 程序库的蕴涵意义 114
6.1.5 命名约定 115
6.1.6 namespace(名字空间)结构 117
6.2 宏名称 118
6.2.1 宏名称冲突 118
6.2.2 去掉宏 119
6.2.3 宏的命名约定 121
6.3 环境名称 121
6.4 unclean程序库 122
6.5 good-citizen程序库 123
6.6 总结 123
6.7 练习 124
6.8 参考文献和相关资料 125
第7章 兼容性 127
7.1 向后和向前兼容性 127
7.2 兼容性的形式 128
7.3 理论源代码兼容性 129
7.4 实际源代码兼容性 130
7.5 链接兼容牲 131
7.6 运行兼容牲 133
7.7 进程兼容性 134
7.8 文档化不兼容性 135
7.9 非文档化特性 135
7.10 总结 136
7.11 练习 137
7.12 参考文献和相关资料 142
第8章 继承体系 143
8.1 根数目、深度和扇出数 143
8.2 体系类型 146
8.2.1 直接体系 146
8.2.2 接口体系 147
8.2.3 对象工厂(object factory) 149
8.2.4 句柄体系 151
8.3 模板还是继承 154
8.3.1 指针操纵 155
8.3.2 派生要求 156
8.3.3 实现不需要的函数 157
8.4 总结 158
8.5 练习 159
8.6 参考文献和相关资料 161
第9章 移植性 163
9.1 有编写可移植代码的必要吗 163
9.1.1 可移植性的优缺点 163
9.1.2 目标代码和创建过程的可移植性 164
9.2 不断发展的语言定义 165
9.2.1 冲突 165
9.2.2 实现的完整性 166
9.3 不确定的行为 166
9.3.1 排列方式和补全(padding) 167
9.3.2 地址操纵 168
9.4 合法但不可移植的代码 169
9.4.1 实现性定义的行为 169
9.4.2 未经指定的行为 170
9.5 实现依赖性 171
9.6 可移植的数据文件 172
9.7 模板实例化 173
9.7.1 自动的实例化器 173
9.7.2 人工实例化 177
9.8 运行期程序库 179
9.9 其他移植性问题 180
9.10 总结 181
9.11 练习 182
9.12 参考文献和相关资料 184
第10章 使用其他程序库 185
10.1 为何要重用其他程序库 185
10.2 使用其他程序库的缺点 186
10.2.1 获得可重用程序库 186
10.2.2 效率 187
10.2.3 冲突 187
10.2.4 版本同步 188
10.3 自含式(self-contained)程序库 190
10.3.1 实现困难 190
10.3.2 使用困难 191
10.3.3 效率 192
10.3.4 隔离 192
10.4 总结 193
10.5 练习 193
第11章 文档编制 195
11.1 文档编制和重用性 195
11.2 设计文档 196
11.3 使用指南 196
11.3.1 对读者的背景知识了如指掌 197
11.3.2 用抽象的观点来编写 197
11.3.3 先解释普通用法 198
11.3.4 一次只解释一个事物 198
11.3.5 解释用法,不解释设计思路 199
11.3.6 简单清楚地编写 199
11.3.7 准确地使用语言 199
11.3.8 使用普遍接受的术语 200
11.3.9 深刻理解重载的术语 200
11.3.10 给出合法的、无错误的代码 201
11.3.11 保持简短的代码段 201
11.3.12 避免使用太大的函数 201
11.3.13 提供在线实例 202
11.4 参考手册 203
11.4.1 抽象化 203
11.4.2 语法接口 203
11.4.3 函数语义 205
11.4.4 模板参数约束 206
11.5 总结 207
11.6 练习 207
11.7 参考文献和相关资料 208
第12章 其他话题 209
12.1 静态初始化问题 209
12.1.1 构造和析构的时刻 210
12.1.2 程序库的蕴含意义 211
12.1.3 初始化函数 213
12.1.4 初始化检查 214
12.1.5 初始化对象 216
12.1.6 双构造 217
12.2 局部化开销原则 218
12.2.1 局部化开销和c++ 219
12.2.2 局部化开销和程序库 219
12.3 内生类和外生类 220
12.4 迭代器 222
12.5 类耦合 224
12.6 推迟决定 226
12.7 总结 229
12.8 练习 229
12.9 参考文献和相关资料 232
中英文术语对照表 233
参考文献 261

图书信息来源: 中国互动出版网

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16566727/viewspace-733120/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/16566727/viewspace-733120/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验一 C++简单程序设计(2学时) 1.编程计算图形的面积。程序可以计算圆形、长方形、正方形的面积、运行时先提示用户选择图形型,然后,对圆形要求用户输入半径、对长方形要求用户输入长和宽的值,对正方形要求用户输入边长,计算出面积后将其显示出来。要求使用debug调试功能观察程序运行中变量值的变化情况。 2.定义一个表示时间的结构体,可以精确的表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。 实验二 函数的应用(2学时) 1.编写重载函数Max1,分别求出两个整数,两个双精度数,三个整数,三个双精度数的最大值。 2.使用重载函数模板重新实现上面的函数Max1。 要求:(1)练习重载函数的使用;(2) 练习函数模板的使用。 实验三 与对象(2学时) 1.声明一个Dog,包含age、weight等属性,以及对这些属性操作的方法。实现并测试这个。 2.设计并测试一个名为Rectangle的矩形,其属性为矩形的左下角和右上角两个点的坐标,有成员函数能计算矩形的面积。 3.定义一个CPU,包含等级、频率,电压等属性,并编写构造函数、析构函数,以及成员函数run、stop模拟CPU的状态。其中,等级为整型,频率为单位是兆赫兹的整数,电压为浮点型。要求自己设计各个属性的标识。 4.定义一个简单的Computer,包含数据成员cpu、ram、cdrom等等,有两个成员函数run、stop。其中cpu为CPU的一个对象,ram为RAM的一个对象,cdrom为CDROM的一个对象,定义并实现这个。 5.(必做)设计一个用于人事管理的People。考虑到通用性,可以只抽象出所有人员都 具有的属性:number(编号),sex(性别) ,birthday(出生日期),id(身份证号)等等。其中“出生日期”定义为一个“日期”内嵌子对象。用成员函数实现对人员函数的录入和显示。要求包括:编写构造函数和析构函数、拷贝构造函数、内联成员函数,的组合。 实验四 C++程序的结构(2学时) 1.编写程序,实现并测试客户机(Client)。定义字符型静态数据成员ServerName[10],保存其服务器名称;整型静态数据成员ClientNum,记录定义的客户数量;定义静态函数ChangeServerName()改变服务器名称。在头文件client.h中定义,在文件client.cpp中实现,在文件test.cpp中测试这个,观察相应的成员变量的取值的变化情况。 2、在实验三题目5编写的人员设计适当的方法来实现中数据的共享性,并采用多文件结构实现程序。 3.(选做)定义X、Y、Z,函数h(X *),满足:X有私有成员i,Y的成员函数g(X *)是X的友元函数,实现对X的成员i加1,Z是X的友元,其成员函数f(X *)实现对X的成员i加5,函数h(X *)是X的友元函数,实现对X的成员i加10。在一个文件中声明,在一个文件中实现,在另一个文件中测试。 实验五 继承和派生(2学时) 1.设计并定义一个交通工具,并通过该派生出新的,编写程序定义这些并测试它; 2.(选做)声明一个基Shape,在此基础上派生Rectangle和Circle,二者都有GetArea()函数计算对象的面积,编写程序测试。 3.(选做)声明一个哺乳动物Mammal,再由此派生出狗Dog,定义一个Dog的对象,观察基与派生的构造函数和析构函数的调用顺序。 4.完善实验四第2题的程序,具体要求如下: 任务1:从people(人员)派生出student(学生),添加属性:学校、学院、专业、班号、入学成绩,设计相应的成员函数(构造函数,拷贝构造函数,录入函数,显示函数)。 任务2:从people派生出teacher(教师),添加属性:职务,部门,职称。并设计相应的成员函数。 任务3:从student派生出graduate(研究生),添加属性:导师,研究方向。并设计相应的成员函数。 任务4:编写程序来测试这个。 实验六 小型学生管理系统的设计与实现1(2学时) 设计学生、课程、成绩及相应的成员函数。要求能实现学生的信息、课程信息和成绩信息的增加、修改、删除与查询。 实验七 多态性(2学时) 1.定义Point,有坐标X和Y两个成员变量,对Point重载++和――运算符,实现对坐标值的改变。 2.定义一个车(Vehicle),有run,stop等成员函数,由此派生出自行车(bicycle)、汽车(car),由bicycle和car派生出摩托车(motocar),它们都包含run,stop等成员函数,编写相应的虚函数并测试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值