前言
1. 关于本书
2006年,我国开始在高等院校开展本科专业工程认证工作,其目的是更新教育观念,以产出为导向来重构课程体系,从根本上提升本科教学质量。中国《工程教育认证标准》(2015版)明确提出本科培养目标,本科生应具备将工程知识用于解决复杂工程问题的能力。这就要求本科课程体系应互相衔接,形成层次,共同服务于专业培养目标。同时还需加强实践教学,提升学生的工程能力。
本书针对计算机本科专业工程认证,将程序设计能力培养划分成程序设计基础(初级)、应用程序开发(中级)和专业研究开发(高级)3个层次,分别以C/C++作为初级入门语言、Java作为中级应用程序开发语言、Python作为高级专业研究开发语言。这3个层次互相衔接,并在实践教学内容上逐层递进、加强,使得计算机专业本科生在毕业时就能具备较高的应用和研究开发能力。本书通过学习Java语言程序设计来培养学生中级应用程序开发能力。
2. 本书特色
1) 面向中级应用程序开发能力培养
本书不是简单重复C语言的学习过程来学习第二门编程语言,而是在C语言程序设计基础上的递进加强。本书将Java语言的学习重点放在面向对象程序设计方法和基于Java开源生态圈开发应用程序上,它们是Java语言的精髓。在学习完本书内容之后,读者将具备中级应用程序开发的能力。
2) 多种应用编程场景
本书设计多种不同的应用编程场景,在讲解Java程序设计知识的同时会先介绍相关的应用场景和背景知识。例如,很多读者在学习程序设计之前并没有学过计算机网络课程,不具备学习网络编程的基础,本书在讲解网络编程时,会先介绍计算机网络的基本原理及相关概念、术语,将程序员应当具备的网络知识提炼出来,以通俗易懂的方式呈现给读者。在掌握了这些网络知识之后,读者就可以无障碍地学习后续网络编程部分的内容了。
3) 同步慕课(MOOC)课程
本书在中国大学MOOC(http://www.icourse163.org/)上同步开设配套的慕课(MOOC)课程,供读者免费学习。
3. 内容摘要
本书内容按章节顺序可分为3部分,分别是Java基础语法(第1、2章),面向对象程序设计方法(第3、4章)和Java应用程序开发(第5~10章)。
第1章认识Java语言。学习要点如下。
学习Java语言程序设计,重点学习Java生态圈和应用编程。
Java语言和C/C++很相似,但Java生态圈流行开源文化,具有更多可用的类库。
Java语言具有自己的特点,其中最主要的特点是跨平台。
立即搭建Java开发环境(JDK+Eclipse),编写自己的第一个Java程序。
第2章Java语言基础。学习要点如下。
Java语言的基础语法大量借鉴了C/C++语言。具有C/C++语言基础的读者在学习Java语言时,只需重点了解它与C/C++语言之间的区别。
本章应尽快熟悉Java语言编程环境。建议具有C/C++语言基础的读者把之前学习过的C/C++程序改用Java语言重写一遍。
通过对比可以知道,程序设计语言虽然语法不同,但设计思想是一致的。
第3章面向对象程序设计之一。学习要点如下。
深入理解面向对象程序设计方法的基本原理和设计过程。
掌握Java语言中类与对象的语法规则。
理解引用数据类型与基本数据类型之间的区别。
掌握Java语言中与数组相关的语法。
掌握Java语言多文件结构的管理方法,重点理解包和子目录之间的对应关系。
第4章面向对象程序设计之二。学习要点如下。
学会使用组合和继承的方法来定义新类,这样可以提高类代码的开发效率。
应从提高算法代码重用性的角度去理解对象的替换与多态机制。
熟练掌握接口的定义和实现方法,并充分理解接口与超类的区别。
熟练掌握匿名类和匿名方法的简写形式。
第5章Java基础类库。学习要点如下。
熟练掌握Java API说明文档的阅读方法。
学习Java API的使用,例如数学类Math、字符串类String、基本数据类型的包装类、根类Object和系统类System等。
理解并掌握Java语言的trycatch异常处理机制。
理解泛型编程,并能通过Java API中的数据集合类实现动态数组、队列、堆栈、集合和映射等功能。
掌握Java语言文档注释和注解的基本用法。
第6章图形用户界面程序。学习要点如下。
了解Java API中各图形组件之间的关系。
◇ 框架窗口JFrame和对话框窗口JDialog是顶层容器,其中包含内容面板。
◇ 可以在内容面板中添加组件,并可设置不同的布局管理策略。
◇ 内容面板可使用JPanel划分出子面板,子面板独立布局,可实现比较复杂的图形界面。
了解Java图形用户界面程序的事件响应机制。
通过编程练习掌握常用组件的用法,并能根据程序功能要求设计图形用户界面。
在掌握上述图形用户界面基本编程原理之后,可通过Java API文档自行研究javax.swing包中其他各种不同功能的图形组件,例如JSplitPane、JTabbedPane、JEditorPane、JPasswordField、JPopupMenu、JToolBar、JToolTip、JProgressBar、JScrollBar、JSlider、JSpinner、JTree等。
第7章输入输出流。学习要点如下。
Java API中的类往往经历了多级抽象和多层包装,例如输入输出流类族中的类。读者在学习Java API过程中要注意及时总结并梳理出类与类之间的继承或包装关系。
初学者可以从常用类开始,先学习使用,然后再追溯其超类。逐步从微观到宏观,最终实现从整体上把握Java API类库的目标。
学习并掌握标准I/O、文件I/O的常规编程方法和代码框架。
学习并掌握基本的文本处理方法,并能运用简单的正则表达式进行文本分析和处理。
学习并了解基本的图像及声音处理方法。
第8章多线程并发编程。学习要点如下。
多线程是一种高级编程技术。多线程可以提高CPU使用率,改善用户体验。在多核或多CPU计算机系统上,使用多线程可以明显提高程序的运行速度。
要准确理解多线程编程中的3个要素。
可以运行的算法对象,算法对象具有run()方法。
运行算法对象的线程对象,线程对象是Thread类的对象。
被多个线程共享的数据对象,操作这些数据对象时需要启用同步(synchronized)机制,多线程协同还需要使用等待唤醒(waitnotify)机制。
多线程编程比较复杂,学习时应仔细阅读并理解本章提供的示例程序,然后尝试自己重写一遍。
第9章网络编程。学习要点如下。
了解计算机网络的基本原理,理解网络编程中常用的概念和术语。
学习并掌握基于TCP或UDP的网络应用程序代码框架,并能熟练运用Java API中相关的类进行网络编程。
掌握在单台计算机上调试网络应用程序的方法。
本章所学习的网络知识已基本能够满足网络编程的需要。如果希望深入学习计算机网络,读者可以进一步选修专门的计算机网络课程。
第10章数据库编程。学习要点如下。
了解数据库的基本原理,学习SQL和JDBC编程框架。
熟练运用JDBC API编写数据库应用程序。
本章所学习的数据库知识已基本能够满足数据库编程的需要。如果希望深入学习数据库,读者可以选修专门的数据库课程,系统学习数据库相关的基础理论和设计方法。
开启自己的Java探索之旅。不忘初心,砥砺前行!
4. 使用建议
开设“Java语言程序设计”课程的教师可将本书作为授课教材使用,联系作者可免费获得配套教学课件。参加在线课程学习的学生可将本书作为线下阅读教材。因水平所限,书中难免存在疏漏之处。如果您发现相关内容,烦请发送邮件告知作者,不胜感激。
如将本书作为课堂教学用书,则建议讲课学时和实验学时各为32学时,合计64学时。每学时50分钟。作者按如下方式安排讲课学时: 第1、2、8、9、10章各2学时,第3、4、6、7章各4学时,第5章6学时。
作者联系方式: kandaohong@cau.edu.cn。
5. 致谢
作者通过中国大学MOOC积累了一些在线课程教学的经验,所开设的“C++语言程序设计”被教育部认定为第一批“国家精品在线开放课程”。本书将继续在中国大学MOOC上同步开设配套在线课程“Java语言程序设计”,供读者免费学习。感谢中国大学MOOC!
本书的出版得到了清华大学出版社付弘宇编辑和张爱华编辑的热情帮助和悉心指导,这使得本书的文字质量得到了很大提升。在此表示衷心的感谢!
最后,感谢家人对我的理解和支持。
作者
2019年3月于北京