- 机械工业出版社
- 9787111605614
- 1-6
- 49260084-6
- 16开
- 2018-08-22
- 477
- 工学
- 计算机类
- 计算机科学与技术
- 本科
内容简介
本书全面细致地讲授面向对象的概念、方法和应用,突出面向对象程序设计的思想,并以C#为载体来实现面向对象的设计。本书按面向对象的设计方法来归类章节,分为15章,包括类和对象,封装,继承,多态,程序的调试和异常处理,接口和多态的实现,静态类和密封类,值类型和引用类型,索引器,泛型,集合,Windows窗体应用程序,文件操作,委托和事件,多线程编程。本书概念清晰,定义准确,例题实用,习题丰富,是一本真正简明易学的面向对象程序设计的教材。
本书可作为高等院校计算机专业及相关专业的C#面向对象程序设计课程的教材,同时也可作为各类面向对象的C#程序设计培训班的教学用书。
本书配有授课用课件、重点难点的授课视频等资源,并提供所有例题、课堂练习和习题的源代码,可以在阅读时扫描二维码查看或下载,也可登录www.cmpedu.com免费注册,审核通过后下载或联系编辑索取(QQ:2966938356,电话:010-88379739)。
本书可作为高等院校计算机专业及相关专业的C#面向对象程序设计课程的教材,同时也可作为各类面向对象的C#程序设计培训班的教学用书。
本书配有授课用课件、重点难点的授课视频等资源,并提供所有例题、课堂练习和习题的源代码,可以在阅读时扫描二维码查看或下载,也可登录www.cmpedu.com免费注册,审核通过后下载或联系编辑索取(QQ:2966938356,电话:010-88379739)。
目录
目 录
前言
第1章 类和对象1
1.1 面向对象的概念1
1.1.1 对象抽象成类1
1.1.2 由类创建对象3
1.1.3 对象之间的通信4
1.1.4 面向对象开发的特点4
1.2 定义类、创建对象4
1.2.1 定义类4
1.2.2 类的成员4
1.2.3 成员变量8
1.3 创建对象9
1.3.1 对象的声明与实例化9
1.3.2 对象成员的访问10
1.3.3 类和对象应用示例10
1.4 命名空间12
1.4.1 命名空间概述12
1.4.2 命名空间的声明12
1.4.3 导入其他命名空间14
1.4.4 命名空间的嵌套14
1.5 习题15
第2章 封装16
2.1 封装的概念16
2.2 类的属性18
2.2.1 属性的声明18
2.2.2 属性的访问21
2.3 方法重载21
2.4 构造函数24
2.4.1 构造函数的概念24
2.4.2 构造函数的定义25
2.4.3 构造函数的分类26
2.4.4 调用构造函数26
2.4.5 构造函数的重载28
2.5 习题30
第3章 继承32
3.1 继承的概念32
3.2 派生类及其特性33
3.2.1 声明派生类33
3.2.2 继承的特性36
3.3 继承与访问修饰符38
3.4 继承与构造函数39
3.5 里氏替换原则44
3.5.1 里氏替换原则概述44
3.5.2 派生类对象能够替换基类对象44
3.5.3 类的引用45
3.5.4 隐藏基类中的成员47
3.6 习题47
第4章 多态49
4.1 多态的概念49
4.2 使用重写和虚方法实现多态50
4.2.1 重写的概念50
4.2.2 在派生类中使用new关键字实现覆盖性重写50
4.2.3 使用虚方法实现多态性重写52
4.3 使用抽象类和抽象方法实现多态56
4.3.1 抽象类的概念56
4.3.2 抽象类和抽象方法的定义57
4.3.3 重载抽象方法58
4.3.4 理解多态58
4.4 对象类型的转换与判断61
4.4.1 向上转换类型(隐式转换类型)61
4.4.2 向下转换类型(强制转换类型)63
4.4.3 使用as和is运算符66
4.5 习题68
第5章 程序的调试和异常处理70
5.1 程序的调试70
5.1.1 调试工具70
5.1.2 设置断点71
5.1.3 调试的过程72
5.2 错误与异常概述75
5.2.1 错误与异常的区别76
5.2.2 异常处理77
5.3 C#中的异常处理79
5.3.1 使用try…catch处理异常79
5.3.2 使用try…catch…finally处理异常82
5.3.3 异常处理的指导原则和特点87
5.3.4 使用throw抛出异常87
5.4 习题88
第6章 接口和多态的实现92
6.1 接口概述92
6.1.1 接口的概念92
6.1.2 接口的声明92
6.1.3 接口的实现95
6.1.4 接口成员的实现96
6.1.5 接口映射98
6.1.6 重新实现接口99
6.1.7 接口的本质100
6.2 多态的实现101
6.2.1 抽象类与普通类的对比101
6.2.2 抽象类与接口的对比101
6.2.3 抽象类和接口的使用场合102
6.2.4 使用抽象类和接口实现多态103
6.3 习题106
第7章 静态类和密封类108
7.1 静态成员108
7.1.1 静态成员概述108
7.1.2 静态字段108
7.1.3 静态方法111
7.1.4 静态成员总结112
7.1.5 静态方法与实例方法的区别112
7.2 String类的常用方法113
7.2.1 String类的常用静态方法113
7.2.2 String类的常用实例方法116
7.3 静态类118
7.3.1 静态类的定义118
7.3.2 访问静态类的成员119
7.3.3 静态构造函数120
7.4 密封类和密封方法122
7.4.1 密封类的定义122
7.4.2 密封方法123
7.5 习题124
第8章 值类型和引用类型126
8.1 值类型和引用类型简介126
8.1.1 栈空间和堆空间126
8.1.2 值类型和引用类型的定义127
8.2 方法的参数类型131
8.2.1 C#中方法的参数132
8.2.2 值参数132
8.2.3 引用参数133
8.2.4 输出参数134
8.2.5 数目可变参数135
8.2.6 可选参数136
8.2.7 命名参数137
8.2.8 方法解析138
8.3 值类型和引用类型的应用138
8.3.1 值类型参数按值方式传递138
8.3.2 值类型参数按引用方式传递139
8.3.3 引用类型参数按值方式传递139
8.3.4 引用类型参数按引用方式传递140
8.4 相等判断141
8.4.1 静态ReferenceEquals()方法141
8.4.2 = =运算符142
8.4.3 实例Equals()方法142
8.4.4 静态Equals()方法144
8.4.5 三种比较方法的异同144
8.5 字符串的存储原理145
8.6 常量、枚举和结构148
8.6.1 常量148
8.6.2 枚举类型151
8.6.3 结构类型153
8.7 装箱和拆箱155
8.8 习题156
第9章 索引器159
9.1 索引器的概念159
9.2 定义索引器159
9.3 索引器的使用161
9.4 使用其他非整数的索引类型162
9.5 索引器与属性的比较164
9.6 接口中的索引器165
9.7 习题168
第10章 泛型170
10.1 泛型的概念170
10.2 泛型类171
10.2.1 定义泛型类171
10.2.2 泛型类对象的创建172
10.2.3 泛型类的应用173
10.3 泛型类中数据类型的约束173
10.3.1 泛型类约束的概念173
10.3.2 使用where约束类型174
10.3.3 where约束的应用179
10.4 泛型类的静态成员181
10.5 泛型类的继承182
10.6 泛型方法185
10.6.1 泛型方法的声明185
10.6.2 调用泛型方法192
10.6.3 泛型方法的应用193
10.7 泛型参数的转换195
10.8 泛型接口196
10.9 习题197
第11章 集合199
11.1 集合的概念199
11.2 ArryList类集合199
11.2.1 创建ArrayList类的对象200
11.2.2 ArrayList类的构造函数、属性和方法200
11.2.3 ArrayList类的操作201
11.3 Hashtable类集合204
11.3.1 创建Hashtable类的对象204
11.3.2 Hashtable类的构造函数、 属性和方法204
11.3.3 Hashtable类的操作205
11.3.4 Hashtable类的应用206
11.4 List泛型集合类209
11.4.1 创建List类的对象209
11.4.2 List类的构造函数、属性和方法210
11.4.3 List类的操作211
11.4.4 List类与ArrayList类的区别212
11.4.5 List类的应用213
11.5 Dictionary类214
11.5.1 创建Dictionary类的对象215
11.5.2 Dictionary类的构造函数、属性和方法215
11.5.3 Dictionary类的操作216
11.5.4 Dictionary类的应用217
11.6 HashSet类218
11.6.1 创建HashSet类的对象218
11.6.2 HashSet类的构造函数、属性和方法218
11.6.3 HashSet类的特点219
11.6.4 HashSet类的操作219
11.6.5 HashSet类的应用221
11.7 比较接口在集合排序中的应用222
11.7.1 IComparable和IComparable接口222
11.7.2 IComparer和IComparer接口224
11.8 习题226
第12章 Windows窗体应用程序229
12.1 Windows窗体229
12.1.1 创建Windows窗体应用程序229
12.1.2 Form类231
12.1.3 Application类234
12.2 创建Windows窗体应用程序的步骤235
12.2.1 设计要求及设计方法分析235
12.2.2 创建应用程序项目236
12.2.3 设计应用程序界面236
12.2.4 设置对象属性237
12.2.5 编写程序代码237
12.2.6 运行和调试程序238
12.3 常用控件的使用238
12.3.1 Control类239
12.3.2 基本控件239
12.3.3 选择类常用控件243
12.3.4 图片框和图片列表框250
12.3.5 Timer控件252
12.3.6 焦点与Tab键顺序252
12.4 使用控件类创建动态控件253
12.4.1 控件类的实例化254
12.4.2 控件对象的事件委托254
12.4.3 使用动态控件254
12.4.4 访问动态控件的属性254
12.5 习题255
第13章 文件操作261
13.1 文件概述261
13.2 文件操作类262
13.2.1 Directory类262
13.2.2 DirectoryInfo类264
13.2.3 File类266
13.2.4 FileInfo类267
13.2.5 DriveInfo类269
13.3 数据流269
13.3.1 流的操作269
13.3.2 文件流(FileStream类)270
13.3.3 文本文件的读写操作273
13.4 习题276
第14章 委托和事件279
14.1 委托279
14.1.1 委托的定义279
14.1.2 委托的实例化和调用280
14.1.3 将多个方法关联到委托281
14.2 事件283
14.2.1 关于事件的几个概念283
14.2.2 定义和使用事件284
14.2.3 事件的参数286
14.2.4 了解控件的预定义事件289
14.3 习题289
第15章 多线程编程291
15.1 进程和线程的概念291
15.1.1 进程291
15.1.2 线程291
15.1.3 线程和进程的比较292
15.1.4 单线程与多线程程序292
15.2 线程的基本操作293
15.2.1 Thread类的属性和方法293
15.2.2 创建线程293
15.2.3 线程的控制294
15.3 多线程同步298
15.3.1 多线程同步概述298
15.3.2 lock(加锁)298
15.3.3 Monitor(监视器)299
15.3.4 Mutex(互斥体)300
15.4 使用backgroundWorker组件300
15.4.1 backgroundWorker组件的常用属性、事件和方法300
15.4.2 使用backgroundWorker组件时应注意的问题301
15.5 习题303
参考文献304
前言
第1章 类和对象1
1.1 面向对象的概念1
1.1.1 对象抽象成类1
1.1.2 由类创建对象3
1.1.3 对象之间的通信4
1.1.4 面向对象开发的特点4
1.2 定义类、创建对象4
1.2.1 定义类4
1.2.2 类的成员4
1.2.3 成员变量8
1.3 创建对象9
1.3.1 对象的声明与实例化9
1.3.2 对象成员的访问10
1.3.3 类和对象应用示例10
1.4 命名空间12
1.4.1 命名空间概述12
1.4.2 命名空间的声明12
1.4.3 导入其他命名空间14
1.4.4 命名空间的嵌套14
1.5 习题15
第2章 封装16
2.1 封装的概念16
2.2 类的属性18
2.2.1 属性的声明18
2.2.2 属性的访问21
2.3 方法重载21
2.4 构造函数24
2.4.1 构造函数的概念24
2.4.2 构造函数的定义25
2.4.3 构造函数的分类26
2.4.4 调用构造函数26
2.4.5 构造函数的重载28
2.5 习题30
第3章 继承32
3.1 继承的概念32
3.2 派生类及其特性33
3.2.1 声明派生类33
3.2.2 继承的特性36
3.3 继承与访问修饰符38
3.4 继承与构造函数39
3.5 里氏替换原则44
3.5.1 里氏替换原则概述44
3.5.2 派生类对象能够替换基类对象44
3.5.3 类的引用45
3.5.4 隐藏基类中的成员47
3.6 习题47
第4章 多态49
4.1 多态的概念49
4.2 使用重写和虚方法实现多态50
4.2.1 重写的概念50
4.2.2 在派生类中使用new关键字实现覆盖性重写50
4.2.3 使用虚方法实现多态性重写52
4.3 使用抽象类和抽象方法实现多态56
4.3.1 抽象类的概念56
4.3.2 抽象类和抽象方法的定义57
4.3.3 重载抽象方法58
4.3.4 理解多态58
4.4 对象类型的转换与判断61
4.4.1 向上转换类型(隐式转换类型)61
4.4.2 向下转换类型(强制转换类型)63
4.4.3 使用as和is运算符66
4.5 习题68
第5章 程序的调试和异常处理70
5.1 程序的调试70
5.1.1 调试工具70
5.1.2 设置断点71
5.1.3 调试的过程72
5.2 错误与异常概述75
5.2.1 错误与异常的区别76
5.2.2 异常处理77
5.3 C#中的异常处理79
5.3.1 使用try…catch处理异常79
5.3.2 使用try…catch…finally处理异常82
5.3.3 异常处理的指导原则和特点87
5.3.4 使用throw抛出异常87
5.4 习题88
第6章 接口和多态的实现92
6.1 接口概述92
6.1.1 接口的概念92
6.1.2 接口的声明92
6.1.3 接口的实现95
6.1.4 接口成员的实现96
6.1.5 接口映射98
6.1.6 重新实现接口99
6.1.7 接口的本质100
6.2 多态的实现101
6.2.1 抽象类与普通类的对比101
6.2.2 抽象类与接口的对比101
6.2.3 抽象类和接口的使用场合102
6.2.4 使用抽象类和接口实现多态103
6.3 习题106
第7章 静态类和密封类108
7.1 静态成员108
7.1.1 静态成员概述108
7.1.2 静态字段108
7.1.3 静态方法111
7.1.4 静态成员总结112
7.1.5 静态方法与实例方法的区别112
7.2 String类的常用方法113
7.2.1 String类的常用静态方法113
7.2.2 String类的常用实例方法116
7.3 静态类118
7.3.1 静态类的定义118
7.3.2 访问静态类的成员119
7.3.3 静态构造函数120
7.4 密封类和密封方法122
7.4.1 密封类的定义122
7.4.2 密封方法123
7.5 习题124
第8章 值类型和引用类型126
8.1 值类型和引用类型简介126
8.1.1 栈空间和堆空间126
8.1.2 值类型和引用类型的定义127
8.2 方法的参数类型131
8.2.1 C#中方法的参数132
8.2.2 值参数132
8.2.3 引用参数133
8.2.4 输出参数134
8.2.5 数目可变参数135
8.2.6 可选参数136
8.2.7 命名参数137
8.2.8 方法解析138
8.3 值类型和引用类型的应用138
8.3.1 值类型参数按值方式传递138
8.3.2 值类型参数按引用方式传递139
8.3.3 引用类型参数按值方式传递139
8.3.4 引用类型参数按引用方式传递140
8.4 相等判断141
8.4.1 静态ReferenceEquals()方法141
8.4.2 = =运算符142
8.4.3 实例Equals()方法142
8.4.4 静态Equals()方法144
8.4.5 三种比较方法的异同144
8.5 字符串的存储原理145
8.6 常量、枚举和结构148
8.6.1 常量148
8.6.2 枚举类型151
8.6.3 结构类型153
8.7 装箱和拆箱155
8.8 习题156
第9章 索引器159
9.1 索引器的概念159
9.2 定义索引器159
9.3 索引器的使用161
9.4 使用其他非整数的索引类型162
9.5 索引器与属性的比较164
9.6 接口中的索引器165
9.7 习题168
第10章 泛型170
10.1 泛型的概念170
10.2 泛型类171
10.2.1 定义泛型类171
10.2.2 泛型类对象的创建172
10.2.3 泛型类的应用173
10.3 泛型类中数据类型的约束173
10.3.1 泛型类约束的概念173
10.3.2 使用where约束类型174
10.3.3 where约束的应用179
10.4 泛型类的静态成员181
10.5 泛型类的继承182
10.6 泛型方法185
10.6.1 泛型方法的声明185
10.6.2 调用泛型方法192
10.6.3 泛型方法的应用193
10.7 泛型参数的转换195
10.8 泛型接口196
10.9 习题197
第11章 集合199
11.1 集合的概念199
11.2 ArryList类集合199
11.2.1 创建ArrayList类的对象200
11.2.2 ArrayList类的构造函数、属性和方法200
11.2.3 ArrayList类的操作201
11.3 Hashtable类集合204
11.3.1 创建Hashtable类的对象204
11.3.2 Hashtable类的构造函数、 属性和方法204
11.3.3 Hashtable类的操作205
11.3.4 Hashtable类的应用206
11.4 List
11.4.1 创建List
11.4.2 List
11.4.3 List
11.4.4 List
11.4.5 List
11.5 Dictionary
11.5.1 创建Dictionary
11.5.2 Dictionary
11.5.3 Dictionary
11.5.4 Dictionary
11.6 HashSet
11.6.1 创建HashSet
11.6.2 HashSet
11.6.3 HashSet
11.6.4 HashSet
11.6.5 HashSet
11.7 比较接口在集合排序中的应用222
11.7.1 IComparable和IComparable
11.7.2 IComparer和IComparer
11.8 习题226
第12章 Windows窗体应用程序229
12.1 Windows窗体229
12.1.1 创建Windows窗体应用程序229
12.1.2 Form类231
12.1.3 Application类234
12.2 创建Windows窗体应用程序的步骤235
12.2.1 设计要求及设计方法分析235
12.2.2 创建应用程序项目236
12.2.3 设计应用程序界面236
12.2.4 设置对象属性237
12.2.5 编写程序代码237
12.2.6 运行和调试程序238
12.3 常用控件的使用238
12.3.1 Control类239
12.3.2 基本控件239
12.3.3 选择类常用控件243
12.3.4 图片框和图片列表框250
12.3.5 Timer控件252
12.3.6 焦点与Tab键顺序252
12.4 使用控件类创建动态控件253
12.4.1 控件类的实例化254
12.4.2 控件对象的事件委托254
12.4.3 使用动态控件254
12.4.4 访问动态控件的属性254
12.5 习题255
第13章 文件操作261
13.1 文件概述261
13.2 文件操作类262
13.2.1 Directory类262
13.2.2 DirectoryInfo类264
13.2.3 File类266
13.2.4 FileInfo类267
13.2.5 DriveInfo类269
13.3 数据流269
13.3.1 流的操作269
13.3.2 文件流(FileStream类)270
13.3.3 文本文件的读写操作273
13.4 习题276
第14章 委托和事件279
14.1 委托279
14.1.1 委托的定义279
14.1.2 委托的实例化和调用280
14.1.3 将多个方法关联到委托281
14.2 事件283
14.2.1 关于事件的几个概念283
14.2.2 定义和使用事件284
14.2.3 事件的参数286
14.2.4 了解控件的预定义事件289
14.3 习题289
第15章 多线程编程291
15.1 进程和线程的概念291
15.1.1 进程291
15.1.2 线程291
15.1.3 线程和进程的比较292
15.1.4 单线程与多线程程序292
15.2 线程的基本操作293
15.2.1 Thread类的属性和方法293
15.2.2 创建线程293
15.2.3 线程的控制294
15.3 多线程同步298
15.3.1 多线程同步概述298
15.3.2 lock(加锁)298
15.3.3 Monitor(监视器)299
15.3.4 Mutex(互斥体)300
15.4 使用backgroundWorker组件300
15.4.1 backgroundWorker组件的常用属性、事件和方法300
15.4.2 使用backgroundWorker组件时应注意的问题301
15.5 习题303
参考文献304
















