《Java技术及其应用实验》教学大纲20170428(刘政怡)

更新时间:2024-01-05 02:21:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《Java技术及其应用实验》

教学大纲

安徽大学计算机科学与技术学院

二O一七年四月

课程性质与设置目的要求

《Java技术及其应用实验》课程是安徽大学计算机科学与技术学院软件工程专业选修课,在强调概念和理论的同时,更注重通过实验引导学生对课程内容的深入理解,注重引导学生自学,加强学生动手能力。课程要求学生必须掌握Java编程方面的基本知识,掌握面向对象技术的基本原理。

设置本课程的目的是:使学习者通过大量的上机实验,培养和提高学生的面向对象程序设计的思维能力和Java语言的开发能力。完成本课程的学习后能够熟练地综合应用Java技术和面向对象的思想编写程序解决现实生活中的问题,最终提高程序设计水平和计算机应用能力,从而能胜任企业软件研发以及科研院所的研发、教学任务。

学习本课程的要求是:学习者应按照教学大纲要求,掌握Java语言的基本语法和语义,理解面向对象概念,会编制Java应用程序,通过编程实践形成良好的编程习惯。

先修课程要求:Java语言程序设计 本课程计划34学时,4学分。

选用教材:刘政怡.《Java语言程序设计教程》,安徽大学出版社,2016 教学手段:上机实践。 考核方法:上机考试 教学进程安排表:

次数 周次 学时数 1 2 4 实验一 Java基础实验 1、掌握JDK的安装和配置;掌握Java Application程序的开发过程; 2、熟悉Java语言的数据类型、运算符、表达式、控制语句,使用Java语言进行简单的编程。 实验 教 学 主 要 内 容 教学方法 2 4 4 实验二 Java面向对象编程实验 掌握如何定义类及类成员变量、成员方法,掌握对象的创建、对象属性的引用和方法的调用实现方法与构造方法的重载。 实验 3 6 4 实验三 Java面向对象继承性实验 掌握上转型对象的定义,学会方法重写,体验Java继承所带来的多态性。 实验 4 8 4 实验四 Java面向抽象和接口编程实验 掌握创建抽象类和接口的方法,并利用上转型对象实现面向抽象和面向接口编程。 实验五 数组与字符串实验 1、设计程序,在程序中声明数组、初始化数组元素,引用数组元素; 2、通过实验掌握如何用String和StringBuffer表示字符串,如何访问、修改、比较、转换字符串。 3、学会使用正则表达式处理字符串。 实验六 异常处理实验 掌握异常处理机制,学会使用try-catch-finally语句实现异常处理,区分throw和throws关键字,学会自定义异常类,并使用自定义异常类。 实验七 输入输出处理实验 实现Java输入/输出程序,掌握文本文件、二进制文件的读写和对象的串行化机制。 实验八 图形用户界面的设计实验 综合利用窗口、按钮、文本框、选择框、滚动条等,掌握如何使用布局管理器对组件进行管理,以及如何使用 Java 的事件处理机制,要求学生具有一定的综合分析和设计能力。 测试考核 实验 5 10 4 实验 6 12 4 7 14 4 实验 8 16 4 实验 9 18 2 实验

实验一 Java基础实验

一、实验目的

1、掌握JDK的安装和配置;掌握Java Application程序的开发过程;

2、熟悉Java语言的数据类型、运算符、表达式、控制语句,使用Java语言进行简单的编程。 二、实验要求

1、编写Java程序在屏幕上打印用星号组成的等腰三角形。

2、编写Java程序打印个人信息,个人信息格式如下所示: 学号:JT2011023 姓名:张三 性别:男 身高:168cm 体重:54.3kg 3、class Rect {

double width; //矩形的宽 double height; //矩形的高

double getArea() {//计算面积的方法

double area=width*height; return area; } }

模仿Rect类,写一个圆锥类,提供打印体积的方法,在Test类的main()方法中打印某个圆锥对象的体积。

要求:写两个类Circular和Test,分别保存为2个Java源文件。 4、定义一个三角形类Triangle 属性:三边 方法:

判断是否为三角形,返回真假。 定义一个测试类Test

主方法:提供一个三角形对象,赋值三边,判断是否构成三角形。 要求:写两个类Triangle和Test,保存为1个Java源文件中。 5、从键盘输入两个浮点数,输出他们的四则运算结果。

