登入帳戶  | 訂單查詢  | 購物車/收銀台( 0 ) | 在線留言板  | 付款方式  | 運費計算  | 聯絡我們  | 幫助中心 |  加入書簽
會員登入 新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類瀏覽雜誌 臺灣用戶
品種:超過100萬種各類書籍/音像和精品,正品正價,放心網購,悭钱省心 服務:香港台灣澳門海外 送貨:速遞郵局服務站

新書上架簡體書 繁體書
暢銷書架簡體書 繁體書
好書推介簡體書 繁體書

三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書
12月出版:大陸書 台灣書
11月出版:大陸書 台灣書
十月出版:大陸書 台灣書
九月出版:大陸書 台灣書
八月出版:大陸書 台灣書
七月出版:大陸書 台灣書
六月出版:大陸書 台灣書
五月出版:大陸書 台灣書
四月出版:大陸書 台灣書
三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書

『簡體書』新概念Java程序设计大学教程(第3版)

書城自編碼: 3153454
分類:簡體書→大陸圖書→教材研究生/本科/专科教材
作者: 张基温
國際書號(ISBN): 9787302490579
出版社: 清华大学出版社
出版日期: 2018-03-01
版次: 3
頁數/字數: 391/607000
書度/開本: 16开 釘裝: 平装

售價:HK$ 83.8

我要買

 

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


新書推薦:
失去的过去与未来的犯罪
《 失去的过去与未来的犯罪 》

售價:HK$ 59.8
质子交换膜燃料电池系统及其控制   戴海峰,余卓平,袁浩 著
《 质子交换膜燃料电池系统及其控制 戴海峰,余卓平,袁浩 著 》

售價:HK$ 238.8
绘画的基础 彩色铅笔技法入门教程
《 绘画的基础 彩色铅笔技法入门教程 》

售價:HK$ 59.8
听闻远方有你2
《 听闻远方有你2 》

售價:HK$ 51.4
牛津分配正义手册
《 牛津分配正义手册 》

售價:HK$ 432.0
全域增长:从战略制定到战术执行
《 全域增长:从战略制定到战术执行 》

售價:HK$ 141.6
澎湖湾的荷兰船:十七世纪荷兰人怎么来到台湾
《 澎湖湾的荷兰船:十七世纪荷兰人怎么来到台湾 》

售價:HK$ 79.2
银元时代生活史
《 银元时代生活史 》

售價:HK$ 105.6

 

建議一齊購買:

+

HK$ 73.5
《 新概念Java程序设计大学教程(第2版) 》
+

HK$ 71.1
《 新概念C程序设计大学教程(第3版) 》
+

HK$ 80.9
《 大学计算机——计算思维导论 》
+

HK$ 71.1
《 新概念C程序设计大学教程(第4版) 》
+

HK$ 70.7
《 大学计算机——计算思维导论(第2版) 》
+

HK$ 70.7
《 新概念C++程序设计大学教程(第3版) 》
編輯推薦:
? 先入为主的面向对象思维训练? 设计模式贯穿全书? 内容详实有用,紧扣核心技术,贴近工程应用? 结构科学合理,讲解准确透彻,习题丰富全面? 起点低,境界高,适合不同层次教学
內容簡介:
本书结构新颖、概念清晰、面向应用,体现了作者提出的程序设计=计算思维 语言艺术 工程方法的教学思想。全书共分为4篇: 第1篇为面向对象启步,用4个例子引导读者逐步建立面向对象的思维方式和培养基本的设计能力,将Java基本语法贯穿其中;第2篇为面向类的程序设计,在介绍了抽象类和接口这两个基本机制后,用一个故事引入了面向对象程序设计原则,接着用设计模式举例加深对面向对象结构优化必要性的认识,为进一步学习设计模式打下基础,*后介绍了反射技术;第3篇为基于API的开发,包括网络编程、JDBC、JavaBean、程序文档化、程序配置和打包与发布;第4篇为Java高级技术,包括泛型编程、多线程技术、数据结构和接口。通过这4篇可以达到夯实基础、面向应用、领略全貌的教学效果,并适应不同层次的教学需求。
本书采用问题体系,具有零起点、快起动、立意新、重内涵的特点,可作为高等学校有关专业的程序设计课程的教材,也适合培训和自学。
目錄
目录
第1篇面向对象程序设计启步
第1单元职员类3
1.1从现实世界中的对象到类模型3
1.1.1程序=模型 表现3
1.1.2现实世界中的对象分析4
1.1.3职员类的UML描述5
1.1.4职员类的Java语言描述5
1.1.5职员类的Java代码说明6
1.2类的应用与测试8
1.2.1对象引用及其创建8
1.2.2构造器与this9
1.2.3对象成员的访问与this11
1.2.4主方法与主类12
1.2.5类文件与包14
1.3Java程序开发16
1.3.1Java编译器与Java虚拟机16
1.3.2JDK16
1.3.3Eclipse开发环境18
1.4知识链接24
1.4.1Java语言及其特点24
1.4.2Java数据类型26
1.4.3字面值27
1.4.4基本类型的转换29
1.4.5Java关键词与标识符32
1.4.6流与标准IO流对象33
1.4.7Java注释34
习题135

