描述
开 本: 128开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787115602312
1.通过面向对象编程(Object-Oriented Programming,OOP),能有效地解决计算问题;
2.深入剖析OOP的封装、多态性和继承,展示了如何在Python中使用这些特性开发游戏和应用程序;
3.通过实践,综合运用本书介绍的许多OOP技术和GUI元素,创建一个功能完整的视频游戏;
4.理解OOP的工作方式,提高代码的可读性,提升编程的水平和效率。
本书首先介绍构建类和创建对象的基础知识,并结合代码讲述如何将理论付诸实践;然后讨论面向对象编程的关键概念——封装、多态性和继承,包括如何使用对象管理器创建并管理多个对象,如何通过封装对客户端代码隐藏对象的内部细节,如何使用多态性定义一个接口并在多个类中实现它,如何应用继承构建现有代码;最后讲述如何构建一款带完整的动画和声音的视频游戏,从而将所有内容整合在一起。本书涵盖了两个功能齐全的Python代码包,它们将加速Python中图形用户界面程序的开发。
本书不仅适合Python开发人员阅读,还适合计算机相关专业的师生阅读。
目 录
第 一部分 面向对象编程入门
第 1章 过程式Python示例2
1.1 Higher or Lower纸牌游戏2
1.1.1 表示数据2
1.1.2 实现3
1.1.3 可重用的代码5
1.2 银行账户模拟5
1.2.1 分析必要的操作和数据5
1.2.2 实现1:不使用函数的单个账户6
1.2.3 实现2:使用函数的单个账户7
1.2.4 实现3:两个账户9
1.2.5 实现4:使用列表的多个账户10
1.2.6 实现5:账户字典的列表13
1.3 过程式实现的常见问题15
1.4 面向对象解决方案:初识类15
1.5 小结16
第 2章 通过面向对象编程模拟物体17
2.1 构建物体的软件模型17
2.2 类和对象简介18
2.3 类、对象和实例化19
2.3.1 在Python中编写类20
2.3.2 作用域和实例变量21
2.3.3 函数和方法的区别22
2.3.4 从类创建对象22
2.3.5 调用对象的方法23
2.3.6 从相同类创建多个实例24
2.3.7 Python数据类型被实现为类25
2.3.8 对象的定义26
2.4 创建一个更加复杂的类26
2.5 将一个更加复杂的物理对象表示为类28
2.5.1 向方法传递实参32
2.5.2 多个实例33
2.5.3 初始化参数34
2.6 类的使用35
2.7 以OOP作为解决方案35
2.8 小结36
第3章 对象的思维模型和 “self”的意义37
3.1 重看DimmerSwitch类37
3.2 1号高级思维模型38
3.3 2号深层模型39
3.4 self的含义41
3.5 小结43
第4章 管理多个对象44
4.1 银行账户类44
4.2 导入类的代码46
4.3 创建一些测试代码47
4.3.1 创建多个账户47
4.3.2 在列表中包含多个Account对象49
4.3.3 具有唯一标识符的多个对象51
4.3.4 创建一个交互式菜单53
4.4 创建对象管理器54
4.4.1 创建对象管理器56
4.4.2 创建对象管理器的主代码58
4.5 使用异常更好地处理错误59
4.5.1 try和except60
4.5.2 raise语句和自定义异常60
4.6 在Bank程序中使用异常61
4.6.1 使用异常的Account类61
4.6.2 优化后的Bank类63
4.6.3 处理异常的主代码64
4.7 在对象列表上调用相同的方法65
4.8 接口与实现67
4.9 小结67
第二部分 使用pygame创建图形
用户界面
第5章 pygame简介70
5.1 安装pygame70
5.2 窗口71
5.2.1 窗口坐标系统71
5.2.2 像素颜色74
5.3 事件驱动的程序75
5.4 使用pygame76
5.4.1 打开一个空白窗口76
5.4.2 绘制图片79
5.4.3 检测鼠标单击81
5.4.4 处理键盘操作83
5.4.5 创建基于位置的动画86
5.4.6 使用pygame矩形88
5.5 播放声音90
5.5.1 播放音效90
5.5.2 播放背景音乐91
5.6 绘制形状92
5.7 小结95
第6章 面向对象的pygame96
6.1 使用OOP pygame创建屏保球96
6.1.1 创建Ball类96
6.1.2 使用Ball类98
6.1.3 创建多个Ball对象99
6.1.4 创建大量Ball对象100
6.2 构建可重用的、面向对象的按钮101
6.2.1 构建一个Button类101
6.2.2 使用SimpleButton的主代码103
6.2.3 创建包含多个按钮的程序104
6.3 构建可重用的、面向对象的文本显示105
6.3.1 显示文本的步骤105
6.3.2 创建SimpleText类106
6.4 包含SimpleText和SimpleButton的弹球示例107
6.5 对比接口与实现109
6.6 回调函数109
6.6.1 创建回调函数110
6.6.2 对SimpleButton使用回调函数110
6.7 小结112
第7章 pygame GUI小部件113
7.1 向函数或方法传递实参113
7.1.1 位置和关键字形参114
7.1.2 关于关键字形参的一些说明115
7.1.3 使用None作为默认值115
7.1.4 选择关键字和默认值116
7.1.5 GUI小部件中的默认值117
7.2 pygwidgets包117
7.2.1 设置117
7.2.2 总体设计方法118
7.2.3 添加图片119
7.2.4 添加按钮、复选框和单选按钮119
7.2.5 文本输出和输入122
7.2.6 其他pygwidgets类124
7.2.7 pygwidgets示例程序124
7.3 一致的API的重要性125
7.4 小结125
第三部分 封装、多态性和继承
第8章 封装128
8.1 函数的封装128
8.2 对象的封装129
8.3 封装的含义129
8.3.1 直接访问方式以及为什么应该避免使用这种方式130
8.3.2 严格解释getter和setter133
8.3.3 安全的直接访问135
8.4 使实例变量更加私密135
8.4.1 隐式私有135
8.4.2 更加显式地私有135
8.5 装饰器和@属性136
8.6 pygwidgets类中的封装139
8.7 一个真实的故事140
8.8 抽象141
8.9 小结143
第9章 多态性144
9.1 向现实世界的对象发送消息144
9.2 编程中应用多态性的经典示例145
9.3 使用pygame形状的示例146
9.3.1 Square类146
9.3.2 Circle类和Triangle类147
9.3.3 创建形状的主程序149
9.3.4 扩展模式151
9.4 pygwidgets表现出多态性151
9.5 运算符的多态性152
9.5.1 魔术方法153
9.5.2 比较运算符的魔术方法153
9.5.3 包含魔术方法的Rectangle类154
9.5.4 使用魔术方法的主程序156
9.5.5 数学运算符的魔术方法158
9.5.6 向量示例158
9.6 创建对象中值的字符串表示160
9.7 包含魔术方法的Fraction类162
9.8 小结165
第 10章 继承166
10.1 面向对象编程中的继承166
10.2 实现继承167
10.3 Employee和Manager示例168
10.3.1 基类Employee168
10.3.2 子类Manager168
10.3.3 测试代码170
10.4 客户端眼中的子类171
10.5 现实世界的继承示例172
10.5.1 InputNumber172
10.5.2 DisplayMoney174
10.5.3 示例用法176
10.6 从同一个基类继承多个类179
10.7 抽象类和抽象方法182
10.8 pygwidgets如何使用继承185
10.9 类的层次186
10.10 使用继承编程的困难187
10.11 小结188
第 11章 管理对象使用的内存189
11.1 对象的生存期189
11.1.1 引用计数189
11.1.2 垃圾回收194
11.2 类变量194
11.2.1 类变量常量194
11.2.2 将类变量用于计数195
11.3 综合运用:气球示例程序196
11.3.1 常量模块197
11.3.2 主程序代码198
11.3.3 气球管理器200
11.3.4 Balloon类和对象202
11.4 使用slots管理内存204
11.5 小结206
第四部分 在游戏开发中使用OOP
第 12章 纸牌游戏208
12.1 Card类208
12.2 Deck类210
12.3 Higher or Lower游戏212
12.3.1 主程序212
12.3.2 Game对象213
12.4 使用__name__进行测试216
12.5 其他纸牌游戏217
12.5.1 Blackjack牌堆217
12.5.2 使用非标准牌堆的游戏217
12.6 小结218
第 13章 定时器219
13.1 定时器演示程序219
13.2 实现定时器的3种方法220
13.2.1 统计帧数220
13.2.2 定时器事件221
13.2.3 通过计算经过的时间来创建定时器222
13.3 安装pyghelpers223
13.4 Timer类224
13.5 显示时间226
13.5.1 CountUpTimer226
13.5.2 CountDownTimer228
13.6 小结229
第 14章 动画230
14.1 构建动画类230
14.1.1 SimpleAnimation类230
14.1.2 SimpleSpriteSheetAnimation类234
14.1.3 将两个类合并起来237
14.2 pygwidgets中的动画类237
14.2.1 Animation类238
14.2.2 SpriteSheetAnimation类239
14.2.3 公共基类PygAnimation240
14.2.4 示例动画程序240
14.3 小结241
第 15章 场景242
15.1 状态机方法242
15.2 状态机的一个pygame示例244
15.3 用于管理许多场景的场景管理器248
15.4 使用场景管理器的一个示例程序249
15.4.1 主程序250
15.4.2 构建场景252
15.4.3 一个典型场景254
15.5 使用场景的Rock,Paper,Scissors255
15.6 场景之间的通信259
15.6.1 从目标场景请求信息259
15.6.2 向目标场景发送信息260
15.6.3 向所有场景发送信息260
15.6.4 测试场景之间的通信260
15.7 场景管理器的实现261
15.7.1 run()方法262
15.7.2 主方法263
15.7.3 场景之间的通信264
15.8 小结265
第 16章 完整的Dodger 游戏266
16.1 模态对话框266
16.1.1 Yes No和警告对话框266
16.1.2 Answer对话框269
16.2 构建完整的Dodger游戏271
16.2.1 游戏概述271
16.2.2 实现272
16.2.3 扩展游戏287
16.3 小结287
第 17章 设计模式及收尾289
17.1 模型-视图-控制器289
17.1.1 文件显示示例289
17.1.2 统计显示示例290
17.1.3 MVC模式的优势294
17.2 小结294
评论
还没有评论。