标准C++ 与面向对象程序设计(原书第2版)
作者 : Paul S.Wang
译者 : 李健 等
丛书名 : 计算机科学丛书
出版日期 : 2003-02-01
ISBN : 7-111-11384-5
定价 : 39.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 414
开本 : 16开
原书名 : Standard C++ with Object-Oriented Programming
原出版社:
属性分类: 教材
包含CD :
绝版 :
图书简介

教授C++的一本很好的教材和工具书
  现在有很多书适用于教授C++语言程序设计课程,其中许多是技术参考书,而这些书中一般不包含例子和习题。本书将C++作为一个工具用来连接现实世界的应用,讲述面向对象程序设计基本的理论概念。本书的组织和编写遵循简单、明了、易于仿效的原则。书中开发了许多有趣的例子和具有挑战性的练习题,以加强本书的传教功能。
  在这个新版本中:
  ◆描述了新的ANSI C++标准
  ◆包括关于模版库的内容
  ◆提供关于标准Web应用程序和如何利用它们来使用C++的内容
  ◆指导读者动手编写有趣的例子程序来学习C++程序设计
  ◆描述了初级的C++基本组件(第1章和第2章)和面向对象程序设计的特征

  可以在Internet上访问我们:http://www.thomson.com/learning/learning.jsp

  想要得到我们的产品和服务的更多信息,可以下载版本,并且查找我们的目录,请登录http://www.brookscole.com或发E-mail给我们:info@brookscole.com

图书前言

在面向对象程序设计(OOP)语言中,C++语言是最流行的语言之一,对象技术(OT)的核心方法使软件产业发生了革命性的变化。OOP所建立的程序具有许多优点,例如,组织好、容易理解和修改灵活,并且可以在许多不同的场合重复使用等等。它减少了复杂性并且使软件的生产和维护更加经济。C什语言由国际标淮化组织(ISO)和美国国家标准化组织(ANSI)共同进行了标准化。ISO/ANSI C++语言标准(ISO/IEC FDIS 14882)已经在1997年11月获得批准。
  在标准C++语言中引入了许多新的特性,它们包括布尔类型、异常、名称空间、运行时类型标识符、类型转换符表示法和带有通用算法的模板库。标准C++语言也修改和扩展了许多已有特性,包括宽字符类型、模板和函数调用解析。一个新的string类使得字符串更加容易使用。
  本书是《C++ wigh Object -Oriented Programming》的一个修订本包括了标准C++的所有内容并且保留了以前的内容。C++的构造与清晰、简明的ooP技术相匹配。语言机制独立地进行解释并再组合起来以达到OOP的目的。基于对象的、面向对象的和通用的程序设计技术在本书的实例程序中都有示范,以显示它们在实际中的应用。第12章还讲述了如何将C++语言应用到Web CGI程序设计中。
