Java程序设计实验讲义版资料Word文档格式.docx
《Java程序设计实验讲义版资料Word文档格式.docx》由会员分享,可在线阅读,更多相关《Java程序设计实验讲义版资料Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
5.实验要求10
6.思考题10
实验4Object类(2学时)11
1.实验内容11
2.预习内容11
3.实验类型11
4.实验目的11
5.实验要求11
6.思考题11
实验5数组与异常处理(2学时)12
1.实验内容12
2.预习内容12
3.实验类型12
4.实验目的12
5.实验要求12
6.思考题13
实验6图形用户界面(2学时)14
1.实验内容14
2.预习内容14
3.实验类型14
4.实验目的14
5.实验要求14
6.实验提示15
实验7输入/输出处理(2学时)16
1.实验内容16
2.预习内容16
3.实验类型16
4.实验目的16
5.实验要求16
6.实验提示16
实验8线程(2学时)18
1.实验内容18
2.预习内容18
3.实验类型18
4.实验目的18
5.实验提示18
6.思考题19
前言
《Java程序设计》在面向对象程序设计的基础上,阐述Java语言的编程基础及其设计方法。
内容包括:
Java程序的输入输出、表达式与运算符、结构化程序设计、类、属性和方法、继承和重载、包和接口、Applet与图形用户界面以及相关Java网络设计等知识,本课程注重实际应用操作,采用实例讲解为学生进一步学习J2EE和J2ME打下技术基础。
结合对实例的开发,以学生为主体,充分发挥学生的主观能动性,引导学生自学教材部分内容,并锻炼学生自行开发各种小型程序模块;
培养和锻炼学生利用Java语言进行网络编程的能力。
《Java程序设计实验》是以程序设计操作为主的技能课程,它由若干个独立的实验项目组成,与相应的理论课—《Java程序设计》配套,本课程的目标是:
(1)加深学生对课堂讲授内容的理解,从计算机语言的基本概念、面向对象程序设计的基本方法、语法规则等方面加深理解,打好面向对象程序设计、软件开发的良好基础。
(2)在上机实验中,提高学生对Java语言各部分内容的综合使用能力,逐步掌握Java语言程序设计的规律与技巧。
(3)在对Java程序的调试过程中,提高学生分析程序中出现的错误和排除这些错误的能力。
(4)通过上机实践,加深学生对计算机软件运行环境、Java集成开发环境的了解。
实验要求
《Java程序设计实验》是与《Java程序设计》理论课配套的实验课程。
通过本课程的实验训练,要求学生能运用所学理论知识进行基本的面向对象程序设计,培养其规范的编程习惯,掌握基本的操作技能和编程思想。
同时要注意培养学生实事求是的科学态度,相互协作的团队精神,为学习后续课程,参加实际工作和开展科学研究打下良好的基础。
具体要求是:
(1)本课程以实验为主,配合理论课的教学。
任课教师需向学生讲清课程的性质,任务,要求,课程安排和进度,平时考核内容,期末考试办法,实验守则及实验室安全制度等。
(2)本课程主要设置下列类型的实验:
(1)基本操作训练,
(2)验证性及设计性实验;
整个实验过程包括课前准备,实验操作,实验报告等环节。
学生在实验前必须进行准备。
(3)根据实验内容不同,基本操作性的实验1人1组,设计性实验可根据情况多人一组,每个实验要求在规定时间内由学生独立完成。
(4)实验过程中,老师应在实验室进行巡视,及时回答问题,纠正学生的错误操作,检查学生的实验报告。
(5)任课教师要认真备课,提前预做实验,上好每一堂课。
实验前清点学生人数。
实验的验收将分为两个部分。
第一部分是上机操作,包括设计结果的源程序的验收与检查。
第二部分是提交书面的实验报告。
实验1Java程序的编辑、编译、运行环境(2学时)
1.实验内容
(1)编写并调试运行HelloWorld应用程序。
(2)编写并调试运行HelloWorld小应用程序。
(3)设置path环境变量;
设置classpath环境变量(选做)。
(4)实现一个整数N的阶乘运算。
N为固定常数。
(5)在屏幕上按如下格式输出乘法口诀表:
1X1=1
1X2=22X2=4
1X3=32X3=63X3=9
…
其中,每行的多个乘法公式之间用‘\t’分割
2.预习内容
Java语言概述
3.实验类型
验证型
4.实验目的
(1)了解Java程序运行环境;
(2)掌握程序调试的全部过程;
(3)学会编写和调试JavaApplication和JavaApplet程序;
(4)掌握java环境变量的配置
5.实验要求
(1)在修改源程序文件名时,测试源程序文件名是否必须与公有类类名一致;
若源程序中没有公有类,源程序文件名可以如何命名;
(2)注意观察字节码文件何时生成,在何路径下生成;
(3)掌握设置环境变量的方法。
(4)阶乘计算部分必须用函数的递归调用来实现,函数定义时应声明为static,如:
StaticlonggetFactorial(inti){
…
}
6.实验提示
(1)path是Windows系统的一个环境变量,内容为分号分隔的若干个文件夹名称(如“C:
\Windows;
C:
\Windows\System32;
\java\bin”)。
在cmd窗口中输入一个命令时,Windows首先在命令行提示符所表示的文件夹(称作“当前文件夹”或“默认文件夹”)内查找命令文件。
如果此文件夹内确实存在命令文件,则开始运行该命令,否则依次查看path环境变量中的每个文件夹,直到找到命令文件或查找失败为止。
根据上述特点,我们可以把包含“javac.exe”命令文件和“java.exe”命令文件的文件夹(通常为“c:
\programfiles\java\jdk1.6.xxx\bin”)添加到path环境变量中,从而简化cmd窗口中输入的java编译或运行命令。
(2)classpath环境变量也是分号分隔的若干个文件夹或压缩文件名称。
设置classpath的目的,在于告诉Java命令在哪些文件夹或压缩文件内可以找到所要执行的.class文件。
由于用“java类名”命令执行一个.class文件的文件夹通常都是当前文件夹,所以应该将表示当前文件夹的符号“.”加到classpath环境变量中。
实验2类和对象的使用(2学时)
(1)实现一个Point类,该类包含表示坐标的两个int型变量x、y,构造方法Point()和Point(intxx,intyy),返回x值和y值的intgetX()和intgetY()方法,计算两点间距离的doubledistance(Point)方法。
其中计算平方根的方法是Math.sqrt(),如:
doubled=Math.sqtr
(2);
(2)实现一个Circle类,该类包含表示圆心的Point型变量center,表示半径的intradius变量,以及构造方法Circle()、Circle(intxx,intyy,intr)、Circle(Pointc,intr),返回周长和面积的intperimeter()、doublearea()方法,返回两个圆是否为同一个圆(返回0)、同心圆(返回1)、相交的圆(返回2)、分离的圆(返回3)、包含的圆(返回4)等关系的intrelation(Circlec)等方法。
PI值可以用Math.PI常量。
(3)实现测试上述两个类的ClassTest类。
该类在main方法中分别创建若干个Point对象和Circle对象,并调用相关方法,输出方法的返回值,验证其正确性。
(4)程序调试通过后填写实验报告。
(1)类的组成:
成员变量、成员方法、构造方法
(2)对象的创建和使用
3.实验类型
设计型
掌握Java类的设计原理和对象的使用方法
(1)编写Point类,实现相关方法
(2)编写Circle类,实现相关方法
(3)编写ClassTest类,并在main方法中创建两个Point对象和两个Circle对象,对象的参数可以用固定值
(4)调用Point和Circle的相关方法,并把返回值输出到屏幕上。
6.思考题
(1)为什么distance()和relation()方法只需要一个参数?
提供两个或更多的参数有什么缺点?
(2)relation()方法只返回整数,而不是在方法内部直接输出判断结果。
这么做有什么优点?
实验3继承性(2学时)(二选一)
(1)编写颜色类Color和具有颜色值的ColoredCircle类,ColoredCircle类是Circle类的子类。
Color类包含三个颜色分量red、green和blue(取值范围为0-255);
ColoredCircle类包括圆周颜色borderColor和圆心颜色centerColor成员对象,都是自定义的Color类对象。
(2)为上述两个类添加适当的构造方法、get、set方法(如getBlue()、setBlue()、getCenterColor()).
(3)编写测试ColoredCircle类的测试类ColoredCircleTest,并在该类的main方法中调用ColoredCircle类的相关方法,验证其正确性。
(1)类的定义
(2)继承机制及其作用
掌握Java继承机制的使用方法
(1)ColoredCircle类的两个颜色分量必须是Color类对象。
(2)ColoredCircle必须是Circle类的子类。
您还可以设计哪些Circle类的子类?
继承性(与上面的继承性试验二选一,即可)
(5)编写一个代表圆柱体的Cylinder类,该类是Circle类的子类。
Cylinder类包括圆柱体的高度变量height、计算圆柱体的体积方法volume()和计算表面积的方法surfaceArea()。
(6)编写测试Cylinder类的CylinderTest类,并在该类得main方法中调用Cylinder类的相关方法。
(7)程序调试通过后填写实验报告。
(3)类的定义
(4)继承机制及其作用
(3)确定Circle类的包名
(4)在Cylinder类中用import导入Circle类
(5)编写Cylinder类的代码
(6)编写CylinderTest类的代码
实验4Object类(2学时)
(1)重写Point和Circle类的equals()、toString()方法,并测试这些方法的正确性。
(2)程序调试通过后填写实验报告。
(1)Object类的作用
(2)equals()方法和toString()方法
掌握Object类与其它类之间的关系
(1)在Point和Circle类中分别添加equals()方法和toString()方法
(2)测试上述方法的正确性
为什么equals()方法和toString()方法的访问类型必须为public?
实验5数组与异常处理(2学时)
(1)设计和编写代表矩阵的Matrix类。
该类包括矩阵行列数变量introws和intcols,矩阵数据数组doubledata[][],构造方法Matrix()、Matrix(introws,intcols)、Matrix(introws,intcols,doubledata[][]),获取某元素值的方法getData(introw,intcol),设置某元素值的方法setData(introw,intcol,doublevalue),计算两个矩阵的乘积的方法multiply(Matrixm)以及toString()等内容。
(2)编写测试类MatrixTest,并在该类中创建两个矩阵对象,计算其乘积。
(3)为矩阵类添加相关的自定义异常类,并在适当位置使用这些异常类。
(1)数组的定义
(2)类的定义
(3)异常处理
(1)掌握数组的定义和使用
(2)理解异常的使用和自定义异常类的方法。
(3)理解throw和throws的区别和联系。
(1)编写Matrix类
(2)编写MatrixTest类。
在该类中通过键盘输入方式确定所要创建的两个矩阵的行列数,根据行列数随机生成数据或键盘输入,并通过setData方法生成矩阵的内容。
(3)计算矩阵的乘积,并把结果通过toString方法输出到屏幕上
(4)编写矩阵行数或列数非法异常类IllegalArgumentException、矩阵行号或列号非法异常类IllegalIndexException以及矩阵无法相乘异常类MatrixMultiplicationException。
这些类只需要包含toString非法即可。
(5)在Matrix类的构造方法中,如果rows或cols变量值小于1,抛出IllegalArgumentException异常;
在getData和setData方法中,如果row或col大于等于矩阵行数或列数,抛出IllegalIndexException异常;
在multiply非法中,如果两个矩阵的行列数不满足矩阵相乘规则,抛出MatrixMultiplicationException异常。
(6)在MatrixTest类中测试上述异常定义是否有效。
(7)提交调试通过的Java程序。
(1)您还可以编写哪些Matrix类的方法?
(2)如果没有setData方法,如何给矩阵的某个元素值赋值?
实验6图形用户界面(2学时)
(1)编写一个简易计算器程序,其界面如下图所示:
(2)用户界面可以手工编码的形式构造,也可以使用Netbeans、Eclipse等开发工具。
(1)图形界面程序的特点
(2)事件处理机制的原理
掌握图形界面程序的设计方法和事件处理机制
(1)编写各个按钮的代码,使得能够进行四则运算。
(2)当按下“+”按钮时,两个数值文本框之间应显示“+”号,同时相加结果显示在第三个文本框内(如下图所示)。
类似处理“-”、“*”和“/”按钮。
(3)应处理除0异常和数值格式非法异常,如:
(1)文本框(TextField类)的宽度可以用构造函数设置,如:
TextFieldtf1=newTextField(10);
(2)出错提示窗口可以利用javax.swing.JOptionPane类的相应方法,如:
javax.swing.JOptionPane.showMessageDialog(null,"
请输入两个整数!
"
);
实验7输入/输出处理(2学时)
实现一个简单的图形界面文本编辑器(如下图所示),该程序从磁盘读入文本文件,并将内容显示到JTextArea中。
也可以将JTextArea内容保存到原文件或另存到其它文件中。
输入/输出处理、异常处理、图形用户界面
综合型
(1)理解流的操作
(2)能够创建、读写、更新文件
(1)在以上操作中,均要求带有异常处理结构。
(2)提交调试通过的Java程序。
(1)在JFrame中添加菜单可以用如下代码:
JMenuBarjMenuBar1=newJMenuBar();
JMenujMenu1=newJMenu("
文件"
JMenuItemjMenuItem1=newJMenuItem("
打开"
JMenuItemjMenuItem2=newJMenuItem("
保存"
JMenuItemjMenuItem3=newJMenuItem("
另存为"
JMenuItemjMenuItem4=newJMenuItem("
退出"
JSeparatorjSeparator1=newJSeparator();
jMenu1.add(jMenuItem1);
jMenu1.add(jMenuItem2);
jMenu1.add(jMenuItem3);
jMenu1.add(jSeparator1);
jMenu1.add(jMenuItem4);
jMenuBar1.add(jMenu1);
frame.setJMenuBar(jMenuBar1);
(2)默认情况下JtextArea没有滚动条,若要添加滚动条,需要用以下代码:
jScrollPane1=newJScrollPane();
jTextArea1=newJTextArea();
jScrollPane1.setViewportView(jTextArea1);
frame.add(jScrollPane1);
实验8线程(2学时)
(1)编写一个世界时钟程序,界面如下图所示:
(2)在主窗口上至少显示两个时区的时间。
(1)图形界面程序
(2)线程
掌握多线程程序的编写
5.实验提示
(1)获取时间、换算时区以及转化为字符串的代码如下:
Calendarnow=Calendar.getInstance();
now.add(Calendar.HOUR,
timeInterval);
//timeInterval为与北京时间相差的时数,如纽约为-12,伦敦为-7,东京为+2
Stringsdf=newSimpleDateFormat("
HH:
mm:
ss"
).format(now.getTime());
(2)设置JLabel字体的代码如下:
Fontfont=newFont("
宋体"
Font.BOLD,30);
l1=newJLabel("
北京时间"
l1.setFont(font);
如何提高本实验的代码重用程度?
能不能用一个类实现所有线程?