序言 作为教育部高等学校计算机科学与技术教学指导委员会的工作内容之一,自从2003年参与清华大学出版社的“21世纪大学本科计算机专业系列教材”的组织工作以来,陆续参加或见证了多个出版社的多套教材的出版,但是现在读者看到的这一套“高等学校计算机科学与技术项目驱动案例实践规划教材”有着特殊的意义。 这个特殊性在于其内容。这是第一套我所涉及的以项目驱动教学为特色,实践性极强的规划教材。如何培养符合国家信息产业发展要求的计算机专业人才,一直是这些年人们十分关心的问题。加强学生的实践能力的培养,是人们达成的重要共识之一。为此,教育部高等学校计算机科学与技术教学指导委员会专门编写了《高等学校计算机科学与技术专业实践教学体系与规范》(清华大学出版社出版)。但是,如何加强学生的实践能力培养,在现实中依然遇到种种困难。困难之一,就是合适教材的缺乏。以往的系列教材,大都比较“传统”,没有跳出固有的框框。而这一套教材,在设计上采用软件行业中卓有成效的项目驱动教学思想,突出“做中学”的理念,突出案例(而不是“练习作业”)的作用,为高校计算机专业教材的繁荣带来了一股新风。 这个特殊性在于其作者。本套教材目前规划了10余本,其主要编写人不是我们常见的知名大学教授,而是知名软件人才培训机构或者企业的骨干人员,以及在该机构或者企业得到过培训的并且在高校教学一线有多年教学经验的大学教师。我以为这样一种作者组合很有意义,他们既对发展中的软件行业有具体的认识,对实践中的软件技术有深刻的理解,对大型软件系统的开发有丰富的经验,也有在大学教书的经历和体会,他们能在一起合作编写教材本身就是一件了不起的事情,没有这样的作者组合是难以想象这种教材的规划编写的。我一直感到中国的大学计算机教材尽管繁荣,但也比较“单一”,作者群的同质化是这种风格单一的主要原因。对比国外英文教材,除了Addison Wesley和Morgan Kaufmann等出版的经典教材长盛不衰外,我们也看到O’Reilly“动物教材”等的异军突起——这些教材的作者,大都是实战经验丰富的资深专业人士。 这个特殊性还在于其产生的背景。也许是由于我自己在计算机技术方面的动手能力相对比较弱,其实也不太懂如何教学生提高动手能力,因此一直希望有一个机会实际地了解所谓“实训”到底是怎么回事,也希望能有一种安排让现在教学岗位的一些青年教师得到相关的培训和体会。于是作为2006—2010年教育部高等学校计算机科学与技术教学指导委员会的一项工作,我们和教育部软件工程专业大学生实习实训基地(亚思晟)合作,举办了6期“高等学校青年教师软件工程设计开发高级研修班”,每期时间虽然只是短短的1~2周,但是对于大多数参加研修的青年教师来说都是很有收获的一段时光,在对他们的结业问卷中充分反映了这一点。从这种研修班得到的认识之一,就是目前市场上缺乏相应的教材。于是,这套“高等学校计算机科学与技术项目驱动案例实践规划教材”应运而生。 当然,这样一套教材,由于“新”,难免有风险。从内容程度的把握、知识点的提炼与铺陈,到与其他教学内容的结合,都需要在实践中逐步磨合。同时,这样一套教材对我们的高校教师也是一种挑战,只能按传统方式讲软件课程的人可能会觉得有些障碍。相信清华大学出版社今后将和作者以及高等学校计算机科学与技术教学指导委员会一起,举办一些相应的培训活动。总之,我认为编写这样的教材本身就是一种很有意义的实践,祝愿成功。也希望看到更多业界资深技术人员加入到大学教材编写的行列中来,和高校一线教师密切合作,将学科、行业的新知识、新技术、新成果写入教材,开发适用性和实践性强的优秀教材,共同为提高高等教育教学质量和人才培养质量做出贡献。 前言 21世纪,什么技术将影响人类的生活?什么产业将决定国家的发展?信息技术与信息产业是首选的答案。高等学校学生是后备军,教育部在高等学校中普及信息技术与软件工程教育,经过多所高校的实践,信息技术与软件工程教育受到学生的普遍欢迎,取得了很好的教学效果。然而,也存在一些不容忽视的共性问题,其中突出的是教材问题。 从近两年信息技术与软件工程教育研究来看,许多任课教师提出目前许多教材不适合教学。具体体现在: 第一,来自信息技术与软件工程的专业术语很多,对于没有这些知识背景的学生学习起来具有一定的难度;第二,书中案例比较匮乏,与企业的实际情况相差甚远,致使案例可参考性差;第三,缺乏具体的课程实践指导和真实项目。因此,针对高校信息技术与软件工程课程教学特点与需求,编写适用的规范化教材刻不容缓。 本书就是针对以上问题编写的,作者希望推广一种最有效的学习与培训的捷径,即ProjectDriven Training,也就是用项目实践来带动理论的学习(或者称为“做中学”)。基于此,作者围绕一个真实项目案例来贯穿Java程序设计各个模块的理论讲解, 包括面向对象程序设计的基本概念、Java程序设计基础(包括运算符与表达式、程序流控制、数组)、Java类和对象、Java面向对象高级特性、Java实用类及接口、Java异常处理、图形用户界面设计、输入与输出、多线程编程、Java网络编程、JDBC数据库应用开发技术等。通过项目实践,可以对技术应用有明确的目的性(为什么学),可以对技术原理更好地融会贯通(学什么),也可以更好地检验学习效果(学得怎样)。 本书主要特色如下: (1) 重项目实践。作者多年项目开发经验的体会是“IT是做出来的,不是想出来的”,理论虽然重要,但一定要为实践服务。以项目为主线,带动理论的学习是最好、最快、最有效的方法。通过此书,作者希望读者对Java程序设计技术和流程有整体了解,减少对项目的盲目感和神秘感,能够根据本书的体系循序渐进地动手做出自己的真实项目来。 (2) 重理论要点。本书以项目实践为主线,着重介绍Java程序开发理论中最重要、最精华的部分以及它们之间的融会贯通,而不是面面俱到,没有重点和特色。读者首先通过项目把握整体概貌,再深入局部细节,系统地学习理论;然后不断优化和扩展细节,完善整体框架和改进项目。既有整体框架,又有重点理论和技术。一书在手,思路清晰,项目无忧。 为了便于教学,本教材配有教学课件,读者可以从清华大学出版社的官网(www.tup.com.cn)下载。 本书第一作者梁立新的工作单位为深圳技术大学。本书获得深圳技术大学的大力支持和教材出版资助,在此表示感谢。 鉴于编者的水平有限,书中难免有不足之处,敬请广大读者批评指正。 梁立新2019年11月于深圳