第2单元计算器类38
2.1计算器类的定义38
2.1.1计算器建模38
2.1.2Calculator类的Java描述39
2.2Calculator类的测试39
2.2.1测试数据设计39
2.2.2规避整除风险Calculator类改进之一40
2.3异常处理Calculator类改进之二42
2.3.1Java异常处理概述42
2.3.2Java异常处理的基本形式42
2.3.3用throws向上层抛出异常44
2.3.4用throw直接抛出异常45
2.3.5Java提供的主要异常类47
2.4用选择结构确定计算类型Calculator类改进之三47
2.4.1用ifelse实现calculate方法47
2.4.2关系操作符49
2.4.3用switch结构实现calculate方法50
2.5用静态成员变量存储中间结果Calculator类改进之四52
2.5.1静态成员变量的性质52
2.5.2带有静态成员变量的Calculator类定义52
2.6知识链接54
2.6.1Java表达式54
2.6.2静态方法类方法55
2.6.3初始化块与静态初始化块57
2.6.4String类60
2.6.5正则表达式61
2.6.6Scanner类64
习题264

第3单元素数序列产生器72
3.1问题描述与对象建模72
3.1.1素数序列产生器建模72
3.1.2getPrimeSequence方法的基本思路72
3.2使用isPrime判定素数的PrimeGenerator类的实现73
3.2.1采用while结构的getPrimeSequence方法73
3.2.2采用dowhile结构的getPrimeSequence方法75
3.2.3采用for结构的getPrimeSequence方法75
3.2.4重复结构中的continue语句76
3.2.5采用for结构的isPrime方法76
3.2.6将isPrime定义为静态方法77
3.2.7不用isPrime判定素数的PrimeGenerator类的实现78
3.3知识链接79
3.3.1变量的访问属性79
3.3.2变量的作用域79
3.3.3Java数据实体的生命期80
3.3.4基本类型的包装81
习题383

第4单元扑克游戏90
4.1数组与扑克牌的表示和存储90
4.1.1数组的概念90
4.1.2数组的声明与内存分配90
4.1.3数组的初始化92
4.1.4匿名数组93
4.2数组元素的访问93
4.2.1用普通循环结构访问数组元素94
4.2.2用增强for遍历数组元素94
4.3洗牌95
4.3.1随机数与Random类95
4.3.2洗牌方法设计96
4.3.3含有洗牌方法的扑克游戏类设计98
4.4扑克的发牌与二维数组99
4.4.1基本的发牌算法99
4.4.2用二维数组表示玩家手中的牌100
4.4.3使用二维数组的发牌方法102
4.4.4含有洗牌、发牌方法的扑克游戏类设计102
4.5知识链接104
4.5.1数组实用类Arrays104
4.5.2java.util.Vector类105
4.5.3命令行参数107
4.5.4Math类108
习题4109
第2篇面向类的程序设计
第5单元类的继承115
5.1学生类研究生类层次结构115
5.1.1由Student类派生GradStudent类115
5.1.2super关键字 117
5.1.3final关键字119
5.2Java的访问权限控制119
5.2.1类成员的访问权限控制119
5.2.2类的访问权限控制120
5.2.3private构造器120
5.3类层次中的类型转换121
5.3.1类层次中的赋值兼容规则121
5.3.2里氏代换原则122
5.3.3类型转换与类型测试122
5.4方法覆盖与隐藏123
5.4.1派生类实例方法覆盖基类中签名相同的实例方法123
5.4.2用@Override标注覆盖124
5.4.3派生类静态方法隐藏基类中签名相同的静态方法126
5.4.4JVM的绑定机制127
5.5知识链接128
5.5.1Object类128
5.5.2@Deprecated与@SuppressWarnings131
5.5.3Java异常类和错误类体系135
习题5137

