登入帳戶  | 訂單查詢  | 購物車/收銀台(0) | 在線留言板  | 付款方式  | 聯絡我們  | 運費計算  | 幫助中心 |  加入書簽
會員登入   新用戶註冊
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2024年度TOP分類閱讀雜誌 香港/國際用戶
最新/最熱/最齊全的簡體書網 品種:超過100萬種書,正品正价,放心網購,悭钱省心 送貨:速遞 / 物流,時效:出貨後2-4日

2025年02月出版新書

2025年01月出版新書

2024年12月出版新書

2024年11月出版新書

2024年10月出版新書

2024年09月出版新書

2024年08月出版新書

2024年07月出版新書

2024年06月出版新書

2024年05月出版新書

2024年04月出版新書

2024年03月出版新書

2024年02月出版新書

2024年01月出版新書

『簡體書』Java面向对象程序设计:思想·方法·应用(微课视频版)(21世纪高等学校计算机类课程创新系列教材·微课版)

書城自編碼: 3694354
分類: 簡體書→大陸圖書→教材研究生/本科/专科教材
作者: 化志章 揭安全 石海鹤 王岚
國際書號(ISBN): 9787302590668
出版社: 清华大学出版社
出版日期: 2021-09-01

頁數/字數: /
書度/開本: 16开 釘裝: 平装

售價:NT$ 335

我要買

share:

** 我創建的書架 **
未登入.