6、从键盘输入圆柱体的底面半径和高,求该圆柱体的表面积和体积。(圆柱体抽象成类)

7、水仙花数(一个3位数)是指其个位、十位、百位3个数的立方和等于这个数本身,求所有水仙花数。

8、编写程序输出Fibonacci数列的前20项。 9、打印九九乘法表,格式如下:

三、实验条件 计算机 四、实验原理 第1章 概述

1.1 Java的历史

Java语言出现的背景 WWW需要动态的可交互的功能

Java语言的深远影响:解决不同平台移植,一处编程,处处运行。 1.2 Java语言白皮书

Java是一种简单的、面向对象的、分布式的、解释的、鲁棒的、安全的、体系结构中立的、可移植的、高性能的、多线程的、动态的语言。

1.3 Java产品分类 (1) Java SE (2) Java EE (3) Java ME 1.4 Java SE Bin下包含主要内容 1.5 Java源程序结构

与 C/C++在源程序结构方面的区别 1.6 第一个Java应用程序

Java开发环境的安装与设置;简单java程序的编写,编译与运行 第2章 初识类和对象

2.1 一个例子

以矩形类为例引入类和对象的概念 2.2 再看一个例子

以圆类为例深入了解类和对象的概念 2.3 类和对象的关系

类是Java语言中的一种数据类型,与整型int、单精度浮点型float、双精度浮点型double等一样都是来限定数据的类型的。

2.4 类的定义

关键字class 2.5 类的使用

new分配空间,再调用构造方法。 2.6 Java应用程序的基本结构 2.7 从命令行窗口输入、输出数据

介绍Scanner类实现键盘输入、print、printf实现屏幕输出 第3章 Java基本语法

3.1 标识符

Java语言规定标识符由字母、下划线、美元符号和数字组成,并且第一个字符不能是数字字符。

3.2 保留字 53个保留字 3.3 数据类型

整型、实型、布尔型、字符型,重点讲述占位个数 3.4 基本数据类型的级别与数据转换

低级向高级转换自动转换、高级向低级转换需要强制类型转换 3.5 运算符

运算符/ % ++ -- == = += -=等的运算规则 3.6 控制语句

if语句、if-else语句、if-elseif-else语句、switch语句、循环语句for、while、do-while、与循环有关的语句、return语句,重点强调增强的for循环 ? 分支语句,if..else..; switch.

if-else语句是控制程序流程最基本的形式。格式: if(boolean-expression)

statement1;

[else statement2] 其中else子句可选

switch 语句是另外一种控制程序流的语句,它根据语句中表达式的值传递给多个子语句中的一个。Switch将控制传递给语句标志case后面的值与表达式的值相同的第一个语句。否则将控制传递给含有default标志的语句。如果没有default标志,控制将被传递给switch块后面的第一个语句。语句格式:

switch(expression){ case value1:statement1; break; case value2:statement2

break; ……

[default: defaultstatement;] }

注意:expression表达式的计算结果值应当是short,int,byte,char中任意一种类型,value1,value2等case标号也应是这些类型对应的字面值。 ? 循环语句 while,do..while,for.

While ,do..while,for使用方式同c语言。 ? 与程序转移有关的语句,continue, break ,return continue,break,return使用同c语言。

Continue语句用于结束本次循环,继续下次循环 break语句用于退出循环,或者退出switch语句

return语句用于函数返回 五、实验过程

1、学生复习对应课程内容,自行编写程序代码实现;

2、实验期间教师逐个查看程序完成情况,找出共同问题集中讲解,个别问题个别辅导;

3、实验结束时,要求学生提交电子版实验报告。 六、实验结果提交形式

以word形式提交源程序代码和运行结果截图。

实验二Java面向对象编程实验

一、实验目的

掌握如何定义类及类成员变量、成员方法,掌握对象的创建、对象属性的引用和方法的调用实现方法与构造方法的重载。 二、实验要求

1、编写一个Point类,有x、y、z三个属性;

编写一个PointDemo类,并提供一个distance(Point p1,Point p2)方法用于计算两点之间的空间距离,实例化两个具体的Point对象并显示它们之间的距离。

2、定义员工类Employee

(1)成员变量:职工号、姓名、性别、工龄、基本工资、交通补贴、午餐补助、奖金