第6单元抽象类与接口145
6.1圆、三角形和矩形145
6.1.13个独立的类: Circle、Rectangle和Triangle145
6.1.2枚举147
6.2抽象类148
6.2.1由具体类抽象出抽象类148
6.2.2由抽象类派生出实例类150
6.2.3抽象类小结153
6.3接口153
6.3.1接口及其特点153
6.3.2接口的实现类154
6.3.3关于接口的进一步讨论156
6.4知识链接157
6.4.1Java构件修饰符小结157
6.4.2对象克隆158
习题6160

第7单元面向对象程序架构优化原则164
7.0引言164
7.1从可重用说起: 合成聚合优先原则165
7.1.1继承重用的特点166
7.1.2合成聚合重用及其特点166
7.1.3合成聚合优先原则167
7.2从可维护性说起: 开闭原则168
7.2.1软件的可维护性和可扩展性168
7.2.2开闭原则169
7.3面向抽象的原则170
7.3.1具体与抽象170
7.3.2依赖倒转原则170
7.3.3面向接口原则170
7.3.4面向接口编程举例171
7.4单一职责原则175
7.4.1对象的职责175
7.4.2单一职责原则的概念176
7.4.3接口分离原则176
7.5不要和陌生人说话181
7.5.1狭义迪米特法则181
7.5.2广义迪米特法则182
习题7183

第8单元设计模式186
8.1设计模式概述186
8.2设计模式举例诉讼代理问题186
8.2.1无律师的涉讼程序设计186
8.2.2请律师代理的涉讼程序设计187
8.2.3关于代理模式189
8.3设计模式举例商场营销问题190
8.3.1不用策略模式的商场营销解决方案190
8.3.2策略模式的定义192
8.3.3采用策略模式的商场营销解决方案193
8.4设计模式举例图形对象的创建问题197
8.4.1简单工厂模式197
8.4.2工厂方法模式202
8.4.3策略模式与简单工厂模式结合207
8.5知识链接209
8.5.1类文件与类加载209
8.5.2Class对象209
8.5.3反射API213
8.5.4使用反射的工厂模式215
8.5.5使用反射 配置文件的工厂模式216
习题8218
第3篇基于API的应用开发
第9单元Java 网络程序设计223
9.1IP地址与InetAddress类223
9.1.1IP协议与IP地址223
9.1.2InetAddress类223
9.2Java Socket概述225
9.2.1Socket的概念225
9.2.2客户端服务器工作模式225
9.3面向TCP的Java Socket程序设计226
9.3.1Socket类和ServerSocket类226
9.3.2TCP Socket通信过程227
9.3.3TCP Socket程序设计229
9.4面向UDP的Java程序设计232
9.4.1DatagramPacket类233
9.4.2DatagramSocket类233
9.4.3UDP Socket程序设计235
9.5网络资源访问238
9.5.1URI、URL和URN238
9.5.2URL类239
9.5.3URLConnection类240
9.6知识链接240
9.6.1字节流与字符流240
9.6.2缓冲流与转换流245
9.6.3PrintWriter类247
习题9248

第10单元JDBC250
10.1JDBC概述250
10.1.1JDBC的组成与工作过程250
10.1.2JDBC API及其对JDBC过程的支持250
10.2加载JDBC驱动252
10.2.1JDBC数据库驱动程序的类型252
10.2.2JDBC驱动类名与JDBC驱动程序的下载254
10.2.3DriverManager类254
10.2.4注册Driver256
10.3连接数据源258
10.3.1数据源描述规则JDBC URL258
10.3.2获取Connection对象259
10.3.3连接过程中的异常处理262
10.3.4Connection接口的常用方法262
10.4创建SQL工作空间进行数据库操作263
10.4.1SQL263
10.4.2创建SQL工作空间265
10.4.3用Statement实例封装SQL语句265
10.5处理结果集267
10.5.1结果集游标的管理267
10.5.2getXxx方法267
10.5.3updateXxx方法268
10.5.4关闭数据库连接268
10.5.5JDBC数据库查询实例268
10.6PreparedStatement接口271
10.6.1用PreparedStatement实例封装SQL语句的特点271
10.6.2PreparedStatement接口的主要方法271
10.6.3PreparedStatement对象操作SQL语句的步骤272
10.6.4Java日期数据275
10.7事务处理276
10.7.1事务的概念276
10.7.2Connection类中有关事务处理的方法276
10.7.3JDBC事务处理程序的基本结构277
10.8DAO模式279
10.8.1DAO概述279
10.8.2DAO模式的基本结构281
10.8.3DAO程序举例284
习题10290

