描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302522379丛书名: 高职高专计算机教学改革新体系规划教材
本书适合有一定编程基础的读者,可作为高职高专计算机相关专业高年级学生的Java课程教材。
1.1Java开发环境配置与搭建1
1.2编写第一个Java程序5
1.3使用集成开发环境9
1.4Java项目的迁移13
1.5Java代码规范16
本章小结19
上机练习120
习题120
第2章Java面向对象语言基础/21
2.1一切事物皆对象21
2.2方法的声明与使用24
2.3数组30
本章小结 32
上机练习232
习题234
第3章抽象和封装/38
3.1使用面向对象进行设计38
3.2使用构造方法初始化属性43
3.3使用封装优化系统设计47
本章小结50
上机练习350
习题351
第4章继承/54
4.1使用继承优化设计54
4.2子类重写父类方法57〖2〗〖3〗〖4〗4.3父类声明和子类实例化64
本章小结66
上机练习467
习题467
第5章多态/71
5.1什么是多态71
5.2抽象类77
5.3父类和子类相互转换80
本章小结83
上机练习583
习题585
第6章接口、常用修饰符和包/88
6.1接口的定义与使用88
6.2final和static修饰符93
6.3包96
6.4其他修饰符98
本章小结98
上机练习699
习题6100
第7章异常/103
7.1异常的产生103
7.2异常的处理104
7.3异常的原理110
7.4自定义异常112
本章小结116
上机练习7116
习题7117
第8章字符串类和其他常用类/119
8.1String类与Calendar类119
8.2StringBuffer类与StringBuilder类122
8.3包裹类123
8.4Math类与System类125
8.5JDK1.7的一个新特性128
本章小结 129
上机练习8129
习题8130
第9章I/O读取、存储数据/132
9.1简单的文件读/写132
9.2I/O原理和结构135
9.3其他常用流的使用139
9.4随机存储存取文件流和File类147
本章小结151
上机练习9152
习题9153
第10章Java集合框架/156
10.1使用List集合随机选取学生156
10.2集合框架的结构161
10.3迭代器168
10.4Java泛型 170
本章小结174
上机练习10174
习题10176
第11章Java图形用户界面/178
11.1简单的图形用户界面178
11.2布局管理器和常用组件187
11.3事件199
本章小结205
上机练习11206
习题11206
第12章多线程/209
12.1代码交替执行209
12.2线程的状态与调度215
12.3实现动态点名器220
本章小结223
上机练习12223
习题12225
参考答案/227
参考文献/244
阅读本书之前最好有一门计算机语言基础,非零起点有助于快速地理解Java编程世界。本书主要内容如下。
第一部分(第1~6章): 讲解Java面向对象的核心内容,包括环境配置、抽象和封装、继承、多态、抽象类和抽象方法、接口等,并用一个学生/教师信息系统贯穿讲解,以使读者充分理解面向对象思想以及类与类之间的各种关系。
第二部分(第7~12章): 介绍Java中非常重要的知识: 异常与常用类、输入/输出、集合、图形用户界面和多线程。异常处理机制使程序中的业务代码与异常处理代码分离,从而使代码更加简洁。输入/输出实现对文件的读/写操作。集合弥补了数组的缺陷,更灵活、更实用,可以大大提高软件的开发效率。图形用户界面使人机交互更加容易、方便,使用它可以直观地查看软件的功能。多线程使程序不再以顺序流程执行,而是让CPU分配时间来执行。这几章采用了一个点名器案例来贯穿讲解,整个案例简单有趣,从而使本书趣味性增强。
本书以培养学生的实际开发能力为中心目标,以职业素养为突破点,以实用技能为核心,以案例为驱动,以讲练结合为训练思路。
本书每章围绕要完成的任务所需解决的问题导出对应的学习内容和知识点,然后介绍解决问题的过程和步骤,再通过适当题材的练习巩固、强化所学知识,即所谓的“教、学、做”一体化。因此,使用本书作为教材时,最好采用适于“教、学、做”一体化的多媒体实训室或机房进行教学,以达到学用结合、以用为本、学以致用的教学目的。
本书每章的上机练习与习题可在巩固学生基础知识的同时,逐步培养学〖2〗〖3〗〖4〗生的综合设计能力。每章的练习循序渐进,综合实战结束后,也恰好完成了一个小型项目“点名器”,让学生体会Java编程的乐趣和成就感。这个“点名器”也可以在一开始上课就使用,这样会大大提高学生对Java的学习兴趣,这也是本书的一个特色。
本书不仅面向在校学生,而且紧密联系企业实践。编者邀请有经验的企业一线Java程序员和相关项目经理参与教材的编撰,他们对教材案例的选取和知识点的遴选提出了很好的建议与意见,充分体现了以适用技能为核心的思路。
本书通过简单有趣的案例使学生轻松掌握相关的知识点,使枯燥的知识学习过程变得简单化、趣味化。同时,书中各个知识点环环相扣、衔接紧密;各章知识循序渐进,由浅入深,体系合理,完整地为后续的课程打好基础。
本书由林萍、朱婵、万畅主编,并负责全书的统稿工作。其中,林萍编写第1~4章和全书的实训内容;朱婵编写第5、7、8章和所有课后习题;朱亚兴编写第6章;万畅编写第9~11章;企业副董事长巫宇编写第12章部分内容,并对全书的实例和知识点的选择提出了很好的建议;唐懿芳编写第12章的部分内容并负责全书的校对工作。另外,企业工程师范运标、唐月、谭月爱和刘平也对本书的编写提出了很好的建议,在此对所有给予本书支持和帮助的同人致以深深的谢意!
本书有配套的课程资源和项目资源库,读者可从清华大学出版社网站(http://www.tup.com.cn)下载。
鉴于编者水平有限,书中难免有不足之处,欢迎各位读者与专家批评、指正。
编者
2019年1月
纯粹的面向对象程序设计方法可以简单概括如下。
(1) 所有的东西都是对象。可以将对象想象成一种新型变量,它保存着数据,而且可以对自身数据进行操作。
(2) 程序是一大堆对象的组合。通过消息传递,各对象知道自己应该做些什么。如果需要让对象做些事情,则须向该对象“发送一条消息”。具体来说,可以将消息想象成一个调用请求,它调用的是从属于目标对象的一个方法。
(3) 每个对象都有自己的存储空间,可容纳其他对象,或者说通过封装现有的对象,可以产生新型对象。因此,尽管对象的概念非常简单,但是经过封装以后却可以在程序中达到任意高的复杂程度。
(4) 每个对象都属于某个类。根据语法,每个对象都是某个“类”的一个“实例”。一个类最重要的特征就是“能将什么消息发给它”,也就是类本身有哪些操作。技能目标
学习面向对象设计的过程,从现实世界中抽象出类。
实现对现实世界的模拟。
对抽象出的类进行优化,通过封装隐藏内部信息。
3.1使用面向对象进行设计[2]任务描述用面向对象的方式设计和实现学校教师和学生信息管理系统中的信息录入功能。
(1) 根据控制台提示,输入姓名。
(2) 根据控制台提示,选择角色类型。有两种选择: 教师或者学生。
(3) 如果选择教师,就要选择教师教课的方向。有两种选择: “Java方向”或者“.NET方向”。[2][3][4](4) 如果选择学生,要选择学生所在的年级: “大一”“大二”或者“大三”。
(5) 在控制台打印出角色信息,包括姓名、年龄、性别、教课方向或者所在年级。
如何依据需求,使用面向对象思想来设计这个信息管理系统呢?
任务分析
面向对象设计的过程就是抽象的过程,可以分3步来完成。
第一步: 发现类。
第二步: 发现类的属性。
第三步: 发现类的方法。
相关知识与实施步骤〖*4/5〗1. 面向对象程序设计第一步——抽象出类面向对象设计的过程就是抽象的过程,根据业务需求,关注与业务相关的属性和行为,忽略不必要的属性和行为,由现实世界中的“对象”抽象出软件开发中的“对象”。
接下来就按照发现类、发现类的属性和发现类的方法这几个步骤来完成设计。可以通过在需求中找出名词的方式确定类的属性,找出动词的方式确定方法,并根据需求实现业务的相关程度进行筛选。
第一步: 发现类。
需求中的名词有控制台、学生、教师、姓名、教课方向、年级、性别、年龄。
通过仔细筛选,发现可以作为类的名词有学生、教师。本章要实现编辑角色信息功能,主要用到两个类: 学生(Student)和教师(Teacher)。
第二步: 发现类的属性。
需求中的动词主要有输入、选择、打印等。某些明显与设计无关、不重要的词语可以直接忽略。
通过仔细筛选,发现可作为属性的名词有姓名、性别、年龄、教课方向和年级,还有一些名词是作为属性值存在的,例如教课方向的属性值是Java方向和.NET方向,年级的属性值是: 大一、大二及大三。
根据需求,定义学生类的属性有姓名(name)、年龄(age)、性别(gender)和年级(grade)。教师类的属性有姓名(name)、年龄(age)、性别(gender)和教课方向(majorField)。学生和教师的某些属性,例如高矮胖瘦等与业务需求无关,不予设置。
第三步: 发现类的方法。
通过仔细筛选,发现类的方法主要是打印角色信息。教师和学生的方法主要就是打印出自己的信息,起名为print()。至于角色的其他行为,与业务需求无关,可不为其设定方法。
设计是一个逐步调整、完善的过程,类图是面向对象设计的“图纸”,使用“图纸”进行设计方便沟通和修改。以上的设计用类图来表示,如图31和图32所示。
类图用于分析和设计“类”。其优点是直观、容易理解。
图31Student类图
图32Teacher类图
抽象时遵循的原则如下。
(1) 首先找出与系统相关的类。
(2) 属性、方法的设置是为了解决业务问题。
(3) 关注主要属性、方法。
(4) 如没有必要,无须增加额外的类、属性与方法。
2. 面向对象程序设计第二步——创建类和对象
根据上述类图,分别创建出学生类和教师类。
学生类代码如下。1
public class Student {
String name;
int age;
char gender;
String grade;
public void print() {
System.out.println(“我是” name “,我的年龄是” age “岁,我的性别是”
gender “,目前我上” grade);
}
}教师类代码如下。2
public class Teacher {
String name;
int age;
char gender;
String majorField;
public void print() {
System.out.println(“我是” name “,我的年龄是” age “岁,我的性别是”
gender “,我的授课方向是” majorField);
}
}最后,通过创建测试类来录入学生或教师信息,录入的步骤如下。
(1) 根据控制台提示输入角色的类型、姓名等内容。
(2) 根据输入内容创建相应的角色对象。
(3) 打印出角色信息表,信息录入成功。
代码如下。3
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println(“欢迎访问本校教师学生信息录入系统!”);
//1. 输入姓名
System.out.print(“请输入要录入的姓名: “);
String name=input.next();
//2. 选择角色类型
System.out.print(“请选择要录入的角色: (1. 教师 2. 学生)”);
switch (input.nextInt()) {
case 1:
//2.1 如果是教师
//2.1.1 选择教师授课方向
System.out.print(“请选择教师的授课方向:(1.Java方向”
” 2. .NET方向)”);
String majorField=null;
if (input.nextInt() == 1) {
majorField=”Java方向”;
} else {
majorField=”.NET方向”;
}
//2.1.2 创建教师对象并赋值
Teacher teacher=new Teacher();
teacher.name=name;
teacher.majorField=majorField;
//2.1.3 输出教师信息
teacher.print();
break;
case 2:
//2.2 如果是学生
//2.2.1 选择学生性别
System.out.print(“请选择学生的年级: (1. 大一2. 大二3. 大三)”);
String grade=null;
int gradeInt=input.nextInt();
if (gradeInt== 1)
grade=”大一”;
else if(gradeInt== 2){
grade=”大二”;
}else{
grade=”大三”;
}
//2.2.2 创建学生对象并赋值
Student student=new Student();
student.name=name;
student.grade=grade;
//2.2.3 输出学生信息
student.print();
}
}
}运行结果如图33和图34所示。
图33选择教师的运行结果
图34选择学生的运行结果
从代码23中可以看到Java中对象的创建和成员的调用方法,对象的创建通过关键字new实现,属性和方法通过“.”运算符调用,有以下3种方式。
(1) 通过构造方法来创建对象,如“Teacher teacher =new Teacher();”。
(2) 通过对象名.属性名的方式调用属性,如“teacher.name=”李林”;”。
(3) 通过对象名.方法名的方式调用方法,如“teacher.print();”。
类(Class)和对象(Object)是面向对象中的两个核心概念。类是对某一类事物的描述,是抽象的、概念上的定义。对象是实际存在的该事物的个体,是具体的、现实的。类和对象就好比模具和铸件的关系、建筑物图纸和建筑物实物的关系。可以由一个类创建多个对象。
代码31是Student类的代码,代码32是Teacher类的代码。但是如果要实现本例的需求,只有类是不行的,还需要创建对应类的实例,也就是对象。在代码33中根据输
评论
还没有评论。