(2)定义一个空构造方法和一个能够初始化所有成员变量的构造方法。 (3)定义统计实发工资总额的方法

(4)利用toString()方法返回员工的所有信息 (5)定义方法输出职工号、姓名、工龄、实发工资。 3、抽象一个复数类

成员变量:实部real、虚部image; 构造方法:赋初值; 成员方法:加法运算 FuShu add(FuShu s1); 成员方法:打印输出复数 Test类

主方法main:两个复数相加,输出结果。 4、抽象一个圆类 成员变量:半径; 成员方法:求面积; 抽象一个圆锥类

成员变量:圆锥的底为圆类的对象; 成员变量:高 成员方法:求体积。 主类

主方法main:通过赋值,打印圆锥体积。 三个类放在一个java文件中。 三、实验条件 计算机 四、实验原理 第4章 类和对象 4.1 方法重载

方法重载即指多个方法可以享有相同的名字,但是这些方法的参数必须不同,或者是参数个数不同,或者是参数类型不同。返回类型不能作为区分方法重载的标准。

4.2 变量作用域

类的成员变量的作用域在整个类定义体内;方法的参数变量、局部变量的作用域都在方法体内。举例说明。 4.3 构造方法

何时使用构造方法、为什么使用构造方法、如何定义和使用构造方法。 4.4 Java内存管理

栈、堆、方法区在Java程序运行过程中存储数据的过程,了解内存管理情况。 4.5 参数传递

在了解Java内存管理之后,以内存情况的差异来区分所谓的传值和传地址。 4.7 类成员和实例成员

Static修改的成员为类成员,属于类,其与实例成员的差异,以例题以及内存管理方面分别介绍。 4.8 包

以例题的形式介绍包的存在的意义,如何定义包,使用包。 4.9 import语句

为了能使用不在同一包中的其他类,需要使用import语句来引入所需要的类。 import语句的语法格式如下:

import package1[.package2].(classname|*); 4.10

访问权限

1、private:同类。类中限定为private的成员变量和方法只能被这个类本身的方法访问,不能在类外通过名字来访问。但是访问保护是控制在类的级别上,同一个类的不同对象可以访问对方的私有成员。

2、default:同类,同包。类中不使用任何访问权限修饰符修饰的成员变量和方法可以被这个类本身和同一个包中的类所访问。

3、protected:同类,同包,子类(不一定要同包)。类中限定为protected的成员变量和方法可以被这个类本身,他的子类(包括同一个包中以及不同包中的子类)以及同一个包中所有其他的类访问。处在不同包中的子类可以访问父类中限定为protected的成员。

4、public:所有。类中限定为public的成员变量和方法可以被所有的类访问。 4.11 基本数据类型的包装类

在java.lang包中提供了基本数据类型byte、int、short、long、float、double、char、boolean对应的包装器类型Byte、Int、Short、Long、Float、Double、Character、Boolean,每个包装器类型都提供了对应的XXXValue()方法返回该对象含有的基本数据类型的值,其中XXX代表对应的基本数据类型。比如Integer对象调用intValue()方法返回该对象含有的int型数据。

五、实验过程

1、学生复习对应课程内容,自行编写程序代码实现;

2、实验期间教师逐个查看程序完成情况,找出共同问题集中讲解,个别问题个别辅导;

3、实验结束时,要求学生提交电子版实验报告。 六、实验结果提交形式

以word形式提交源程序代码和运行结果截图。

实验三 Java面向对象继承性实验

一、实验目的

掌握上转型对象的定义,学会方法重写,体验Java继承所带来的多态性。 二、实验要求

1、在一个源程序中,定义四个类:

第一个类是图形类(Shape),含有一个成员变量color(字符串类型),一个没有参数的构造方法,以及一个有一个字符串类型参数的构造方法来初始化颜色变量,还有一个打印颜色变量的成员方法show;

第二个类是圆形类(Circle)继承了图形类,自己又含有一个变量半径r,有一个有两个参数的构造方法,来初始化颜色和半径,还有一个打印两个成员变量的成员方法show;其中构造方法实现时,需先调用父类带参的那个构造方法

第三个类是矩形类(Rectangle)继承了图形类,自己又含有两个变量长a和宽b,有一个有三个参数的构造方法,来初始化颜色、长和宽,还有一个打印三个成员变量的成员方法show;其中构造方法实现时,需先调用父类带参的那个构造方法