第11单元JavaBean292
11.1JavaBean概述292
11.1.1软件组件与JavaBean292
11.1.2JavaBean结构293
11.1.3JavaBean规范295
11.2开发JavaBean295
11.2.1JavaBean API295
11.2.2JavaBean开发工具296
习题11298

第12单元程序文档化、程序配置与程序发布300
12.1Javadoc300
12.1.1Javadoc及其结构300
12.1.2Javadoc标签300
12.1.3Javadoc应用规范302
12.1.4Javadoc命令304
12.2自定义Annotation305
12.2.1Annotation的基本定义格式305
12.2.2向Annotation注入数据306
12.2.3通过反射提取Annotation中的数据307
12.2.4用Annotation 反射设计DAO基类308
12.3Java程序配置314
12.3.1程序配置与程序配置文件314
12.3.2.properties文件315
12.3.3XML配置文件317
12.3.4基于InputStream输入流的配置文件的读取318
12.3.5基于资源绑定的配置文件的读取325
12.4Java程序的打包与发布326
12.4.1Java程序的打包与JAR文件包326
12.4.2manifest文件326
12.4.3JAR命令329
12.4.4在Eclipse环境中创建可执行JAR包331
12.4.5在MyEclipse环境中创建可执行JAR包333
习题12333
第4篇Java高级技术
第13单元Java泛型编程337
13.1泛型基础337
13.1.1问题的提出337
13.1.2泛型方法339
13.1.3多泛型类340
13.2泛型语法扩展341
13.2.1泛型通配符341
13.2.2泛型设限342
13.2.3泛型嵌套342
13.3实例利用泛型和反射机制抽象DAO343
习题13345

第14单元Java多线程347
14.1Java多线程概述347
14.1.1进程与线程347
14.1.2Java线程的生命周期348
14.1.3Java多线程程序实例: 室友叫醒352
14.1.4线程调度与线程优先级356
14.1.5知识链接: JVM运行时数据区356
14.2 java.lang.Thread类358
14.2.1Thread类的构造器358
14.2.2Thread类中的优先级别静态常量359
14.2.3Thread类中影响线程状态的方法359
14.2.4Thread类中的一般方法360
14.2.5Thread类从Object继承的方法360
14.3多线程管理360
14.3.1多线程同步共享资源360
14.3.2线程死锁问题362
14.3.3线程组362
习题14363

第15单元Java数据结构和接口369
15.1数据的逻辑结构与物理结构369
15.1.1数据的逻辑结构369
15.1.2数据的物理结构370
15.1.3Java数据结构API372
15.2接口及其应用373
15.2.1Collection接口及其方法373
15.2.2List接口及其实现374
15.2.3Set接口及其实现376
15.3聚集的标准输出378
15.3.1Iterator接口378
15.3.2foreach379
15.4Map接口类及其应用380
15.4.1Map接口的定义与方法380
15.4.2Map.Entry接口380
15.4.3HashMap类和TreeMap类381
习题15383

附录A符号385
A.1Java主要操作符的优先级和结合性385
A.2Javadoc标签385

附录BJava运行时异常类和错误类387
B.1RuntimeException类387
B.2Error类388

附录CJava常用的工具包390