面向对象
  因为C++语言效率非常高并且支持OOP,所以它非常重要。因此OOP的概念和技术就作为C++程序设计的集成部分来讲述。这样就将OOP概念带回了现实中,使得它们变得容易理解。面向对象很早就进行过介绍并且用许多完整的例子进行了说明。在这里将明确地讲述怎样用这些技术来解决问题,以及这些技术怎样使程序变得更加灵活,并可复用。
  关键的面向对象的概念,加数据抽象、封装、信息隐藏、用对象处理的问题、通用化、继承和多态性,将在本书中进行全面的介绍。面向对象设计的基础知识也包含在其中。它们通过许多C++的实例进行说明。例如本书包守了一个银行账户的例子,这个例子贯穿了许多章节,并且不断地有新的内容加入。
  动手实践的方法
  学习编程的最好方法就是去写程序。介绍了清晰的概念和很好的例子之后,本书就鼓励你尽快编写有趣的程序。第1章和第2章介绍C++语言的重要组成部分和面向对象程序设计,从而使你快速入门。关于对象内容的介绍(如C++编程技巧)和风格向导将帮助你开始学习编程。
  在第5章介绍—个袖珍计算器模拟程序。这个程序随着新章节和例子的引入而不断更新。最后,在第13章就会完成一个逼真的小计算器程序了,它包含了许多重要的OOP概念和C++结构。
  内容的全面概括
  本书全面而深入地介绍了标准C++语言。根据学生的需要,将标准C++描述为一个完整的自我解释的语言。本书还包含了许多不断更新的例子,提供了许多机会重新访问熟悉的代码,并且将注意力集中在引入的新的概念和特性上。
  可以将本书作为一门课程的教材。除了基本的主题外,本书还包括标准库、I/O流类、模板、标准板库(STL)、通用算法、程序组织、头文件的使用、错误和异常处理、预处理和编译(在UNIX上和在PC机上)。
  面向对象的重点主题包括以下内容:建立软件对象,比较内部工作与外部行为,用封装减少复杂性,在已有的类上派生出新类,编写通用的、可以在许多情况下重用的代码,创建使用了插入兼容的软件“黑匣子”,并且建立与多种类型对象一起工作的多态性过程和对象。同时也包含面向对象的设计技术、方法和应用。 
  OOP使得编程变得简单
  标准C++是一个巨大并且复杂的语言。它在新的OOP的概念和支持C++结构方面很容易使人迷惑。只有通过努力才能使这个复杂的课程变得容易掌握和易于理解。这个过程是以简单的话题和关键的概念作为基础的。然后,以逻辑的顺序添加更高级的主题。书中还描述可能遇到的问题并且提供了答案。清晰有趣并且实用的例子说明了如何编写面向对象的程序和怎样应用所介绍的概念和技术。
  继承是OOP的一个关键特性,它对于初学编程的程序员来说比较难于理解。书中绘制了一个派生类清晰的结构图以及它与一个基类的关系,派生类是建立在这个基类之上的。而且明确地提供了派生的原理和它的恰当用法。多重继承部分也有清晰的好例子。
  多态性和插入兼容是OOP的核心技术,应该非常熟练地使用它们。在本书中用了整整一章来描述这两个主题,提供的材料足以向最聪明的学生提出挑战。Web应用
  用C++编写的CGI程序可以快速、高效地执行。本书用一章简练地描述了HTML格式和CGI程序设计的过程,这一章是OOP概念和C++技术的一个很好的应用。该章还给出和解释了一个用于C++编程的C++类库,以及怎样使用这个库进行C++程序设计。
  灵活的用法
  本书可以作为一门程序设计课程的教材,课程对象可以是大学三年级、四年级的本科生或刚入学的研究生。本书假设读者没有C语言基础,但是最好有一定的程序设计经验,这样可以更好地理解软件的复杂性。如果你已经具有C语言或者ANSI C语言方面的知识,那么它将减少你的学习量。对于一个初级的读者来说,前面章节中的内容应该仔细研究。高级的主题,如用户定义的自由存储管理、CGI编程(第12章)和面向对象设计(第13章)可以忽略不读。对于一个高层次读者来说,第1章和第14章可以作为背景材料进行阅读,从而为其他的主题留出更多的时间。
  就像在每章结尾的习题中建议的那样,对于那些有实际程序设计经验的人,应强调通用程序设计、模板编写和面向对象程序设计项目。在这种情况下,应该早一点学习第13章中的程序设计内容。
  无论何时,只要觉得合适就可以介绍(或者让学生自己阅读)第14章中的预处理和编译内容。第2章到第11章是本书的核心内容,它们具有挑战性并且适合于任何读者阅读。
  本书也可以作为OOP、数据结构或用C++实现面向对象设计课程的一个很好的补充。对读者系统的要求
  C++语言是一个独立的系统。示例程序可以运行在任何具有C++实现的地方,如工作站、PC机和多用户服务器。第14章给出了关于预处理、编译和执行程序的一些一般信息。自由软件基金会为我们提供了g++,它是一个很好的C++实现,你可以在下面的站点免费下载:
  http://WWW.gnu.ai.mit.edu/software/gcc (用于UNIX用户)
  http://WWW.delorie.com/djgpp/ (用于PC用户)
  容易查找的参考
  本书采用了循序渐进的论述方法,在旧的概念上建立新的概念使得本书变得更加容易理解。然而,本书也是一个很好的参考工具,书中组织了许多信息使你可以很容易进行参考,如表、图、语法注释、例子和总结。所有C++语言的重要结构都收集在附录A中以便于快速查找。附录B总结了一些特殊成员函数的用法。其他的一些附录包括调试、库函数和C++语言与C语言的混合用法。
  示例程序包
  在本书中,概念和编程结构都有足够的实例来说明。示例程序包按照章节来组织,大约有400个文件包含了完整的用来编译的源代码。用于UNIX和PC的完整的示例程序包都可以在下面的站点中得到:
  www.brookscole.com

图书序言