第四个类是测试类(TestShape),分别定义圆形类和矩形类的实例对象,并用show方法来测试自己的定义。

2、编程实现:

设计一个类,该类有一个方法public int f(int a,int b),返回a,b的最大公约数 设计一个子类,重写祖先的f方法,且返回a,b的最小公倍数。

要求在子类重写父类方法时,首先调用父类的方法f获得最大公约数m,然后再用公式(a*b)/m获得最小公倍数。

最后写一个测试程序,分别调用父类和子类的方法。(要用上转型对象调用f ()方法)

三、实验条件 计算机 四、实验原理 第5章 子类与继承 5.1 子类的定义 extends 关键字 5.2 子类的继承性

子类对父类成员的继承性会根据父类成员的访问权限有所不同。

(1) 若子类和父类在同一个包内,子类可以继承父类中访问权限设定为public、protected、default的成员变量和方法。

(2) 若子类和父类不在同一个包内,子类可以继承父类中访问权限设定为public、protected的成员变量和方法。 5.3 成员变量的隐藏和方法重写

方法重写:子类方法与父类方法同名,且参数个数类型一致,返回类型相同或是子类;方法重载:方法名相同,参数个数或类型不同,返回类型相同。 5.4 super关键字

当子类新定义的成员变量与从父类继承而来的成员变量同名时,继承而来的成员变量被隐藏,子类不能直接使用这些被隐藏的变量,如果想使用,则需要使用super关键字;当子类新定义的成员方法与从父类继承而来的成员方法同名、同参数,且返回类型相同或是子类时,继承而来的成员方法被隐藏,如果想使用,则需要使用super关键字。

当子类从父类继承而来的成员被隐藏时,可以由super负责调用从父类继承而来的成员。

(1) 访问从父类继承而来却被隐藏的成员变量,如: super.variable

(2) 调用从父类继承而来却被重写的成员方法,如: super.Method( [paramlist] ); (3) 调用父类的构造函数,如: super( [paramlist] ); 5.5 面向对象的多态性

多态性分为静态多态性和动态多态性,分别表现为方法重载和方法重写。 (1) 方法重载

方法名相同,根据参数个数或类型不同,在编译阶段决定执行不同的方法。 (2) 方法重写

方法名相同,参数相同,在运行阶段决定执行不同的方法。

动态多态性得以实现的一个前提条件为:将子类创建的对象实体的引用赋值给声明为父类的对象。 5.6 final关键字

final关键字可以修饰类、成员变量和方法中的局部变量。

(1) final 修饰变量,变量就变成了常量,常量需要设初值,且以后不可以再变化。 (2) final 修饰方法,方法就不能再重写;

(3) final 修饰类,类就不能被继承,即不能再有子类。 五、实验过程

1、学生复习对应课程内容,自行编写程序代码实现;

2、实验期间教师逐个查看程序完成情况,找出共同问题集中讲解,个别问题个别辅导;

3、实验结束时,要求学生提交电子版实验报告。 六、实验结果提交形式

以word形式提交源程序代码和运行结果截图。

实验四 Java面向抽象和接口编程实验

一、实验目的

掌握创建抽象类和接口的方法,并利用上转型对象实现面向抽象和面向接口编程。

二、实验要求 1、面向抽象编程1

定义一个抽象类Figure,具有area()方法; 定义子类Circle,继承Figure,重写area()方法; 定义子类Square,继承Figure,重写area()方法;

定义测试类,计算并输出一个圆和一个正方形的面积。(要用上转型对象调用area()方法)

在前面的基础上, 2、面向抽象编程2

定义子类Triangle,继承Figure,重写area()方法; 注意:

三角形面积求法:

海伦公式:设P=(a+b+c)/2 ,S△=根号下P(P-a)(P-b)(P-c) 。注:边长分别为a、b、c,三角形的面积S,而公式里的p为半周长(Math.sqrt())

定义测试类,计算并输出一个圆和一个正方形和一个三角形的面积。(要用上转型对象调用area()方法) 三、实验条件 计算机 四、实验原理 第5章 子类与继承 5.7 abstract关键字

用abstract关键字可以修饰类或修饰方法。 (1) 用abstract修饰类,类成为抽象类。如: abstract class 类名{ }

