简介
p;本书主要介绍面向对象的理论及如何用C十十这个语言工具来实现面向对象编程。本书的特点是理
论与实践紧密结合,使读者在理解理论的同时,掌握如何实际实现。
本书共分为两篇:理论篇和实践篇。理论篇共六章,主要介绍面向对象的理论。实践篇共八章,主要介
绍如何用C十十实现面向对象的理论,本篇为各章设计了一个贯穿始终的实例将全书内容联系了起来。另
外还简单介绍了Windows应用程序的面向对象实现。
本书可作为计算机专业的高年级本科生或与计算机相关专业的研究生的教材,还可以作为已经掌握
了C语言的软件设计人员学习面向对象编程的参考书。
片断:
bsp;“面向对象”是软件程序设计中的一种新思想,由于这种新思想的引入,使我们的程序设
计能更加贴近现实,并且花费更小的精力。本章主要介绍“面向对象”思想的由来和面向对象
的程序设计方法
1.1面向对象思想的由来
“对象”一词在现实生活中经常会遇到,它表示现实世界中的某个具体的事物。
社会的不断进步和计算机科学的不断发展是相互促进的,一方面计算机科学的发展推
动了社会的发展,计算机的广泛应用给整个社会生产力带来了勃勃生机;另一方面社会的发
展,又给计算机科学提出了许多新的要求,计算机科学只有不断地进行自身提高和自身完
善,才能适应不断进步的社会生产力的需要。随着计算机的普及应用,人们越来越希望能更
直接与计算机进行交互,而不需要经过专门学习和长时间训练后才能使用它。这一强烈愿望
使软件设计人员的负担越来越重,也为计算机领域自身的发展提出了新的要求。利用传统的
程序设计思想无法满足这一要求,人们就开始寻求一种更能反映人类解决问题的自然方法,
“面向对象”技术就是在这样的情况下产生的。
“面向对象”技术追求的是软件系统对现实世界的直接模拟,尽量实现将现实世界中的
事物直接映射到软件系统的解空间。它希望用户用最小的气力,最大程度地利用软件系统来
解决问题。
现实世界中的事物可分为两大部分,即物质和意识,物质表达的是具体的事物;意识描
述的是某一个抽象的概念。例如“自行车”和“这辆白色的自行车”,“这辆白色的自行车”是物
质,它是具体的客观存在;“自行车”是意识,它是一个抽象的概念,是对客观存在的事物的一
种概括。这些现实世界中的事物可直接映射到面向对象系统的解空间,现实世界中的物质可
对应于面向对象系统中的“对象”,现实世界中的意识可对应面向对象系统中的抽象概念
——类。自行车在面向对象系统中可用自行车类来表达,一辆白色的自行车在面向对象系统
中是一个具体的对象,是自行车类的一个实例。
1.2面向对象程序设计
面向对象程序设计是软件系统设计与实现的新方法,这种新方法是通过增加软件可扩
充性和可重用性,来改善并提高程序员的生产能力,并控制维护软件的复杂性和软件维护的
开销。
到底什么是面向对象程序设计?在我们对它给出解释之前,需要首先讨论一下结构化
程序设计。
1.什么是结构化程序设计(StructureProgramming)
结构化程序设计是60年代诞生的,在70年代到80年代已遍及全球,成为所有软件开
发设计领域及每个程序员都采用的程序设计方法,它的产生和发展形成了现代软件工程的
基础。
结构化程序设计的设计思路是:自顶向下、逐步求精;其程序结构是按功能划分若干个
基本模块,这些模块形成一个树状结构;各模块之间的关系尽可能简单,在功能上相对独立;
每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用
子程序。
结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的手段,从而有
效地将一个较复杂的程序系统的设计任务分成许多易于控制和处理的子任务,这些子任务
都是可独立编程的子程序模块。这些子程序中的每一个都有一个清晰的界面,使用起来非常
方便。
结构化程序设计方法虽然具有很多的优点,但它仍是一种面向数据/过程的设计方法,
它把数据和过程分离为相互独立的实体,程序员在编程时必须时刻考虑所要处理的数据的
格式。对于不同的数据格式即使要做同样的处理或对相同的数据格式要做不同的处理都需
编写不同的程序。因此结构化程序的可重用性不好。另一方面,当数据和过程相互独立时,
总存在着用错误的数据调用正确的程序模块或用正确的数据调用了错误的程序模块的可能
性。因此,要使数据与程序始终保持相容,已经成为程序员的一个沉重负担。上述这些问题,
结构化程序设计方法本身是解决不了的,它需要借助于我们下面要讨论的面向对象程序设
计方法给予解决。
2.什么是面向对象程序设计(ObjectOrientedProgramming——简称OOP)
面向对象程序设计既吸取了结构化程序设计的一切优点,又考虑了现实世界与面向对
象解空间的映射关系,它所追求的目标是将现实世界的问题求解尽可能简单化。
面向对象程序设计将数据及对数据的操作放在一起,作为一个相互依存、不可分割的整
体来处理,它采用数据抽象和信息隐藏技术。它将对象及对对象的操作抽象成一种新的数据
类型——类,并且考虑不同对象之间的联系和对象类的重用性。
例如我们可以将各种各样的自行车抽象成一个自行车类,它所包含的数据内容有架子
尺寸、车轮尺寸、颜色和原材料等,它所具有的操作有转弯、移动和修理等。每一辆具体的自
行车就是属于自行车类的一个对象
目录
理论篇
第1章绪论
1.1面向对象思想的由来
1.2面向对象程序设计
1.3面向对象程序设计语言
1.4面向对象方法在大型程序设计中的应用
1.5面向对象程序设计范型
1.6面向对象方法的思维科学基础
1.6.1建立模型
1.6.2抽象思维的方法
练习题
第2章面向对象的基本概念
2.1对象
2.1.1对象的定义
2.1.2对象的划分
2.1.3对象的状态
2.1.4对象的特性
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类的确定与描述
练习题
第3章面向对象系统的特性
3.1封装性
3.1.1什么是封装
3.1.2什么是协议
3.1.3面向对象系统的封装性
3.2继承性
3.2.1继承的引入
3.2.2继承的分类
3.2.3继承与封装的关系
3.2.4继承与委托的关系
3.2.5类的层次
3.2.6单继承与多继承
3.2.7面向对象系统的继承性
3.3多态性
3.3.1重载的概念
3.3.2虚函数的概念
3.3.3抽象类的概念
3.3.4面向对象系统的多态性
练习题
第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类描述语言
练习题
第5章面向对象设计技术
5.1面向对象设计软件生命周期
5.1.1需求分析阶段
5.1.2设计阶段
5.1.3演化阶段
5.1.4维护阶段
5.2面向对象设计的方法
练习题
第6章面向对象的数据库概论
6.1什么是面向对象的数据库
6.2面向对象的数据库系统的基本性质
6.2.1必备类性质
6.2.2可选类性质
6.3面向对象的数据模型
6.3.1类
6.3.2对象和对象标识
6.3.3方法和消息传递
6.3.4类层次结构和类组合结构
练习题
实践篇
第7章类的定义及其类对象的封装性
7.1C十十类的构成
7.1.1私有成员和公有成员
7.1.2类的构造
7.2成员函数的定义
7.3类与对象
7.3.1类与对象的关系
7.3.2类的使用
7.3.3名字解析
7.4构造函数与析构函数
7.4.1构造函数
7.4.2参数化的构造函数
7.4.3缺省参数的构造函数
7.4.4多构造函数
7.4.5拷贝构造函数
7.4.6动态存储
7.4.7析构函数
7.5静态成员
7.5.1静态数据成员
7.5.2静态成员函数
7.6类对象作为成员
7.7对象数组
7.8C十+中的封装性
7.8.1对象的封装
7.8.2程序的模块化
7.9Windows类库中的类框架
7.10实例分析之一
练习题
第8章友元
8.1友元的说明和定义
8.2友元函数
8.3友元成员
8.4友元类
8.5友元举例
8.6实例分析之二
练习题
第9章重载
9.1函数重载
9.1.1构造函数重载
9.1.2类成员函数重载
9.1.3类以外的一般函数重载
9.2运算符重载
9.2.1用成员函数重载运算符
9.2.2用友元重载运算符
9.2.3十十和--的重载
9.2.4运算符[]和()的重载
9.2.5new和delete的重载
9.2.6赋值运算符的重载
9.3类型转换
9.3.1一般数据类型间的转换
9.3.2通过构造函数进行类类型转换
9.3.3类类型转换函数
9.3.4类型转换举例
9.4实例分析之三
练习题
第10章引用
10.1引用的概念
10.2引用参数
10.3引用返回值
10.4引用举例
10.5实例分析之四
练习题
第11章继承与类的派生
11.1派生类的概念
11.1.1为什么使用继承
11.1.2派生类的定义
11.1.3派生类对基类成员的访问权
11.1.4派生类的构造函数和析构函数
11.2派生类对基类成员的继承
11.2.1如何访问基类私有成员
11.2.2通过访问声明调整访问域
11.3多继承
11.3.1多继承的概念
11.3.2多继承的定义
11.3.3多继承的构造函数与析构函数
11.3.4虚基类
11.4Windows应用程序中继承性的使用
11.4.1ObjectWindows类库中的继承性
11.4.2Windows应用程序的建立
11.5实例分析之五
练习题
第12章多态性与虚函数
12.1多态性在C十十中的体现
12.1.1编译时的多态性
12.1.2运行时的多态性
12.2虚函数
12.2.1对象指针
12.2.2为什么要引入虚函数
12.2.3虚函数的定义及使用
12.2.4虚函数举例
12.3抽象类
12.3.1纯虚函数与抽象类
12.3.2纯虚函数多态性的体现
12.4Windows应用程序中多态性的使用
12.5实例分析之六
练习题
第13章类属
13.1类属
13.1.1为什么要引入类属编程
13.1.2类属表
13.1.3从类属表中导出栈和队列
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图
练习题
第14章C十十的I/O流库
14.1C十十流库结构
14.1.1流库的概念
14.1.2streambuf类
14.1.3ios类
14.2一般的输入/输出
14.2.1输入/输出类定义
14.2.2输入/输出运算符的使用
14.2.3格式控制的输入/输出
14.3用户自定义类型的输入/输出
14.3.1重载输入运算符“》”
14.3.2重载输出运算符“《”
14.3.3重载运算符“《”,“》”应用举例
14.4文件的输入/输出
14.4.1文件的打开与关闭
14.4.2文件的读写
14.5实例分析之七
14.6实例综述
练习题
第1章绪论
1.1面向对象思想的由来
1.2面向对象程序设计
1.3面向对象程序设计语言
1.4面向对象方法在大型程序设计中的应用
1.5面向对象程序设计范型
1.6面向对象方法的思维科学基础
1.6.1建立模型
1.6.2抽象思维的方法
练习题
第2章面向对象的基本概念
2.1对象
2.1.1对象的定义
2.1.2对象的划分
2.1.3对象的状态
2.1.4对象的特性
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类的确定与描述
练习题
第3章面向对象系统的特性
3.1封装性
3.1.1什么是封装
3.1.2什么是协议
3.1.3面向对象系统的封装性
3.2继承性
3.2.1继承的引入
3.2.2继承的分类
3.2.3继承与封装的关系
3.2.4继承与委托的关系
3.2.5类的层次
3.2.6单继承与多继承
3.2.7面向对象系统的继承性
3.3多态性
3.3.1重载的概念
3.3.2虚函数的概念
3.3.3抽象类的概念
3.3.4面向对象系统的多态性
练习题
第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类描述语言
练习题
第5章面向对象设计技术
5.1面向对象设计软件生命周期
5.1.1需求分析阶段
5.1.2设计阶段
5.1.3演化阶段
5.1.4维护阶段
5.2面向对象设计的方法
练习题
第6章面向对象的数据库概论
6.1什么是面向对象的数据库
6.2面向对象的数据库系统的基本性质
6.2.1必备类性质
6.2.2可选类性质
6.3面向对象的数据模型
6.3.1类
6.3.2对象和对象标识
6.3.3方法和消息传递
6.3.4类层次结构和类组合结构
练习题
实践篇
第7章类的定义及其类对象的封装性
7.1C十十类的构成
7.1.1私有成员和公有成员
7.1.2类的构造
7.2成员函数的定义
7.3类与对象
7.3.1类与对象的关系
7.3.2类的使用
7.3.3名字解析
7.4构造函数与析构函数
7.4.1构造函数
7.4.2参数化的构造函数
7.4.3缺省参数的构造函数
7.4.4多构造函数
7.4.5拷贝构造函数
7.4.6动态存储
7.4.7析构函数
7.5静态成员
7.5.1静态数据成员
7.5.2静态成员函数
7.6类对象作为成员
7.7对象数组
7.8C十+中的封装性
7.8.1对象的封装
7.8.2程序的模块化
7.9Windows类库中的类框架
7.10实例分析之一
练习题
第8章友元
8.1友元的说明和定义
8.2友元函数
8.3友元成员
8.4友元类
8.5友元举例
8.6实例分析之二
练习题
第9章重载
9.1函数重载
9.1.1构造函数重载
9.1.2类成员函数重载
9.1.3类以外的一般函数重载
9.2运算符重载
9.2.1用成员函数重载运算符
9.2.2用友元重载运算符
9.2.3十十和--的重载
9.2.4运算符[]和()的重载
9.2.5new和delete的重载
9.2.6赋值运算符的重载
9.3类型转换
9.3.1一般数据类型间的转换
9.3.2通过构造函数进行类类型转换
9.3.3类类型转换函数
9.3.4类型转换举例
9.4实例分析之三
练习题
第10章引用
10.1引用的概念
10.2引用参数
10.3引用返回值
10.4引用举例
10.5实例分析之四
练习题
第11章继承与类的派生
11.1派生类的概念
11.1.1为什么使用继承
11.1.2派生类的定义
11.1.3派生类对基类成员的访问权
11.1.4派生类的构造函数和析构函数
11.2派生类对基类成员的继承
11.2.1如何访问基类私有成员
11.2.2通过访问声明调整访问域
11.3多继承
11.3.1多继承的概念
11.3.2多继承的定义
11.3.3多继承的构造函数与析构函数
11.3.4虚基类
11.4Windows应用程序中继承性的使用
11.4.1ObjectWindows类库中的继承性
11.4.2Windows应用程序的建立
11.5实例分析之五
练习题
第12章多态性与虚函数
12.1多态性在C十十中的体现
12.1.1编译时的多态性
12.1.2运行时的多态性
12.2虚函数
12.2.1对象指针
12.2.2为什么要引入虚函数
12.2.3虚函数的定义及使用
12.2.4虚函数举例
12.3抽象类
12.3.1纯虚函数与抽象类
12.3.2纯虚函数多态性的体现
12.4Windows应用程序中多态性的使用
12.5实例分析之六
练习题
第13章类属
13.1类属
13.1.1为什么要引入类属编程
13.1.2类属表
13.1.3从类属表中导出栈和队列
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图
练习题
第14章C十十的I/O流库
14.1C十十流库结构
14.1.1流库的概念
14.1.2streambuf类
14.1.3ios类
14.2一般的输入/输出
14.2.1输入/输出类定义
14.2.2输入/输出运算符的使用
14.2.3格式控制的输入/输出
14.3用户自定义类型的输入/输出
14.3.1重载输入运算符“》”
14.3.2重载输出运算符“《”
14.3.3重载运算符“《”,“》”应用举例
14.4文件的输入/输出
14.4.1文件的打开与关闭
14.4.2文件的读写
14.5实例分析之七
14.6实例综述
练习题
面向对象的理论与C++实践
- 名称
- 类型
- 大小
光盘服务联系方式: 020-38250260 客服QQ:4006604884
云图客服:
用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问
Video Player
×
Audio Player
×
pdf Player
×