編輯推薦:
内容组织上,基于案例介绍内容,直观、高效;内容设计上,所有案例均有目的、设计、源码、分析,便于快速深入地理解、领会;内容表述上,结合丰富的图解和形象的比喻,破解技术难点。各章的章首配有导引,指明本章的设置目的、内容组织的逻辑主线、重点难点等内容;章末配有小结,进行简单梳理、提炼;“思考与练习”中提供一组问答题,用于回顾和检测对前期内容的理解,并提供一些综合型编程作业。
內容簡介:
基于Java语言,以案例为核心,问题求解为主线,快速深入地介绍面向对象程序设计的基本思想、方法和应用,以及GUI编程、线程、IO流等高级应用框架。
全书包括三部分:第1部分Java入门,对应第1章和第2章,讨论Java概况、JDK配置,从C过渡到Java,并涉及一些面向对象的基本概念、理念和语法元素;第2部分面向对象程序设计,对应第3章,结合案例,系统阐述面向对象程序设计方法及其语法支撑机制,还包括异常处理、内部类等辅助机制;第3部分实用技术和框架,包括第4~10章,涉及图形用户编程、线程机制、IO流、网络通信、泛型和集合框架、Java连接数据库、反射机制与代理模式等内容。
本书在内容组织上,基于案例介绍内容,直观、高效;在内容设计上,所有案例均有目的、设计、源码和分析,便于快速深入地理解、领会;在内容表述上,结合丰富的图解和形象的比喻,破解技术难点。各章的章首配有导引,指明本章的设置目的、内容组织的逻辑主线、重点和难点等内容;章末配有小结,进行简单梳理、提炼;“思考与练习”中提供一组问答题,用于回顾和检测对前期内容的理解,并提供一些综合型编程作业。
本书适合作为高等院校计算机、软件工程专业和各种软件培训机构的教材,也特别适合广大程序员及其他Java开发爱好者自学、参考。
關於作者:
化志章,副教授,对程序设计语言、方法和计算机发展史感兴趣,长期从事java及其它程序设计类课程的教学。对高校课堂教学普遍存在“内容多、学时少、学生理解浅”问题,历经十余年探索与实践,形成独特的解决方案,总结出高效课堂教学、训练专业思维、提高自学能力的新途径。本书是该方案的具体载体。
目錄
第1部分 Java入门
第1章 Java及其开发环境 3
1.0 本章方法学导引 3
1.1 Java的产生与发展 3
1.1.1 嵌入式项目孕育Java 4
1.1.2 网络小程序让Java起飞 4
1.1.3 Java开发平台和相关术语 5
1.2 Java的特色 5
1.2.1 Java需要具备跨平台能力 5
1.2.2 Java需要支持面向对象 7
1.2.3 Java要追求高可靠性 7
1.2.4 Java需要更大的字符集 10
1.3 Java开发环境 11
1.3.1 JDK的下载和配置 12
1.3.2 Java开发工具简介 13
1.3.3 Java应用程序框架及其编译、运行 14
本章小结 15
思考与练习 15
第2章 从C过渡到Java 16
2.0 本章方法学导引 16
2.1 快速入门 17
2.1.1 Java类型概述 17
2.1.2 入门示例:求累加和 18
2.1.3 理解类和对象:汽车类的设计 20
2.1.4 顺序表及其应用 23
2.1.5 单链表及其应用 28
2.2 强化实践 30
2.2.1 二叉树及其应用 30
*2.2.2 树及其应用 34
2.2.3 班级信息管理系统1.0版 39
2.2.4 回顾与小结 42
2.3 从内存管理视角观察程序 47
2.3.1 Java虚拟机的内部体系结构 47
2.3.2 对象如何关联到方法 48
2.3.3 栈内存管理和堆内存管理 48
2.3.4 函数间的参数传递 50
2.3.5 再谈String和数组 52
*2.4 班级信息管理系统2.0版 55
2.4.1 输入输出的格式化 55
2.4.2 读文件和单项排序 58
2.4.3 对班级信息多种方式排序 62
2.4.4 对系统设计的反思 63
2.5 一些工具类的使用 64
2.5.1 计算程序运行时间 64
2.5.2 生成验证码、计算π 66
2.5.3 识别C标识符、手机号码、邮箱 68
*2.6 综合示例 73
2.6.1 示例:设计文本计算器 73
2.6.2 示例:游戏中玩家组队 77
本章小结 79
思考与练习 80
第2部分 面向对象程序设计
第3章 面向对象程序设计基础 85
3.0 本章方法学导引 85
3.1 面向对象程序设计思想的引入 86
3.1.1 不得不提的结构化程序设计 86
3.1.2 这些问题很难用结构化方法处理 88
3.1.3 面向对象程序设计方法的诞生 89
3.1.4 面向对象程序设计方法简介 90
*3.2 基于对象视角开发图书借阅系统 90
3.2.1 需求描述 90
3.2.2 类的设计 91
3.2.3 系统数据组织 92
3.2.4 业务逻辑 93
3.2.5 系统实现 94
3.2.6 反思和拓展 98
3.3 语法认知-1 99
3.3.1 示例:带约束的三角形 99
3.3.2 示例:狗嗅、狗咬人 101
3.3.3 示例:引用自己的成员为何出错 105
3.3.4 示例:构造直角三角 106
3.3.5 示例:禁止创建边值错误的三角形 108
3.3.6 示例:银行取款攻防 110
3.3.7 语法小结 112
3.4 基于抽象类和接口的编程 113
3.4.1 示例:设计形状智能识别器 113
3.4.2 抽象方法、抽象类和接口 115
3.4.3 示例:模拟主板集成各类板卡 118
3.4.4 示例:游戏兵种设计 120
3.5 设计模式 124
3.5.1 设计模式概述 124
3.5.2 策略模式:实现国际化电商计价 125
3.5.3 装饰模式:打印票据 128
3.5.4 适配器模式:拼接两个系统 133
3.6 OOP蕴含的思想 137
3.6.1 OOP视角 137
3.6.2 封装:让对象独立、简单和安全 138
3.6.3 继承:重用、分散复杂性、语义兼容 139
3.6.4 多态:对象的自适应能力 140
3.6.5 抽象:无处不在且又独具特色 140
3.7 语法认知-2 141
3.7.1 包和权限 141
3.7.2 不可或缺的异常机制 146
3.7.3 比构造函数更早执行的初始化块 152
3.7.4 再谈内部类 153
本章小结 154
思考与练习 155
第3部分 实用技术和框架
第4章 图形用户界面编程 159
4.0 本章方法学导引 159
4.1 GUI编程概述 160
4.1.1 字符用户界面和图形用户界面 160
4.1.2 认识GUI的组件 160
4.1.3 界面的布局 161
4.1.4 示例:构造用户登录界面 161
4.2 事件处理 163
4.2.1 委托事件处理模型简介 163
4.2.2 登录界面1.0:单击按钮事件 163
4.2.3 登录界面2.0:加入键盘、窗体事件 165
4.2.4 登录界面3.0:更简洁的实现 168
4.2.5 综合示例:文本框式计算器1.0 169
4.3 拓展实践 173
4.3.1 设计能设定全局字体的工具类 173
4.3.2 按钮式计算器 175
4.3.3 文本框式计算器2.0 178
*4.3.4 生成配货地址 181
4.3.5 模拟浦丰投针试验 189
4.3.6 实现滚动字幕 192
4.4 关于事件和事件处理的讨论 193
本章小结 194
思考与练习 195
第5章 线程机制 196
5.0 本章方法学导引 196
5.1 线程机制概述 197
5.1.1 引入线程:实现并发程序设计 197
5.1.2 进程与线程:两种不同粒度的并发机制 197
5.1.3 线程概述 198
5.2 线程的构造和运行 200
5.2.1 继承Thread类构造线程 200
5.2.2 用Runnable构造线程 203
5.2.3 其他构造线程的方式 204
5.3 线程的互斥机制 205
5.3.1 概述 205
5.3.2 示例:模拟银行存取款 206
5.3.3 示例:模拟共享打印管理 208
5.3.4 示例:模拟网上抢票 210
5.4 线程的同步机制 213
5.4.1 同步的含义和实现框架 213
5.4.2 示例:模拟生产者—消费者问题 214
5.4.3 示例:模拟生产线 217
*5.4.4 示例:并发的归并排序 220
*5.5 关于并发设计、应用的进一步讨论 225
5.5.1 并发设计策略 225
5.5.2 主线程、子线程、守护线程 226
5.5.3 定时器 226
5.5.4 线程组与线程池 227
本章小结 227
思考与练习 228
第6章 IO流 229
6.0 本章方法学导引 229
6.1 IO流概述 230
6.1.1 IO流的引入 230
6.1.2 IO流的基本应用框架 230
6.1.3 IO流类库简介 233
6.2 目录文件操作 236
6.2.1 普通文件复制 236
6.2.2 目录复制 237
6.2.3 打印目录树 239
6.2.4 合并文件 240
6.3 其他操作 242
6.3.1 用数据流读、写文件 242
6.3.2 本文编码转换 243
6.3.3 序列化和反序列化 245
*6.3.4 多线程复制大型文件 252
本章小结 254
思考与练习 255
第7章 网络通信 256
7.0 本章方法学导引 256
7.1 网络编程基础 257
7.1.1 计算机网络与Java语言 257
7.1.2 网络通信概述 258
7.2 基于网址的网络编程 259
7.2.1 概述 259
7.2.2 提取网址和远程对象信息 260
7.2.3 示例:设计简单的文件下载器 262
7.3 基于Socket的点对点通信方式 264
7.3.1 概述 264
7.3.2 点对点通信模型 264
7.3.3 示例:二人间的一句话通信 266
7.3.4 示例:二人间随意聊天 269
*7.3.5 示例:群聊的设计 272
7.4 基于数据报的端对端通信方式 279
7.4.1 通信模型 279
7.4.2 示例:二人间的一句话通信 280
本章小结 283
思考与练习 283
第8章 泛型与集合框架 285
8.0 本章方法学导引 285
8.1 认识泛型 286
8.1.1 泛型引入背景 286
8.1.2 泛型的定义和使用 286
8.2 泛型机制应用 288
8.2.1 设计自动扩容的泛型顺序表 288
8.2.2 对泛型顺序表加约束 290
8.2.3 对泛型顺序表“模糊”读写 291
8.2.4 面向泛型顺序表的工具类 294
*8.3 泛型实现机理 297
8.4 泛型综合应用:集合框架 299
8.4.1 集合框架简介 299
8.4.2 List应用示例 301
8.4.3 Set应用示例 303
8.4.4 Map应用示例 306
8.5 示例:设计泛型树的迭代器 307
本章小结 312
思考与练习 313
第9章 Java连接数据库 314
9.0 本章方法学导引 314
9.1 JDBC简介 315
9.2 MySQL的安装、使用和配置 316
9.2.1 MySQL的下载和安装 316
9.2.2 MySQL数据库基本操作 316
9.2.3 在IDE中设置MySQL驱动路径 318
9.3 通过JDBC操纵MySQL 318
9.3.1 JDBC操纵数据库的基本框架 319
9.3.2 借助JDBC对数据库增、删、改、查 321
本章小结 324
思考与练习 324
第10章 反射机制与代理模式 325
10.0 本章方法学导引 325
10.1 反射机制概述 326
10.2 反射的简单应用:简单工厂模式 326
10.3 反射机制的剖析和应用 329
10.3.1 剖析反射机制 329
10.3.2 示例:解析给定的Class型对象 331
10.3.3 示例:抽象工厂模式 334
10.4 代理模式 338
10.4.1 代理模式简介 339
10.4.2 静态代理模式 339
10.4.3 动态代理模式 343
本章小结 346
思考与练习 346
附录A 课外阅读——Eclipse集成开发环境 347
附录B 课外阅读——软件设计者的关注 354
內容試閱
1. 写作背景
面向对象程序设计(Object Oriented Programming,OOP)是当今主流软件开发技术。目前市面上OOP相关资料、教材很多,该技术的核心也未发生大的变化,为何还要编写本书?编者长期从事OOP课程教学,先后参阅了几百本OOP教程、参考资料,其中不乏有很多好书,对自己有很大的启发;但也有部分OOP教材、资料的内容组织方式比较传统,大多是逐一介绍运算符、表达式、语句、函数等语法元素,逐个介绍类、继承、多态等OOP支撑机制,以特定类为章节介绍各种高级应用。这种内容方式类似字典,有助于“认字”,但对写文章(即写程序)作用不明显。具体而言,这种内容组织方式存在两大弊端:
(1)学习过程枯燥、低效。例如,介绍运算符时,将语言支持的各类运算符、运算规则逐一介绍。这种方式类似“说明书”,关注知识点的全面性和严谨性,内容琐碎、繁杂,学习过程枯燥。有多少内容是初学者当前急需掌握的呢?就好像对要学开汽车、骑自行车的人而言,有谁会通过看说明书来学习呢?
(2)很难产生真实的OOP编程体验。就像汽车驾驶技术,涉及启动、前进、后退、转弯、加速或减速、停止等一系列技术动作。单独学好这些动作,就能成为合格的司机吗?显然不能。掌握驾驶技术的具体表现,就是能灵活使用上述动作,解决驾驶过程中可能面临的各种问题。类似地,OOP作为一种实用编程技术,其核心不是类、继承、多态等语法机制,而是(综合使用类、对象、继承、封装、多态等语法机制)解决特定类型问题的应用框架。只有真正理解和掌握了一些解决问题的框架,才会产生OOP的应用体验,进而触及OOP技术的核心思想(应用开发中的各种设计模式,实际上就是解决各种经典问题的设计框架)。
另外,还有一些教材,以案例为核心组织内容,虽应用性、趣味性增强,但案例较复杂,源码过于冗长,掩盖了本应凸显的设计思想和应用框架。
编者希望的教材是:内容实用,有一定深度,突出设计思想和框架,实践能力被逐步强化,帮助学生产生真正的OOP编程体验。
2. 本书的特色
1)以问题求解为主线,按需组织内容
(1)以问题求解为主线的目的。OOP技术面向实际应用。几十年的教学经验发现:以学开汽车、骑自行车类似的方式学习OOP,会更高效。学员不会驾驶时,对其讲很多机理、规则作用不大。初学者的首要任务是把车开起来,在实践中逐步引入并解决一些问题。因此好的方式就是“做中学”,以问题求解为主线,按需引入内容。
(2)读者有实践的基础。很多读者在学习OOP之前,已经学过一门编程语言(本书假定为C语言,其他语言也可),理解了标识符、表达式、语句、函数等语法元素的含义,掌握了指针、数组等类型,了解了动态创建对象的含义;学过“算法与数据结构”,理解数据和操作应封装在一起,能编写常规算法。在此基础上,可以更快速、深入地开启OOP的学习之旅。(注:若未学习过上述内容,编者不建议直接学习OOP,因为很难展开OOP各类应用,无法真正触及OOP的核心思想。)
(3)以案例为核心组织教学内容。本书设计了四类案例:认知型、设计型、强化型及综合提高型。总体策略是:用认知型案例清扫认知障碍,用设计型案例凸显重点内容,用强化型案例循序渐进地对能力、知识进行拓展和强化,用综合提高型案例为读者个性化拓展奠定基础。具体而言:
① 认知型案例:借助一两个简单案例融入大量语法。如2.1.2节的sum求和案例,展示了Java过程式编程的几乎所有语法,包括标识符、表达式、语句、函数定义和调用等。再比如3.3.2节的“狗嗅、狗咬人”示例,完整展示了继承、多态(重载、重写)语法机制及其应用。此类案例面向基础语法、基本概念的简单认知(即认识即可),学生不会感到困难。至于更深入的理解和应用,则通过后期设计型、强化型、综合提高型案例逐步强化和深入。实践表明,学生有前述的实践基础,理解认知型案例完全没问题。
② 设计型案例:面向特定问题的求解框架,如3.4.1节“设计形状智能识别器”,完整展示了重写机制的应用框架。由于所涉及的语法及概念已在认知型案例中介绍,故此类案例重在应用框架,即解决什么问题、如何解决,并对设计做全方位剖析,如应用中可能面临的各种问题、相关机理等,后梳理、归纳和总结。再比如,4.2.2节“登录界面1.0”,完整展示了GUI编程中的委托事件处理模型的应用。类似案例有很多,这类案例应当重点掌握,它是理解OOP技术的基石。(注:框架可理解为事务处理的基本结构和流程,如”乘坐飞机”的框架涉及购票网站、大巴、机场、飞机等要素,实施流程为网站购票、乘大巴去机场、机场安检、乘机、取行李、结束。框架不涉及复杂的算法,只需要知晓涉及哪些环节(以及相互间的关系)和执行步骤即可。)
③ 强化型案例:是对认知型或设计型内容的强化和拓展。例如,在sum求和案例基础上,通过设计数据结构中的顺序表(2.1.4节),进一步实践“类=属性集 方法集”,理解属性和方法的关系,并引入Scanner类的用法;继而通过构造单链表(2.1.5节),阐明为何需要this引用,以及如何使用;通过树和二叉树的应用(2.2.1节和2.2.2节),进一步强化上述内容。后,设计“班级信息管理系统1.0版”(2.2.3节)等,用学生对象替代int型数据构造顺序表,并按需引入许多新知识。再比如,借助3.4.1节理解重写的应用框架后,通过3.4.3节和3.4.4节,借助不同问题,引出重写机制应用的不同场景和应用方式。期望通过强化型案例,加深读者对前期所学的理解,并逐步融入新知识,循序渐进地强化实践能力。
④ 综合提高型案例:这部分内容与实际软件开发十分接近,融入了一些较深的或较为抽象的内容,如2.4节的班级管理系统2.0版,不仅涉及很多新内容,而且从软件维护、拓展角度思考软件设计中应注意的问题,抽象层次较高;3.2节的“基于对象视角开发图书借阅系统”,展现了基于OOP视角,从需求描述到编码实现的全过程,期望读者从中体会OOP的视角和软件设计方式。这部分内容通常用“*”标记,面向前期掌握较好的读者。
本书强调实用为先,暂时用不到的语法,就不会介绍。例如Java的switch语句实际上功能更加强大,但本书并未提及,仅需要读者沿袭C语言中的用法规则即可。再比如,内部类机制实际上极为复杂,涉及非常多的语法约束,本书在介绍时,本着够用即可的原则,仅仅将其当成内部类型来使用。至于更多的语法细节,留待有需要时,读者自行探索。
2)学习要知其然,更要知其所以然
主要采取三大举措,让读者知其然,更知其所以然:
(1)注重内容组织符合认知逻辑。即让读者产生“确实应该如此”的感觉,这是真正理解的基础。例如,在介绍Java语言特色时,不是单纯地介绍有哪些特色,而是结合产生背景,强调“需要哪些特色”,以及“为何需要这些特色”。例如,对高可靠性,指明Java程序要被烧制到芯片中,若程序有错,则烧制的一批芯片将会报废,损失严重。为让程序不容易出错,Java注重高可靠性,继而介绍一些提高程序可靠性的一些举措。这样知晓前因后果,理解和接受均比较容易。
(2)注重认知逻辑环环相扣,逐步深入。例如3.3.5节用于介绍static修饰的示例:禁止创建边值错误的三角形。传统介绍策略是:介绍static语法规则→展示案例和实现代码→简单分析。本书先给出设计分析:要禁止创建对象,应该怎么做→这样做后,有何影响→对标static修饰,恰能解决产生的问题→逐步引入新需求,每个需求对应一个static特色或使用规则→在完成所有设计后,进行系统性梳理,并反思可能存在的其他问题。实践表明,这种有层次感的介绍方式,比简单地平铺直叙更有效。
(3)有认知和实践基础后再谈理念和思想,避免空谈。例如,对OOP的核心思想以及继承、封装、多态、抽象等特色的介绍,若放在“第3章 面向对象程序设计基础”的章首位置,此时读者尚无OOP实践基础,效果可能就像是“中学生读政治书”,文字都认识,但很难说“真正理解”。本书将其放在章尾(3.6节),读者已有一定量的实践经验,感受到了OOP编程的一些好处,再谈思想、特色,读者有真实感触,不仅能理解和接受,同时也能起到归纳、总结的效果。
3)内容组织特别适合初学者
具体表现在以下四方面:
(1)章节的结构为导引、正文、总结、思考与练习。章首的导引指明了本章的设置目的、内容组织的逻辑主线、重点难点等内容;章末的小结则是对本章内容的简单梳理、提炼;思考与练习中提供一组问答题,用于回顾和检测对前期内容的理解。
(2)所有应用型案例均有目的、设计、源码、案例分析。其中,“目的”用于指明借助案例应掌握的内容,以及所涉及的知识点;“设计”则给出设计思路、策略和枝干式的设计框架,以方便读者理解源码;“案例分析”则融入了多角度剖析,可能的拓展性知识和问题、注意事项等内容,期望借助案例,尽可能拓展出更多的内容。这种方式,无论是对教师,还是对初学者,均十分方便、有益。
(3)章节的适当位置安排有练习,以方便在学后及时强化训练。小节后的习题,供读者及时强化训练。“思考与练习”中的设计题目,则大多属于综合设计题,方便读者个性化探索。考虑到“注重能力培养,而非记忆知识”是当前教育界的普遍共识,因此各章节并未提供填空、选择之类的题目。
(4)方便源码的阅读、分析、思考。OOP程序的源码量较大,本书一方面增加源码的注释,同时尽可能加大一页纸的信息量,并将前面示例重复的代码,或是不重要的内容(如GUI编程后期有关界面构造部分)直接省略,这样能避免因内容分成多个页面而影响阅读、分析和思考。
3. 主要内容
本书包括三部分内容:
(1)Java入门。主要包括第1章和第2章,讨论Java的基本概况、环境配置,以及从C过渡到Java,其中还涉及一些OOP的基础知识和语法元素,为后续学习奠定基础。
(2)面向对象程序设计。对应第3章,包括OOP方法的诞生、应用场景、支撑机制、应用框架,后讨论了OOP技术蕴含的思想,并介绍权限、异常处理机制等后期将用到的知识。
(3)实用技术和框架。包括第4~10章,涉及图形用户编程、线程机制、IO流、网络通信、泛型和集合框架、Java连接数据库、反射机制与代理模式等内容。
4. 为何用Java语言描述
OOP技术需要语言提供专门机制来支撑,用于描述中各种设计方案,实践性较强,因此学习必须基于特定OOP支撑语言,以便理解实践应用。选用何种语言描述,实际上并不是特别重要。本书选用Java语言,主要有三点原因:
(1)Java曾被称作“纯面向对象语言”,在表达OOP相关支撑机制方面,成熟且被广泛认可。
(2)根据2020年9月的TIOBE编程语言排行榜,C、Java稳居前两位。就OOP学习而言,很多读者以C语言作为“算法与数据结构”课程的描述语言,而Java与C的基础语法十分相似,很容易从C过渡到Java。
(3)Java在移动嵌入式开发、网络编程、企业级桌面应用等领域,至今仍独占鳌头。
本书内容组织是一种全新的尝试。由于水平有限,书中难免存在表述不妥甚至错误之处,在此恳请读者批评指正,不胜感激!
编著者
2021年9月

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 台灣用户 | 香港/海外用户
megBook.com.tw
Copyright (C) 2013 - 2025 (香港)大書城有限公司 All Rights Reserved.