通常不能实例化一个抽象类,即不能用关键字new生成抽象类的实例。 (2) 用abstract修饰方法,类成为抽象方法。如: abstract 返回类型 方法名(参数列表); 抽象方法只需声明,无需实现。 抽象方法需要被重写。 注意:

(1) 抽象类中可以包含抽象方法,为所有子类定义一个统一的接口,但并不是必须的;

(2) 一旦某个类中包含抽象方法,则这个类必须声明为抽象类。

(3) 如果子类继承抽象类,可以重写父类中的抽象方法,也可以继承抽象方法,此时子类也是抽象的。 5.8 面向抽象编程

面向抽象编程即为设计一个类时,不让该类面向具体的类,而是面向抽象类。面向抽象编程的核心思想:将abstract类声明的对象作为其子类的上转型对象,利用它调用子类重写的方法。举例说明。 5.9 接口

接口的定义、使用、接口回调、多态性。 5.10 面向接口编程

接口只关心操作,但不关心这些操作的具体实现细节,可以使我们把主要精力放在程序的设计上,而不必拘泥于细节的实现。也就是说,可以通过在接口中声明若干个抽象方法,表明这些方法的重要性,方法体的内容细节由实现接口的类去

成员变量;

成员方法;//可以是抽象的或非抽象的

完成。使用接口进行程序设计的核心思想是使用接口回调,即接口变量存放实现该接口的类的对象的引用,从而接口变量可以回调类实现的接口方法。 5.11 abstract与接口类的区别 接口和abstract类的比较如下:

(1) abstract类和接口都可以有abstract方法。

(2) 接口中只可以有常量,不能有变量;而abstract类中既可以有常量也可以有变量。

(3) abstract类中也可以有非abstract方法,接口不可以。 5.12 内部类和匿名类

Java支持在一个类中声明另一个类,这样的类称作内部类,而包括内部类的类称为内部类的外嵌类。

由于内部类只在其外嵌类中使用,因此有时候也可以定义为匿名内部类,即没有类名的内部类,当使用运算符new创建对象时,同时给出类体。这种匿名内部类只能使用一次,可以简化代码,通常使用在继承或接口的应用场合。 五、实验过程

1、学生复习对应课程内容,自行编写程序代码实现;

2、实验期间教师逐个查看程序完成情况,找出共同问题集中讲解,个别问题个别辅导;

3、实验结束时,要求学生提交电子版实验报告。 六、实验结果提交形式

以word形式提交源程序代码和运行结果截图。

实验五 数组与字符串实验

一、实验目的

1、设计程序,在程序中声明数组、初始化数组元素,引用数组元素;

2、通过实验掌握如何用String和StringBuffer表示字符串,如何访问、修改、比较、转换字符串。

3、学会使用正则表达式处理字符串。 二、实验要求

1、键盘输入int类型的数组长度n,再键盘输入n个浮点数,程序将这些数存放到数组中,然后对数组排序,并输出排好序的数组元素

用户从键盘输入一个double类型的数,程序在数组中查找是否有数组元素值与该数相等,若相等,返回索引值;若不相等,输出提示,并提示用户继续输入,直到用户输入q结束循环。 2、对象数组编程实现:

设计一个学生类CStudent,其数据成员是学生的学号、姓名、数学、外语、计算机课程成绩。

建立学生对象的数组并输入相关信息,打印所有学生信息。 查找出学号为n的学生的信息。 学生类增加一个成员方法: 求平均分

测试类中将学生按照平均分排序输出。

3、键盘输入一个浮点数后,程序判断该浮点数由多少位数字,并分别输出整数部分、小数部分以及整数部分共有多少位数字、小数部分共有多少位数字。 注意:若输入abc,对异常进行处理。

4、编写程序,判断用户输入的若干个数中,是否有四个连续相同的数,如果是,返回true,否则返回false。 5、八皇后问题:

经典的八皇后难题是要将八个皇后放在棋盘上,任何两个皇后都不能互相攻击。(即没有两个皇后是在同一行、同一列或者同一对角上)编写程序显示所有的解决方案,并统计有多少种。 三、实验条件 计算机 四、实验原理

第6章 数组、字符串和枚举 6.1 数组 一维数组的定义

Java中的数组是一个对象,具有属性。一维数组可以采用如下两种定义方式: type[] arrayName; type arrayName[];

定义时不需要指定数组的大小。 数组的赋值:(两种方式)

定义同时赋值:type[] arrayName ={element1,element2,?};