参考文献391
內容試閱
第3版前言
(一)
程序设计是一个很古老的概念,它从算筹和算盘开始就存在了。程序设计也是一个不断更新的概念,它随着计算工具、程序设计语言、程序设计方法的不断创新而不断更新。并且随着现代科学技术的进步,其基础性、重要性日益彰显。在各级各类学校中,关于如何教好程序设计课程的问题,也越来越受到广泛的关注。
但是,从各个方面得到的信息说明,大家对于程序设计的教学效果还是没有肯定。
我应邀到过许多学校进行交流,那里的院长、系主任们抱怨最多的是,学生学了好几门程序设计语言课,但还是遇到编程就头疼。
2004年12月,在苏州大学举办的全国计算机教学研讨会上,我根据在许多学校调研的情况,提出了计算机专业的课程中学得最不好的课程就是程序设计,真正的过关率也就30%。2008年,在北京举办的一次院长、系主任论坛上,时任教育部高教司司长的张尧学院士提出,计算机专业中,80%左右的学生程序设计没有过关。这足以说明问题的严重性。
这一局面正是我不断进行程序设计教材探索的动力。
(二)
本书是《新概念Java程序设计大学教程》的第3版。它是我在教学和交流中不断探索的一个新的成果。在写作中,我注意解决了如下几个问题。
1. 先入为主地让学生一开始就进入面向对象的世界
人人都说,由于对象反映的是真实世界的对象,面向对象程序设计比较直接,容易理解。但是,实际情况是,学生学习了面向对象程序设计后,写出来的程序却是面向过程的。原因就在于我们许多教材是从面向过程开始介绍面向对象的。这种先入为主的面向过程,是不能很好地培养面向对象的思维和方法的。只有先入为主地从面向对象开始,才能让学习者根深蒂固地掌握面向对象的思维和方法。
2. 把程序测试的基本方法融入程序设计
在计算机专业的教学中,程序测试是软件工程中的内容。而在此之前就开设了程序设计课程。这样,就把程序设计与程序测试割裂开来。在学习程序设计时,一般都是以试通方式进行。这种劣习到了学习软件工程时,已经积重难返。而且,在软件工程学习时,也没有更多时间和机会进行程序测试训练了。因此,在学习程序设计的同时,让学生掌握一些基本的程序测试方法非常重要。
3. 设计模式与面向对象程序设计准则
在面向对象程序设计的实践中,人们发掘出了一些模式。这些模式对于设计者具有标杆性的启示作用。但是,就23种模式来说,也不是一门程序设计课程所能容纳的。所幸,人们又从这些模式中总结出了开闭原则、面向抽象、接口分离、单一职责、迪米特等法则。这些法则精炼,指导意义更大。但是,它们又非常抽象。经过反复琢磨,本书采取了故事引导的方法来介绍这些原则,而把几个常用的典型模式作为实例的方法。
4. 程序文档化
本书还注意了程序文档化的训练,介绍了标注(annotation)和Javadoc等。
(三)
本书没有沿袭Java教材从数据类型到控制结构的思路,而是在第1篇直接用6个实例按照定义类定义引用创建对象操作对象的过程进行面向对象思维的训练,形成面向对象的思维主线,把数据类型、控制结构等语法嵌于其中。同时介绍基于组件的测试方法。
不了解设计模式,就没有掌握面向对象的真谛。本书第2篇以面向抽象为题,首先介绍抽象类和接口,然后引出面向对象的几个基本原则,接着通过3个例子引出GoF设计模式,最后介绍反射、配置文件和程序打包发布。这一篇不仅让学生了解了面向对象的真正意义,也更贴近了应用实际。
第3篇通过多线程、图形用户界面、网络编程、JavaBean和持久化,加深对于API意义和应用的理解,为开发应用程序奠定基础。
第4篇介绍Java Web开发和软件架构。
这4篇有详有略。详者为夯实Java开发的坚实基础,并学到实用的本领;略者为读者了解Java技术的全貌,以便将来确定在何处突破。这4篇也形成了4个学习层次,便于相关教学单位根据教学对象和目的进行取舍。
(四)
我国著名教育家陶行知说道:行动是老子,知识是儿子,创造是孙子,并倡导知行合一。世界上第一所完全为发展现代设计教育而建立的学院的创始人包豪斯(Bauhaus)的名言干中学(learning from doing)已经成为现代教育的重要思想。所有这些都表明了实践在学习中的重要性。程序设计更是这样,仅仅学习了一些程序设计语言的语法,仅仅了解了一些程序设计的方法,仅仅有了知,而不一定会。要想会,就要实践。
由J.Piaget、O.Kernberg、R.J.Sternberg、D.Katz、Vogotsgy等人创建的建构主义constructivism学习理论认为,知识不是通过教师传授得到,而是学习者在一定的情境即社会文化背景下借助其他人(包括教师和学习伙伴)的帮助,利用必要的学习资料,通过意义建构的方式而获得的。在信息时代,人们获得知识的途径发生了根本性的变化,教师不再是单一的传道、授业、解惑者,帮助学习者构建一个良好的学习环境也成为其一项重要职责。当然,这也是现代教材的责任。本书充分考虑了这些问题。
在这本书中,在每章后面都安排了概念辨析、代码分析、开发实践和探索深究4种自测和训练实践环节,为学习者搭建起一个立体化的实践环境。
1. 概念辨析
概念辨析主要提供选择和判断两类自测题目,帮助学习者理解本章中学习过的有关概念,把当前学习内容所反映的事物尽量和自己已经知道的事物相联系,并认真思考这种联系,通过自我协商与相互协商,形成新知识的同化与顺应。对于这种类型的习题,读者应当按照如下顺序完成:
(1)
先给出自己的判断。
(2)
设计一个小的程序,验证自己的判断。
(3)
结合自己的判断对验证结果进行分析,说明原因。
2. 代码分析
代码阅读是程序设计者的基本能力之一。代码分析部分的主要题型有4种:
(1)
要求给出执行结果。
(2)
要求找出错误。
(3)
选择一个答案。
(4)
填写一个空白。
3. 开发实践
提高程序开发能力是本书的主要目标。本书在每章后面都给出了相应的作业题目。但是,完成这些题目并非就是简单地写出代码,而且要将它看作是一个思维 语法 方法的工程训练。因此,要求在上机之前先写出准备文档。准备文档包括以下内容:
(1)
问题分析与建模。
(2)
源代码设计。
(3)
测试用例设计。
这些文档内容的准备应当作为是否可以上机作业的条件。没有做这些准备的学生,上机就是盲目行为,收获不会太大。在学校中,学生进入机房之前,教师应当先检查学生是否已经准备了这些内容,并将准备情况作为该次上机作业成绩的一部分或不允许上机。
经过上机作业,学生还应当提交作业报告。作业报告包括如下内容:
(1)
上机作业时发现的问题。
(2)
对于发现的问题采取的调试方法。
(3)
对自己准备文档中给出的测试用例的评价。
(4)
程序运行结果分析。
(5)
编程心得。
4. 探索思考
建构主义提倡,学习者要用探索法和发现法去建构知识的意义,学习者要在意义建构的过程中主动地搜集和分析有关的信息资料,对碰到的问题提出各种假设并努力加以验证。按照这一理论,本书还提供了一个探索思考栏目,以培养学习者获取知识的能力和不断探索的兴趣,同时可以从更深层次上探究Java语法。
(五)
写书难,写教材更难。一本专著,仅用于表达自己的见地;而一本好的教材,不仅是科学技术知识和方法的精华,还应当是先进教育理念的结晶。离这些,我还差得很远。好在有20余年教学的经历和不断进行教学改革探索的积累,以及许多热心者的支持和帮助。
这一版终于要问世了。在此,我要衷心感谢在这本书的出版过程中付出了劳动的下列人员:姚威、古辉、陶利民、赵忠孝、张展为、张秋菊、史林娟、张友明、李磊、张展赫、戴璐、文明瑶、陈觉、吴灼伟(插图)。
本书的出版仅仅是我程序设计教学改革中的一个新台阶,前面的路还要继续走下去。为此,衷心希望能得到有关专家和读者的批评和建议,也希望结交一些志同道合者,把这项改革推向更新的境界。