程序设计是一种既抽象又具体的工作。说它“抽象”是因为要操纵那看不见又摸不着的位、字节和其他数据结构;说它“具体”是因为一切细节都要符合严格的规则。同一动作,同一反应,无一例外。软件设计人员必须像数学家那样具备高度的抽象思维能力。然而,单靠思维能力仍是不够的。一个好的软件设计人员还要像音乐家那样有熟练的技巧、丰富的经验及细心和耐心。
  大型软件是人类有史以来所创造的最复杂的结构。软件的设计、制作、维护和改进需要庞大、昂贵的人力。面向对象程序设计(Object Oriented Programming OOP)是新近发展的软件技术,它的应用能使软件的难度和费用大幅减低,因此已为世界软件产业带来革命性的突破。
  OOP提倡以软件对象来模拟实际。一个对象就像一个独立的小计算机,有明确的外部功能和内部运作。这种内外分隔可大幅减低软件的复杂性。以对象的相互联系合作而构成的程序更能降低软件的抽象度以及“命题领域”和“解答领域”的理解间隔。
  标准C++是被最为广泛接受的一种OOP语言。本书对C++做了详尽的介绍,而且每个C++的特点和运用都举例进行了说明。一个缺乏OOP设计的程序最多是个传统程序,更坏的是被扭曲变形来产生类。本书把OOP的方法和设计融合在C++中一并说明。更重要的是解释如何将C++各项功能综合并运用来达到OOP的目的。
  希望本书能满足国内电脑从业者及学生们的需要。同时读者可在作者网站上找到其他有关OOP的书籍。作者衷心盼望读者能给予批评和指教,来函请寄作者网站:
  http://sofpower.com
  http://monkey.cs.kent.edu/—pwang
  王士弘(Paul S.Wang)


译者简介

李健 等:暂无简介

译者序

C++是一种非常流行的面向对象程序设计(OOP)语言。它提供了编写程序过程中所有常用的工具。本书包含了C++的OOP方面的所有内容,包括类、操作符重载和函数重载、引用、内联函数、单一和多重继承、虚函数以及模板。此外还有名称空间、模板库、运行时间类型标志和自由存储管理操作。
  对于应用程序开发人员来说,本书提供的类库有助于完成许多任务,以前需要的大量工作,现在简化成了很少的代码。
  经过三个月的艰苦努力,我们终于放下手中的笔,松了一口气,此时此刻,我们感到极度疲惫,但也难抑心中的激动,但愿给广大读者带来的益处能使这份良苦用心和心血得到补偿。
  在本书的翻译和校对工作中得到了很多同仁的帮助和指导,在本书出版之际,对此表示衷心的感谢。
  由于时间仓促,译文中难免出现错误和不当之处,敬请广大读者指正。
  李 健

图书目录

