Java面向对象思想与程序设计
上QQ阅读APP看书,第一时间看更新

前言

PREFACE

从酝酿到成书,本书作者始终坚持一个原则:帮助Java学习者从入门走向精通。这是个很高的目标,非常具有挑战性。为了实现这个目标,本书作者在书中融入了大量自己的思考和实践结果。

内容体系

在总体逻辑上,本书分为四个模块:入门知识、面向对象技术、类库资源、应用编程。内容遵循知识的由浅入深和从局部到整体的逻辑。各部分章节划分及具体内容如下。

模块一 入门知识(第1章~第2章)。包括了解Java语言、了解Java程序结构、Java语言语法知识细节、Java编程和运行环境。这个模块的学习,以入门为目的。检验是否入门的标准有两个,一是看对语法的掌握是否全面准确,二是看是否能够编写出简单程序。

模块二 面向对象技术(第3章~第6章)。详细介绍面向对象的概念、原理、机制和语法等细节内容。第3章是面向对象技术的导论式介绍,从实际问题出发,面向具体应用,引导读者以一种自然的方式去理解面向对象技术和应用。第4章和第5章从语法层面详细地展开,通过大量实例演示说明面向对象程序设计的方法。

模块三 类库资源(第7章~第13章)。和其他面向对象的语言一样,Java的类库是编程所需的软件资源。类库中大量的类分属于不同的类包。就像工具包中有不同的工具一样。这是典型的面向对象的方式,给它自身赋予了可扩展性。每个新的JDK版本发布时,要么增加了新的类包,要么在原来的类包中增加了新的类。

模块三中的各章内容互不相同、自成体系,但是都服务于一个中心问题——面向对象的应用编程和软件开发。每章分别体现一个应用方向或者一种技术,都以类库中的不同类为线索展开,各章类不同、功能不同、应用场景不同。

模块四 应用编程(第14章)。在前面章节中举例的程序基础上,本章给出几个应用程序问题,目的是综合运用各章知识,解决典型的设计问题,实现从学习Java语言向掌握Java技术的过渡。

本书特点

本书面向以Java为第一种程序语言的初学者。因此,作者特别重视引导读者入门。围绕这个目标,本书在内容组织、结构安排、教学形式方面都有一些独特的设计。

1.强化面向对象

本书突出面向对象技术的原理和应用这个重点。面向对象技术的概念、原理、机制复杂而抽象,难以理解。为了使初学者能够突破这个难点,本书采用了以下两种方法:一是加大面向对象技术的内容篇幅;二是用类比和对比的方式介绍面向对象技术的内容。加大面向对象技术内容篇幅,使得内容讲解可以由浅入深地展开,同时用更多的程序去验证和说明问题。用形象的例子对比面向对象技术和面向过程技术,有利于读者对抽象术语、概念建立直观的认识,有利于读者接受并理解面向对象技术复杂的原理机制。

2. 优化结构设计

首先,本书将语言基础知识合并为一章,这样的设计,有利于引导读者快速进入编程情境,在编程中快速而准确地学习语法知识,学以致用,体现“做中学”的思想。其次,每章章首设置的思维导图中,有入门问题、重要术语、主要内容、重点难点四项:“入门问题”明确地引导读者按照“问题驱动”的方式去学习;“重要术语”可使读者快速了解本章基础知识,排除障碍;“主要内容”起着路线图的作用,有利于读者对所学内容建立总体概念,对不同知识点之间的逻辑关系建立清晰的认知;“重点难点”体现了本章突出的重、难点内容,一定要认真把握。初学者一开始可能提不出问题,那么可以带着思维导图中提出的问题去学习,这样便于快速掌握内容主体,使学习有针对性,不至于像走入迷宫一样失去方向。

3.支持在线学习

为了帮助到选用本书的读者更快地掌握知识,我们用心录制了微视频,针对一些重要知识点、案例进行讲解,读者可以扫描书中二维码在线查看。同时为方便教师教学,本书还提供书中所有案例的源代码、教学大纲、PPT,配套资源下载连接:box.ptpress.com.cn/y/49179。

学习方法

丹尼尔·科伊尔在《一万小时天才理论》这本书中有一个核心的观点:在通往成功的道路上,重复练习无法替代且是千金难求的方法。事实上一个人在任何一个领域要想出众,都要通过至少一万小时的练习才可能实现,并且,不是在你的舒适区练习,而是在容易犯错的地方进行精深练习。

安德斯•艾利克森博士在《刻意练习:如何从新手到大师》一书中对“刻意练习”做了这样的阐释:只在学习区练习、大量重复训练、持续获得有效的反馈、精神高度集中。

结合以上观点,作者建议读者从以下3方面进行“刻意练习”。

1.模仿并重复训练

为了实现入门,可以先模仿并重复练习(可借鉴外语教学的完型填空法)。学习编程时,尤其是在最初阶段,常常会苦于没有解题思路,一筹莫展,浪费许多时间,这样苦思冥想不是学习的好方法。而完型填空法的思路是,在难度可控的范围内展开模仿学习:借助模具,遮盖程序中的一行代码、一个方法或一个类。这样经过若干次重复,可以对问题求解策略有一个从整体到局部,再从局部到整体的认知。

2.科学规划和严格执行

练习时,要注意科学地规划练习内容,并严格地执行计划;应避免低水平简单重复,要走出舒适区。如何做到这一点呢?有两个方法:一是重复同一问题的求解,主动尝试用不同的技术路线、不同的算法、不同的设计思路、不同的语言来解决问题;二是将同一种语言用在不同的课程中,以其他专业课程中包含的计算问题为项目,进行分析求解,这既有助于计算思维形成,也有助于该课程的学习。

3.建立有效的反馈机制

反馈,就是从自己和他人的成功及失败中积累经验,在评价中持续改进自己的设计。有效的反馈是正确练习的保证,可以通过团体学习、集体讨论来实现反馈。近年流行的敏捷开发、结对编程,都体现了团队和讨论在学习和开发中的作用。同一个难度的问题,在新手和老手眼里可能天差地别,所谓难者不会,会者不难,希望大家能虚心接受他人的意见,早日掌握Java。

致谢

本书由哈尔滨理工大学三位老师共同编写,其中,刘彦君编写了第1、3、7、10、12、14章,并负责全书统稿工作;张仁伟编写第6、8、9、11、13章;满志强编写第2、4、5章,并完成了全部教学视频录制任务。本书的编写还离不开学生们的热情参与,特别是赵敏捷同学和赵宁同学,他们结合自己的学习经历,提出了多条入门阶段的感悟,拓宽了笔者的思路。在此对他们表示衷心的感谢。

作者

2018年5月