张基温2018年1月 第2版前言
本书是《新概念Java程序设计大学教程》的第2版。这一版修订有如下考虑:
1 第1版把JSP作为Java技术的一部分介绍,这样可以形成一个完整的Java技术体系,在教学中一气呵成,可以提高教学效率。但是目前多数学校将Java基础与Java Web分开,作为两门课程进行讲授。第2版就是为了满足这种需求而进行的修订将Java Web程序开发有关的部分删除,另行成册。
现在,Java有两个应用方面: 桌面系统应用和Web系统应用。做这两个题目时,把GUI加进来,就是一个完整的桌面系统开发实践。再加上Servlet和JSP的学习,完成一个Web系统的开发,就可以全面领略Java技术了。
2 在开发实践和教学中,越来越体会到设计模式的重要性。但其内容相当抽象,并且设计模式也不仅仅限于GoF的23种模式,它是一个宽泛又不断发展的概念。为此,在这次修订中,除了继续按照第1版的方法,用一个故事趣味性地引出面向对象程序设计原则、列举了几种设计模式,并介绍了JavaBean之外,还在JDBC最后引出了DAO模式,并根据DAO模式的需要对前面的设计模式举例进行了改写,形成一个贯穿全书的设计模式思想。
3 现代程序设计强调代码的可读性和安全性,因此,第2版增加了关于Annotation和Javadoc的介绍。
4 程序设计语言在不断发展,在教学中还应当适时介绍一些在基本内容上扩展的Java机制,如:

正则表达式。
 JVM运行时数据区。

