面向对象的理论 与c+实践 王燕编著 清华大学出版社圈
面向对象的理论与C++实践 王燕编著 清华大学出版社
(京)新登字158号 内容简介 本书主要介绍面向对象的理论及如何用C++这个语言工具来实现面向对象编程。本书的特点是理 论与实践紧密结合,使读者在理解理论的同时,掌握如何实际实现 本书共分为两篇:理论篇和实践篇。理论篇共六章,主要介绍面问对象的理论。实践箱共八章,主要 介绍如何用C++实现面向对象的理论,本篇为各章设计了一个贯穿始终的实例将全书内容联系了起来。 另外还简单介绍了 Windows应用程序的面向对象实现。 本书可作为计算机专业的高年级本科生或与计算机相关专业的研究生的教材,还可以作为已经掌握 了C语言的软件设计人员学习面向对象编程的参考书。 版权所有,翻印必究。 本书封面贴有清华大学出版社激光防伪标签,无标签者不得销售。 图书在版编目(CIP)数据 面向对象的理论与C++实践/王燕编著,一北京:清华大学出版社,1996 lSBN7-302022690 I.面…Ⅱ.王…Ⅲ.面向对象语言:C语言-程序设计Ⅳ.TP312C 中国版本图书馆CmP数据核字(96)第14339号 出版者:清华大学出版社(北京清华大学校内,邮编100084) 印刷者:北京丰华印刷厂 发行者:新华书店总店北京科技发行所 开本:787×10921/16印张:25字数:624千字 版次:1997年2月第1版1997年2月第1次印刷 书号:lSBN7-302-022690/TP·1111 印数:0001—5000 定价:26.00元
前言 面向对象技术是计算机应用领域最近几年迅速发展起来的一个新生事物,它的出现被 认为是程序设计方法学方面的一场实质性革命。它与传统的结构化程序设计相比较,具有 许多优点,但最主要的是它注意了数据与程序之间不可分割的内在联系,并把它们进行数据 抽象,封装成一个统一的整体,从而使程序设计者摆脱具体的数据格式和过程的束缚,将精 力集中于要处理的对象的设计和研究上大大减少了软件开发很难避免的繁杂性;大大提高 了软件开发的效率和效益。 C++是一种混合型的面向对象程序设计语言。它既具有独特的面向对象特征,可以 为面向对象技术提供全面支持;又具有对传统C语言的向后兼容性,很多已有的程序稍加 改造就可以重用,许多有效的算法也可以继续利用。因此,目前它是实现面向对象理论与技 术的比较通行和适用的手段。要想理解把握C++语言,离不开面向对象技术的理论指导, 而介绍论述面向对象技术也无法不结合对C++语言的运用 随着经济建设和高新科技的飞速发展以及计算机应用技术的逐渐普及,科技人才的培 养也在不断调整思路和规范。我国许多高等院校的计算机等专业近年来先后将《面向对象 的理论与实践》列入教学计划,作为高年级专业课开设。目前专门论述面向对象的理论与技 术的书籍不多,适于作高等院校教材的出版物更尚未见。一些介绍C++的书籍虽不少见, 但多数只将它作为一种简单的程序设计语言对待,只着重介绍它的语法功能,而忽略它与面 向对象理论的紧密联系本书根据计算机应用专业课程教学的需要,总结与吸收国内外有 关科技研究成果,试图从理论与实践的结合上介绍面向对象技术,既阐述面向对象的理论, 又分析这些理论如何用C++语言来实现;对C++语言也侧重分析它的语法现象与面向 对象系统各个特征的关系,使读者学完此书,既掌握了面向对象的理论,又提高用C++设 计语言解决实际问题的能力。 本书分为两大部分: 第一部分为理论篇,共分为六章。重点介绍面向对象思想的由来;面向对象的基本概 念;面向对象系统的各个特性;如何进行面向对象的分析和设计以及面向对象的数据库等。 第二部分为实践篇,共分为八章。重点介绍类的定义及面向对象系统的封装性;如何使 用友元来访问被封装起来的类对象的私有成员;如何使用重载和虚函数概念来实现面向对 象系统的多态性;如何实现继承机制;如何使用类属编程将要处理的数据的类型进行抽象, 得到通用的程序版本,以及如何使用C+流库进行输入/输出流的处理。 本书在几个章节中还介绍了 Windows应用程序的面向对象实现。 本书实践篇为各章设计了一个贯穿始终的实例将全书内容联系了起来。如同剥笋,结 合各章节的介绍和论述,一层一层逐步地展现与分析这个实例,最后稍加补充完善,再回观 全书,面向对象的理论与实践作为一个综合整体就呈现在读者面前了 在本书的编写和出版过程中,得到了清华大学出版社的姜峰先生的热情帮助,他对本书
的内容编排提出了许多宝贵的意见,使本书的结构格局更趋合理和完善。在此向他和所有 支持帮助我的同志致以最衷心的谢意。 作者 1996年4月
浮得 理论篇 第1章绪论 31.2什么是协议… 1.1面向对象思想的由来… 31.3面向对象系统的封装性 1.2面向对象程序设计…………… 3.2继承性 .3面向对象程序设计语言……………5 3.21继承的引入 1,4面向对象方法在大型程序设计中的 3.2.2继承的分类 ……21 323继承与封装的关系… 1.5面向对象程序设计范型 3.2.4继承与委托的关系……22 1.6面向对象方法的思维科学基础………8 3.2.5类的层次… 1.6.1建立模型 326单继承与多继承 1,6,2抽象思维的方法 10 327面向对象系统的继承性……23 练习题 10 3.3多态性 331重载的概念………… 3.3.2虚函数的概念……24 第2章面向对象的基本概念………12 333抽象类的概念…………25 2.1对象… 334面向对象系统的多态性……25 对象的定义 练习题 2.1.2对象的划分…………13 2.1.3对象的状态 ……13第4章面向对象分析…………2 21.4对象的特性… 4.1概念模型………… 2.2消息…… 4.1.1为什么要建立概念模型…… 2.2.1什么是消息… 4.1.2概念间的关系…… 2.2.2公有消息和私有消息……15 4.1.3信息系统的概念模型 2-2.3特定于对象的消息…………164.2用面向对象方法建立概念模型…………27 2.24消息序列 4.21识别对象和类……127 4.2.2对象间的通讯 23.1类的定义…………………1 4.23对象关系图示—类图……29 23,2类与实例的关系……1 4.24类描述语言 23.3类的确定与描述… 练习题 练习题………18 第5章面向对象设计技术……… 第3章面向对象系统的特性…1951面向对象设计软件生命周期…… 3.1封装性…… 51.1需求分析阶段 5588 31.1什么是封装……… 5.1.2设计阶段
5.1.3演化阶段………………40 6.2.1必备类性质 5.1.4维护阶段… 6.2.2可选类性质……… 5.2面向对象没计的方法………………41 6.3面向对象的数据模型……… 练习顯……… 1类 6.32对象和对象标识 第6章面向对象的数据库概论……43 3.3方法和消息传递… 6.1什么是面向对象的数据库…… 6.3.4类层次结构和类组合结构…48 6.2面向对象的数据库系统的基本性质…44 练习题 48 实践篇 第7章类的定义及其类对象的 8.1友元的说明和定义… 封装性 8.2友元函数…… 7.1C++类的构成……………… 83友元成员 71.1私有成员和公有成员…………51 8.4友元类……… 7.1.2类的构造 85友元举例 7.2成员函数的定义 8.6实例分析之二… 7.3类与对象……………… 练习题……………… 7.31类与对象的关系……………54 7.32类的使用… 第9章重载 7.33名字解析… 9.1函数重载…… 7.4构造函数与析构函数… 9.1.1构造函数重载…… 7.4.1构造函数…… 9.1.2类成员函数重载……………109 7.4,2参数化的构造函数 59 91.3类以外的一般函数重载……111 74.3缺省参数的构造函数 9.2运算符重载 7.44多构造函数 9.2.1用成员函数重载运算符…113 74.5拷贝构造函数 92.2用友元重载运算符 116 7.4.6动态存储 9.2.3++和一一的重载… 7.4.7析构函数 9.2.4运算符f]和()的重载……128 7.5静态成员 9.2.5w和 delete的重载 7.5.1静态数据成员 926風值运算符的重载 7.52静态成员函数… 9.3类型转换… 7.6类对象作为成员 9.3.1一般数据类型间的转换……134 7.7对象数绢 9.3.2通过构造函数进行类类型 7.8C++中的封装性… 转换 137 7.8.1对象的封装 9.33类类型转换函数 7.8.2程序的模块化……… 9.3.4类型转换举例 7.9 Windows类库中的类框架 9.4实例分析之三 7.10实例分析之 88练习题 练习题 第10章引用………………………146 第8章友元…………………………9410.1引用的概念…
10.2引用参数……………… 12.3.2纯虚函数多态性的体现…245 10.3引用返间值…… 124 Windows应用程序中多态性的 10.4引用举例…… 使用 10.5实例分析之四………………………161 125实例分析之六…… 练习题…………………… 练习题 第11章继承与类的派生 …165第13章类属 269 11.1派生类的概念……………………165 31类属…………………… 11,1.1为什么使用继承 13.1.1为什么要引入类属编程…269 1.1.2派生类的定义… 13.1.2类属表 11.1.3派生类对基类成员的 13.1.3从类属表中导出栈 访问间权 和队列…… 11.1.4派生类的构造函数和 3.2模板 析构函数 176 13.2.1模板的慨念… 11.2派生类对基类成员的继承…………183 13.2.2函数模板与模板函数……277 如何访问基类私有成员…183 13.2.3类模板与模板类…………281 11.2.2通过访问声明谢整 13.3利用模板工具实现类属机制实例…28 13.3.1栈 11.3多继承… 13.3.2队列 多继承的概念…………194 13.3.3数组… 11.3.2多继承的定义……………194 13.34稀疏矩阵…………… 11.3.3多继承的构造函数与 13.35图…… 326 析构函数…… 练习题……………… 11.3.4虛基类 11.4 Windows应用程序中继承性的 第14章C++的1/O流库 使用 14.1C++流库结构 11.4.1 Object Windows类库中的 1.1.1流库的概念 继承性……………………211 14.1,2 streambuf类 11.42 Windows应用程序的 1.3ios类… 立 213 14.2一般的输入/输出 11.5实例分析之五………………………215 14.2.1输入/输出类定义 练习题…… 14.2.2输入/输出运算符的使用…341 14.2.3格式控制的输入/输出…343 第12章多态性与虚函数 219 14.3用户自定义类型的输入/输出………351 12.1多性在C++中的体现 219 14.3.1重载输入运算符“》"……351 12.1.1编译时的多态性…………219 14.32重教输出运算符“《”-…353 12.1.2运行时的多态性…… 14.3.3重载运算符“《”,“》” 12.2虚函数 应用举例 12.2.1对象指针 …22214.4文件的输入/输出……… 12.2.2为什么要引入虚函数 14.4.1文件的打开与关闭………357 12.2.3虚函数的定义及使用…228 14.4.2文件的读写 2.2.4虚函数举例 234 145实例分析之七……… 12.3抽象类 14.6实例综述 12.3.1纯函数与抽象类… 3练习题
料排理里