简单数据类型数组的动态初始化: arrayName = new Type[arraySize]; 复合类型的数组:两步

(1)为数组开辟每个元素的引用空间: arrayName = new Type[arraySize]; (2)为每个数组元素开辟空间:

arrayName[0]=new Type(paramList); …

arrayName[arraySize-1] = new type(paramList); ? 定义:

Type arrayName[][]; Type [][]arrayName; 初始化: 1 静态初始化:

例:int intArray[][]={{1,2},{2,3},{3,4,6}}; 2 动态初始化

(1)直接指定每一维大小

arrayName = new type[arrayLength1][arrayLength2]; (2)从高维开始,分别为每一维分配空间,格式如下: arrayName = new type[arrayLength1][]; arrayName[0]= new type[arrayLength20]; arrayName[1]=new type[arrayLength21]; ?

arrayName[arrayLength1-1]=new type[arrayLength20]; 6.2 字符串 ? 字符串的表示

字符串被当作对象来处理。字符串常量用一对双引号括起来的字符序列;Java编译器为每个字符常量生成一个String类的实例;可以用字符串常量初始化一个String对象。 String对象的构造函数。用于产生字符串的对象还有StringBuffer类。类String表示不变字符串,不能直接对其内容进行修改;类StringBuffer表示可变字符串,可以在其中插入字符或者在末尾添加字符。 ? 访问字符串

多维数组

多维数组看成是数组的数组

采用字符串对象的成员函数和成员变量访问字符串,常用的成员函数有:Public int length(); charAt();indexOf,lastIndexOf,getChars,getBytes ? 修改字符串

对String,有concat(),replace(),substring(),toLowCase(),toUpperCase() 对StringBuffer,成员函数有append(),insert(),setCharAt() ? 正则表达式实现字符串的匹配、替换与分解 正则表达式的定义,字符串匹配、替换、分解的方法。 6.3 枚举

枚举类型的定义、使用,用for语句或switch语句遍历枚举项。 五、实验过程

1、学生复习对应课程内容,自行编写程序代码实现;

2、实验期间教师逐个查看程序完成情况,找出共同问题集中讲解,个别问题个别辅导;

3、实验结束时,要求学生提交电子版实验报告。 六、实验结果提交形式

以word形式提交源程序代码和运行结果截图。

实验六 异常处理实验

一、实验目的

掌握异常处理机制,学会使用try-catch-finally语句实现异常处理,区分throw和throws关键字,学会自定义异常类,并使用自定义异常类。 二、实验要求

1、按照要求编写程序:

键盘输入一个浮点数后,程序判断该浮点数由多少位数字组成,并分别输出整数部分、小数部分以及整数部分共有多少位数字、小数部分共有多少位数字。 注意:若输入非浮点数,如3me,提示输入错误。

2、从命令行输入5个整数,放入一整型数组,然后打印输出。要求:如果输入数据不是整数,则捕获Integer.parseInt()产生的NumberFormatException异常,显示“请输入整数”;如果输入数组元素不足5个,则捕获数组越界异常ArrayIndexOutOfBoundsException,显示“请输入至少5个整数”。

3、自定义两个异常类NumberTooBigException和NumberTooSmallException,在其中定义各自的构造方法,分别打印输出“发生数字太大异常”和“发生数字太小异常”。然后在主类中定义一个带throws的方法numberException(int x),当

x>100时通过throw抛出NumberTooBigException异常,当x<0时通过throw抛出NumberTooSmallException异常;最后在main( )方法中调用该方法,实现从键盘中输入一个整数,如果输入的是负数,引发NumberTooSmallException异常,如果输入的数大于100,引发NumberTooBigException异常,否则输出“没有发生异常”。 三、实验条件 计算机 四、实验原理 第7章

7.1 什么是例外

例外也叫异常。异常是一个特殊的对象类型,当程序出错时,系统自动创建这类对象,这个过程叫抛出异常(throw exception),并将这个异常对象发送给用户程序,用户程序必须捕捉这类异常,捕捉异常的工作由程序中被称作“异常处理”的代码负责。 7.2 例外的处理

通常异常都是在函数中产生的,有两种方式处理这种异常:

1在函数内部,用户把可能产生例外的代码放在try块中,在catch块中处理异常。 2被调函数采用如下格式向调用函数抛出在函数内部发生的异常: 返回类型 函数名(参数列表)throws 异常类型 {

/* 函数体 其中有可能抛出异常的代码*/ }