泛型编程、Java数据接口,将它们与多线程一起作为Java高级技术介绍。
这样,就形成了第2版的4篇内容:
第1篇为面向对象启步,用5个例子引导读者逐步建立面向对象的思维方式和培养基本的设计能力,将Java基本语法贯穿其中;第2篇为面向抽象的编程,主要介绍抽象类、接口、面向对象程序设计原则、设计模式举例和反射技术;第3篇为基于API的开发,包括图形用户界面、网络编程、JDBC、JavaBean、程序文档化、程序配置和打包与发布;第4篇为Java高级技术,包括泛型编程、多线程技术、数据结构和接口。
在本书的前面一些单元中,除了基本内容外,还开辟了知识链接栏目,作为基本内容的扩展和延伸。这些内容可以作为选学或自学内容。
程序设计是一门实践性极强的课程。其实践包含两个方面的训练: 思维能力训练和语言运用能力训练。本书为此提供了丰富的习题。此外,在学时安排上还建议增加相应课程设计。经过多年的教学实践,本人推荐3种课程设计题目:

多人聊天。

一个信息系统的DAO。

关于数据结构的应用。
在做这些题目时可以分别提出如下要求:

使用图形用户界面。

使用JavaBean。

使用反射。

使用有关模式以及MVC。

使用多线程。

使用Javadoc和Annotation。


在第2版即将出版之际,要特别感谢传智播客的高美云先生仔细审读了本书的有关章节,提出了非常中肯的修改意见;也要感谢参加过一些编写和校阅工作的赵忠孝、陶利民、姚威、古辉、张展为、李磊、董兆军、张秋菊、史林娟、张友明、张展赫、陈觉、吴灼伟插图等人。
本书没有采用传统的语法体系,而是采用了自己倡导的问题 计算思维体系编写。这个体系已经经过了十几年的摸索,在新一版即将面世之际,衷心地希望读过、用过本书的有关专家和学习者能不吝批评指正,提出宝贵意见,把程序设计教学改革向前再推进一步。