第1章 C++入门之一:基础
1.1 面向对象程序设计的结构
1.2 函数
1.3 运行第一个例子
1.4 语句
1.5 while语句
1.6 简单条件语句
1.7 字符与字符输入和输出
1.8 其他基本结构
1.9 数据类型和声明
1.10 操作符和表达式
1.11 枚举
1.12 数组
1.13 指针
1.14 一个实例
1.15 迭代控制
1. 16 通过switch进行选择
1.17 小结
习题
第2章 C++入门之二:基于对象的编程
2. 1 数据抽象和数据封装
2. 2 函数调用和参数传递
2. 3 命令行参数
2. 4 环境变量
2.5 sh吧类
2.6 用对象解决问题
2.7 C++语言的I/O流
2. 8 错误处理
2.9 基于对象的思想
2. 10 C++语言的程序设计技巧
2.11 小结
习题
第3章 关键结构
3.1 标识符作用域
3.2 名称空间
3.3 有关声明的更多的内容
3.4 递归
3.5 分数类
3.6 可选参数和变长参数
3.7 重载函数
3.8 引用
3.9 只读变量和只读参数
3.10 typedef声明
3.11 存储分配和存储管理
3.12 循环缓冲区
3.13 隐式类型转换
3.14 显式类型转换
3.15 怎样使用头文件
3.16 小结
习题
第4章 数组、指针和通用代码
4.1 数组的概念和声明
4.2 指针运算和地址运算
4.3 二维数组
4.4 一个矩阵阵类
4.5 一个多项式类
4.6 数组对象:vector
4.7 使用对象来进行文本行排序
4.8 指针和函数调用
4.9 数组、指针和引用
4.10 多级间接引用
4.11 通用编程
4.12 一个通用排序程序
4.13 指针和动态分配的存储空间
4.14 小结
习题
第5章 类和对象
5.1 定义类
5.2 创建和初始化对象
5.3 宿主对象
5.4 内部-外部的分离
5.5 模拟袖珍计算器
5.6 对象内置的操作
5.7 对象销毁
5.8 类的友元
5.9 递归结构
5.10 实例和静态成员
5.11 对象的大小
5.12 通用列表
5.13 联合与位字段
5.14 小结
习题
第6章 I/O流和标准库
6.1 不同的头文件
6.2 C格式串的输入和输出
6.3 string对象
6.4 串权标
6.5 字符运算
6.6 数字计算
6.7 I/O流库
6.8 对象的流I/O
6.9 I/O操纵器
6.10 小结
习题
第7章 继承和类派生
7.1 类派生
7.2 派生的类和对象
7.3 公共派生
7.4 派生原理
7.5 类派生下的访问控制
7.6 私有派生
7.7 通用类的特殊化
7.8 继承下的类型关系
7.9 对象赋值
7.10 对象复制
7.11 派生对象赋值和复制
7.12 通过派生进行对象赋值和复制
7.13 多重继承
7.14 I/O流类层次结构
7.15 小结
习题
第8章 操作符重载、迭代器和异常
8.1 操作符重载
8.2 引用计数串类
8.3 重载[]
8.4 重载++和--
8.5 灵巧的指针
8.6 迭代器
8.7 嵌套类和局部类
8.8 健壮的类
8.9 用户定义的类型转换
8.10 错误和异常处理
8.11 带异常的矩阵
8.12 管理空闲存储空间
8.13 小结
习题
第9章 面向对象程序设计技术
9.1 利用插入兼容的对象进行程序设计
9.2 运行时类型识别
9.3 通用树
9.4 设计统一的公共接口
9.5 插入兼容对象的销毁
9.6 文本行排序
9.7 接口
9.8 理解虚函数
9.9 设计继承
9.10 对象族类
9.11 小结
习题
第10章 模板
10.1 基本概念
10.2 函数模板
10.3 类模板
10.4 模板的编译
10.5 列表模板
10.6 类模板特殊化
10.7 派生类模板
10.8 通用散列表
10.9 通用编程方法
10.10 小结
习题
第11章 标准的容器
11.1 标准模板库
11.2 标准容器头
11.3 序列容器的效率
11.4 使用stack
11.5 关联容器
11.6 标准的容器迭代器和typedef
11.7 容器的通用算法
11.8 有序集合
11.9 标准函子
11.10 STL的更多信息
11.11 指向成员的指针
11.12 作为函子的实例函数
11.13 小结
习题
第12章 Web CGI程序设计
12.1 关于网络
12.2 Internet基础
12.3 万维网
12.4 什么是HTML
12.5 网页的动态生成
12.6 从C++产生的HTML
12.7 HTML的表单
12.8 HTTP消息格式
12.9 编写CGI程序
12.10 接收表单数据
12.11 处理用户反馈
12.12 更多的信息
12.13 小结
习题
第13章 面向对象的设计
13.1 分解方法
13.2 面向对象的设计原则
13.3 设计模式
13.4 CRC方法
13.5 与已有系统的接口
13.6 模拟袖珍计算器
13.7 小结
习题
第14章 编译和预处理
14.1 编译和运行C++程序
14.2 预处理
14.3 头文件
14.4 符号常量和宏
14.5 内联函数与宏
14.6 条件文本包含
14.7 一次性的头文件
14.8 标准宏
14.9 编译和执行
14.10 小结
习题
附录A C++语言结构总结
附录B 特殊成员函数总结
附录C C格式的字符串
附录D 联合与位字段
附录E 用dbx进行交互调试
附录F 参数数量可变的函数
附录G 运算符优先级
附录H 隐式类型转换
附录I 与C共用的C++库函数
附录J C格式的输入/输出
附录K 在C与C++程序间创建接口
附录L 头文件

教学资源推荐
作者: 哈罗德·阿贝尔森(Harold Abelson)[美] 杰拉尔德•杰伊·萨斯曼(Gerald Jay Sussman) 著朱莉·萨斯曼(Julie Sussman)
作者: Harvey M.Deitel,Paul J.Deitel
作者: 皮德常
作者: Bruce Eckel, Chuck Allison
参考读物推荐
作者: (英)Frank Boumphrey 等
作者: (美)Robert C.Seacord 著
作者: [巴西] 马克西米利亚诺·桑托斯(Maximiliano Santos),埃尼奥·莫拉(Enio Moura) 著