而在主调函数中,在函数外面用try catch 块捕获。同方式1. 7.3 例外类的使用; 系统定义好的异常类

用户自定义异常类,通过throw关键字抛出这类异常。 五、实验过程

1、学生复习对应课程内容,自行编写程序代码实现;

2、实验期间教师逐个查看程序完成情况,找出共同问题集中讲解,个别问题个别辅导;

3、实验结束时,要求学生提交电子版实验报告。 六、实验结果提交形式

以word形式提交源程序代码和运行结果截图。

实验七 输入输出实验

一、实验目的

实现Java输入/输出程序,掌握文本文件、二进制文件的读写和对象的串行化机制。 二、实验要求

1、文件字符输出流

编写一个程序,要求输入5个学生的成绩(从0到100的整数),并将这5个整数存到文件data.txt中。 2、缓冲流

使用Java的输入、输出流将一个文本文件的内容按行读出,每读出一行就顺序添加行号,并写入到另一个文件中。 3、对象流

利用对象流将学生信息写入stu.dat文件,并利用对象流读取出来。学生信息包括姓名name,年龄age,地址addr,其中addr为Address类对象,Address类成员变量包括地址addressName,邮编zipCode。

三、实验条件 计算机 四、实验原理 第8章 输入输出处理 8.1 I/O流概述

I/O流概念,输入流,输出流 8.2 文件处理

文件描述 文件的顺序处理 随机访问文件 8.3 过滤流

BufferedInputStream和BufferedOutputStream,LineNumberInputStream DataInputStream 和 DataOutputStream,PushbackInputStream,PrintStream 8.4字符流处理 Reader 和 Writer 8.5 对象的串行化

串行化的概念和目的,串行化的方法,串行化的注意事项,定制串行化 8.6其他常用流

管道流, 内存的读/写,顺序输入流 五、实验过程

1、学生复习对应课程内容,自行编写程序代码实现;

2、实验期间教师逐个查看程序完成情况,找出共同问题集中讲解,个别问题个别辅导;

3、实验结束时,要求学生提交电子版实验报告。 六、实验结果提交形式

以word形式提交源程序代码和运行结果截图。

实验八 图形用户界面的设计实验

一、实验目的

综合利用窗口、按钮、文本框、选择框、滚动条等,掌握如何使用布局管理器对组件进行管理,以及如何使用 Java 的事件处理机制,要求学生具有一定的综合分析和设计能力。 二、实验要求

1、实现如图所示的界面。

2、实现如图所示界面及功能,点击“读取”按钮,将文本框中的文件名所对应的文件内容输出在文本区中。

3、实现如图所示界面及功能,当点击每个按钮时,在文本框中输出按钮上的文字。

4、实现如图所示的界面,通过输入三角形三边,计算出三角形的面积。

三、实验条件 计算机 四、实验原理 第9章 图形用户界面

9.1 AWT与Swing

图3 Swing和AWT包中部分类的继承关系

9.2 Swing组件

Swing组件分为如下三种基本类型: (1) 底层容器

底层容器直接和操作系统交互,可以被直接显示、绘制在操作系统所控制的平台上,包括JFrame、JDialog、JApplet、JWindow。它们是重量组件。

(2) 中间容器

中间容器是轻量组件,置于底层容器中,包括JPanel、Box、JScrollPane、JSplitPane、JLayeredPane等。

(3) 基本组件

实现人机交互的组件,包括JTextField、JTextArea、JButton、JLabel、JCheckBox、JRadioButton、JComboBox、JPasswordField等。

底层容器可以显示在屏幕上,非底层容器必须处于底层容器中才可以被显示出来。 9.3 布局管理器

当把组件添加到容器中时,如果希望控制组件在容器中的位置,可以使用方法: setLayout(布局对象); 设置自己的布局。常用的布局类有FlowLayout、BorderLayout、CardLayout、GridLayout、BoxLayout。如果不采用这些布局类,可以先设置布局对象为null。

9.4 事件处理机制 (1) 事件源

产生事件的对象称为事件源,上例中按钮为事件源。 (2) 事件类型

? ? 文本框、按钮、菜单项、密码框和单选按钮都可以触发ActionEvent事件。 ? ? 选择框、下拉列表都可以触发ItemEvent事件。