张基温2016年6月第1版前言
这是我第3次写Java教材了。第1次是2001年,应清华大学出版社之约,写了《Java程序开发教程》,并配有一本习题解答。第2次是2010年,应中国电力出版社之约,写了《新概念Java教程》。这一次又应清华大学出版社之约,写了《新概念Java程序开发大学教程》。
近几年,我所写的程序设计教材都冠以新概念。所谓新概念,并非我能在一种程序设计语言中添加什么概念,而是企图建立一种新的程序设计教学的模式来改变程序设计课程教学效率不高,甚至不成功的现状。
(一)
在多年的程序设计课程教学实践以及广泛地与国内同行的交流中,自己感到或听到的,都是认为程序设计课程不太成功的说法。
有的学校的系主任院长抱怨,学生学习了几门程序设计课程,可是到了课程设计、毕业设计,遇到问题还是下不了手。
多数程序设计课程老师都认为,教了C、Java,可是学生遇到的问题,写出来的代码还是面向过程的。
许多学生告诉我,不知道如何测试程序,甚至学习了软件工程以后,设计了程序也还是简单地试通一下,根本没有规范化测试的习惯。
企业界的朋友告诉我,企业界已经在关注设计模式和软件架构,而新入职的软件专业的大学生对此还完全没有概念
所有这些问题都落实到一点上: 程序设计课程应当教什么?应当如何教?
(二)
教材是教学的剧本。程序设计课程的改革首先应当从教材改革开始。创新是发展的动力,教材的改革要求教材有所创新。
计算机程序设计教材的创新,首先要改变程序设计教材基于语法体系的结构。说到底,语法体系的程序设计教材都是程序设计语言手册的翻版。这种语法体系造就了重语法教学、轻思维训练的教学模式,是学习了程序设计课程却不会编写程序的祸根。
新概念系列力图在这个方面创出一条新路。本书没有沿袭Java教材从数据类型、控制结构开始的思路,而是在第1篇直接用6个实例按照定义类定义引用创建对象操作对象的过程进行面向对象思维的训练,形成面向对象的思维主线,把数据类型、控制结构等语法嵌于其中。同时介绍基于组件的测试方法。
不了解设计模式,就没有掌握面向对象的真谛。本书第2篇以面向抽象为题,首先介绍抽象类和接口,然后引出面向对象的几个基本原则,接着通过3个例子引出GoF设计模式,最后介绍反射、配置文件和程序的打包与发布。这一篇不仅让学生了解了面向对象的真正意义,也更贴近了应用实际。
第3篇通过多线程、图形用户界面、网络编程、JavaBean和持久化加深对于API意义和应用的理解,为开发应用程序奠定基础。
第4篇介绍Java Web开发和软件架构。
这4篇有详有略。详者为夯实Java开发的坚实基础,并学到实用的本领;略者为读者了解Java技术的全貌,以便将来确定在何处突破。这4篇也形成4个学习层次,便于有关教学单位根据教学对象和目的进行取舍。
(三)
我国著名教育家陶行知说过,行动是老子,知识是儿子,创造是孙子,并倡导知行合一。世界上第一所完全为发展现代设计教育而建立的学院包豪斯Bauhaus的名言干中学learning from doing已经成为现代教育的重要思想。所有这些都表明了实践在学习中的重要性。程序设计更是这样,仅仅学习了一些程序设计语言的语法,仅仅了解了一些程序设计的方法,仅仅有了知,而不一定会。要想会,就要实践。
由J.Piaget、O.Kernberg、R.J.Sternberg、D.Katz、Vogotsgy等创建的建构主义constructivism学习理论认为,知识不是通过教师传授得到的,而是学习者在一定的情境(即社会文化背景)下借助其他人包括教师和学习伙伴的帮助,利用必要的学习资料,通过意义建构的方式而获得的。在信息时代,人们获得知识的途径发生了根本性的变化,教师不再是单一的传道、授业、解惑者,帮助学习者构建一个良好的学习环境也成为其一项重要职责。当然,这也是现代教材的责任。本书充分考虑了这些问题。
本书的每一单元后面都安排了概念辨析、代码分析、开发实践和思考探索4种自测和训练实践环节,为学习者搭建起一个立体化的实践环境。
1. 概念辨析
概念辨析主要提供选择和判断两类自测题目,帮助学习者理解本节学习过的有关概念,把当前学习内容所反映的事物尽量和自己已经知道的事物相联系,并认真思考这种联系,通过自我协商与相互协商形成新知识的同化与顺应。对于这种类型的习题,读者应当按照如下顺序完成:
1 先给出自己的判断。
2 设计一个小的程序,验证自己的判断。
3 结合自己的判断对验证结果进行分析,说明原因。
2. 代码分析
代码阅读是程序设计者的基本能力之一。代码分析部分的主要题型有4种:
1 要求给出执行结果。
2 要求找出错误。
3 选择一个答案。
4 填写一个空白。
3. 开发实践
提高程序开发能力是本书的主要目标。本书在绝大多数单元后面都给出了相应的作业题目。但是,完成这些题目并非就是简单地写出其代码,而要将它看作是一个思维 语法 方法的工程训练。因此,要求在上机之前先写出准备文档。准备文档的内容包括:
1 问题分析与建模。
2 源代码设计。
3 测试用例设计。
这些文档内容的准备应当作为是否可以上机作业的条件。没有这些准备,上机就比较盲目,收获不会太大。在学校中,学生进入机房之前,教师应当先检查学生是否已经准备了这些内容,并将准备情况作为该次上机作业成绩的一部分或不允许上机。
经过上机作业,学生还应当提交作业报告。作业报告包括如下内容:
1 上机作业时发现的问题。
2 对于发现的问题采取的调试方法。
3 对自己所准备文档中给出的测试用例的评价。
4 程序运行结果分析。
5 编程心得。
4. 思考探索
建构主义提倡,学习者要用探索法和发现法去建构知识的意义,学习者要在意义建构的过程中主动地搜集和分析有关的信息资料,对碰到的问题提出各种假设并努力加以验证。按照这一理论,本书还提供了一个探索思考栏目,以培养学习者获取知识的能力和不断探索的兴趣,同时可以从更深层次上探究Java语法。
(四)
写书难,写教材更难。一本专著,仅用于表达自己的见地;而一本好的教材,不仅是科学技术知识和方法的精华,还应当是先进教育理念的结晶。离这些,我还差得很远,好在有二十余年教学的经历和不断进行教学改革探索的积累,以及许多热心者的支持和帮助。
在此,我要衷心感谢在这本书的编写中参加了一定工作的下列人员: 姚威、陶利民、张展为、郎贵义、李磊、董兆军、张秋菊、史林娟、文明瑶、黄姝敏、陈觉、张友明、宋文炳、许剑生、贺竞峰等。此外,还要感谢清华大学出版社为本书出版所做的大量平凡而细致的工作。
本书就要出版了。它的出版是我在这项教学改革工作中跨上的一个新的台阶。我衷心希望能得到有关专家和读者的批评和建议,也希望结交一些志同道合者,把这项改革推向更新的境界。

张基温2013年5月

 

 

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