? ? 文本区内容发生变化可以触发DocumentEvent事件。 ? ? 任何组件上都可以触发MouseEvent事件。 ? ? 任何组件上都可以触发FocusEvent事件。

? ? 当按下、释放或敲击键盘上一个键时可以触发KeyEvent事件。 上例中按钮被点击,触发ActionEvent事件。 (3) 监听器

为了对事件源进行监听,需要一个监听器对象,它专门负责监听事件源的事件,并对发生的事件作出处理。上例中listener为监听器对象。

(4) 处理事件的接口 Java规定:为了让监视器能对事件源发生的事件进行处理,监听器对象所属的类必须声明实现相应的接口,那么当事件源发生事件时,监听器就自动调用被类重写的某个接口方法。

? ? 如果发生ActionEvent事件,监听器对象类必须声明实现ActionListener接口。 ? ? 如果发生ItemEvent事件,监听器对象类必须声明实现ItemListener接口。 ? ? 如果发生DocumentEvent事件,监听器对象类必须声明实现DocumentListener接口。

? ? 如果发生MouseEvent事件,监听器对象类必须声明实现MouseListener接口。 ? ? 如果发生FocusEvent事件,监听器对象类必须声明实现FocusListener接口。 ? ? 如果发生KeyEvent事件,监听器对象类必须声明实现KeyListener接口。 监听器对象类声明实现某个接口,就必须在类体中重写接口中所有方法。上例中监听器对象类JButtonHandler实现ActionListener接口,并重写其中的actionPerformed方法。

当按钮被点击,触发ActionEvent事件时,监听器对象执行actionPerformed方法,对发生的事件进行处理,此时产生的ActionEvent事件对象就会传递给该方法的参数e。

ActionEvent事件对象可以调用如下方法获取事件的基本信息,包括:

? Object getSource()获取ActionEvent事件的事件源对象的引用,即将事件源上转型为Object对象,并返回这个上转型对象的引用。

? String getActionCommand()获取ActionEvent事件发生时,和该事件相关的一个命令字符串。如文本框发生ActionEvent事件时,与事件相关的命令字符串就是文本框中的文本字符串。

9.5 对话框

对话框通常用来设计具有依赖关系的窗口。通常在已有的窗口基础上创建对话框。这个已有的窗口称为父窗口,新创建的对话框是子窗口。对话框的创建可以通过类javax.swing.JDialog的构造方法来实现。

public JDialog(Dialog owner,String title,boolean modal) public JDialog(Frame owner,String title,boolean modal)

参数owner指定对话框的父窗口,参数title指定当前对话框的标题,参数modal指定对话框的模式,true表示有模式对话框,false表示无模式对话框。有模式对话框,会堵塞其他线程的执行;无模式对话框,不堵塞其他线程。

9.6 发布GUI程序

命令行的方式及Eclipse中的直接输出方式。

五、实验过程

1、学生复习对应课程内容,自行编写程序代码实现;

2、实验期间教师逐个查看程序完成情况,找出共同问题集中讲解,个别问题个别辅导;

3、实验结束时,要求学生提交电子版实验报告。 六、实验结果提交形式

以word形式提交源程序代码和运行结果截图。

实验九 综合性考核实验

一、实验目的

综合利用图形用户界面、面向对象思想设计Java应用程序。 二、实验要求

实现如图所示的计算器界面及功能。

三、实验结果提交形式

以word形式提交源程序代码和运行结果截图。

阅读书目

[1] 耿祥义, 张跃平. Java程序设计实用教程[M]. 北京: 人民邮电出版社, 2010.

[2] 梁勇. Java语言程序设计(基础篇). 北京: 机械工业出版社, 2015. [3] 陈国君. Java程序设计基础(第5版). 北京: 清华大学出版社,2015. [4] 范玫, 马俊. Java语言面向对象程序设计实验指导及习题解答. 北京: 清华大学出版社, 2015

[5] 覃遵跃. 利用案例轻松学习Java语言习题大全与实验指导. 北京:清华大学出版社, 2015

[6] QST青软实训. Java 8基础应用与开发. 北京:清华大学出版社, 2015 [7] 刘梦琳等. Java程序开发实战教程. 北京:清华大学出版社, 2015

本文来源:https://www.bwwdw.com/article/7s8x.html

Top