黑龙江大学面向对象程序设计Java实验讲义Word下载.docx
《黑龙江大学面向对象程序设计Java实验讲义Word下载.docx》由会员分享,可在线阅读,更多相关《黑龙江大学面向对象程序设计Java实验讲义Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
(1)本课程以实验为主,配合理论课的教学。
任课教师需向学生讲清课程的性质,任务,要求,课程安排和进度,平时考核内容,期末考试办法,实验守则及实验室安全制度等。
(2)本课程主要设置下列类型的实验:
(1)基本操作训练,
(2)验证性及设计性实验;
整个实验过程包括课前准备,实验操作,实验报告等环节。
学生在实验前必须进行准备。
(3)根据实验内容不同,基本操作性的实验1人1组,设计性实验可根据情况多人一组,每个实验要求在规定时间内由学生独立完成。
(4)实验过程中,老师应在实验室进行巡视,及时回答问题,纠正学生的错误操作,检查学生的实验报告。
(5)任课教师要认真备课,提前预做实验,上好每一堂课。
实验前清点学生人数。
实验的验收将分为两个部分。
第一部分是上机操作,包括设计结果的源程序的验收与检查。
第二部分是提交书面的实验报告。
实验1Java程序的编辑、编译、运行环境(2学时)
1.实验内容
(1)编写并调试运行HelloWorld应用程序。
(2)编写并调试运行HelloWorld小应用程序。
(3)设置path和classpath环境变量。
程序调试通过后填写实验报告。
2.预习内容
Java语言概述
3.实验类型
验证型
4.实验目的
(1)了解Java程序运行环境;
(2)掌握程序调试的全部过程;
(3)学会编写和调试JavaApplication和JavaApplet程序;
(4)掌握java环境变量的配置
5.实验要求
(1)在修改源程序文件名时,测试源程序文件名是否必须与公有类类名一致;
若源程序中没有公有类,源程序文件名可以如何命名;
(2)注意观察字节码文件何时生成,在何路径下生成;
(3)掌握设置环境变量的方法。
实验2Java基本语法(2学时)
(1)实现一个整数N的阶乘运算。
N为固定常数。
(2)在屏幕上按如下格式输出乘法口诀表:
1X1=1
1X2=22X2=4
1X3=32X3=63X3=9
…
其中,每行的多个乘法公式之间用‘\t’分割
(3)编写一个简单的猜数游戏程序:
●利用Math.random()方法生成0-1之间的double型数dNum,将dNum转换为0-100之间的整数iNum。
●利用KeyInput.readInt()方法接收键盘输入的整数inNum。
如果inNum小于iNum,在屏幕上显示“输入的值小,请输入更大的数.”;
如果inNum大于iNum,在屏幕上显示“输入的值大,请输入更小的数.”;
如果inNum等于iNum,在屏幕上显示“猜对了.”,并结束运行。
●猜测错误的时候,重新输入inNum,直到猜对为止。
如果猜测10次后仍未猜对,显示“猜测次数已达10次,猜数失败.”,并结束程序的运行。
常用控制语句的格式
System.out.print和System.out.println方法的区别
(1)掌握Java循环控制语句和System.out.print、System.out.println方法的使用
(2)掌握Java随机数方法和键盘输入类KeyInput的使用
(1)阶乘计算部分必须用函数的递归调用来实现,函数定义时应声明为static,如:
StaticlonggetFactorial(inti){
…
}
(2)乘法口诀表部分
●编写NineMultiply类
●在main方法中实现乘法口诀表的输出
(3)猜数游戏部分
●编写NumGuessGame类
●在main方法中定义相关变量
●生成dNum和iNum
●利用KeyInput.readInt(),获取inNum值
●根据inNum和iNum值,显示相应信息
●如果猜测10次仍未成功,结束程序的运行
6.思考题
●如何将程序修改成可以猜测多个数的程序?
●如何将猜数游戏程序编写成更为灵活的类?
实验3类、对象以及包的使用(6学时)
(1)实现一个Point类,该类包含表示坐标的两个int型变量x、y,构造方法Point()和Point(intxx,intyy),返回x值和y值的intgetX()和intgetY()方法,计算两点间距离的doubledistance(Point)方法。
其中计算平方根用Math.sqrt()方法。
(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实验中类的包名分别调整为experiment?
,并重新运行,验证是否运行正确。
其中?
表示实验编号。
(5)实现Rectangle类和RectangleTest类。
其中,Rectangle类隶属于包的包名为experiment9,含有两个方法:
构造方法Rectangle()和计算面积的方法area();
RectangleTest类不属于experiment9包,利用RectangleTest类调用包experiment9中的Rectangle类,计算矩形面积。
(6)程序调试通过后填写实验报告。
(1)类的组成:
成员变量、成员方法、构造方法
(2)对象的创建和使用
(3)Java包及其使用方法
3.实验类型
设计型
(1)掌握Java类的设计原理和对象的使用方法
(2)理解包的概念以及package语句的用法。
(3)掌握编译和运行包的方法。
(4)理解import语句的用法。
(5)掌握自己设计包的方法和步骤以及调用自己设计的包的方法。
(1)编写Point类,实现相关方法
(2)编写Circle类,实现相关方法
(3)编写ClassTest类,并在main方法中创建两个Point对象和两个Circle对象,对象的参数可以用固定值
(4)调用Point和Circle的相关方法,并把返回值输出到屏幕上。
(5)
●把实验1-2的程序制作为2个Java包。
●实验中的包名为experiment?
,其中?
例如,实验1中的HelloWorldApp类的所隶属的包名为experiment1。
(6)
●实现Rectangle类,含有两个方法:
构造方法Rectangle()和计算面积的方法area()。
●Rectangle类隶属于包的包名为experiment9
●实现RectangleTest类。
利用RectangleTest类调用包experiment9中的Rectangle类,计算矩形面积。
(7)提交调试通过的Java程序和实验报告。
(1)为什么distance()和relation()方法只需要一个参数?
提供两个或更多的参数有什么缺点?
(2)relation()方法只返回整数,而不是在方法内部直接输出判断结果。
这么做有什么优点?
实验4继承性与Object类(2学时)
(1)编写一个代表圆柱体的Cylinder类,该类是Circle类的子类。
Cylinder类包括圆柱体的高度变量height以及计算圆柱体的体积方法volume()和计算表面积的方法surfaceArea()。
(2)编写测试Cylinder类的CylinderTest类,并在该类得main方法中调用Cylinder类的相关方法。
(3)重写Point和Circle类的equals()、toString()方法,并测试这些方法的正确性。
(4)定义四则运算接口Computable,接口中包括加、减、乘、除四个抽象方法。
再定义接口的实现类和测试类两个类,测试类中尝试使用接口回调调用四则运算方法。
(5)程序调试通过后填写实验报告。
(1)类的定义
(2)继承机制及其作用
(3)Object类的作用
(4)equals()方法和toString()方法
掌握Java继承机制的使用方法
掌握Object类与其它类之间的关系
(1)确定Circle类的包名
(2)在Cylinder类中用import导入Circle类
(3)编写Cylinder类的代码
(4)编写CylinderTest类的代码
(5)在Point和Circle类中分别添加equals()方法和toString()方法
(6)测试上述方法的正确性
您还可以设计哪些Circle类的子类?
为什么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)验证教材例7.5,了解向量Vector的用法
(4)程序调试通过后填写实验报告。
(1)数组的定义
(2)类的定义
(3)向量的使用
掌握数组的定义和使用,了解向量的用法。
(1)编写Matrix类
(2)编写MatrixTest类。
在该类中通过键盘输入方式确定所要创建的两个矩阵的行列数,根据行列数随机生成数据或键盘输入,并通过setData方法生成矩阵的内容。
(3)计算矩阵的乘积,并把结果通过toString方法输出到屏幕上
(1)您还可以编写哪些Matrix类的方法?
(2)如果没有setData方法,如何将矩阵的元素值赋值?
实验6异常处理(2学时)
将教材书后的习题二第6小题调试通过。
异常处理
其它型
(1)理解异常的使用和自定义异常类的方法。
(2)理解throw和throws的区别和联系。
(1)将教材书后的习题二第6小题调试通过。
(2)提交调试通过的Java程序。
实验7输入/输出处理(2学时)
(1)结合例10-3和11-3,实现文件复制和显示功能的程序。
(2)实现一个简单的文本编辑器,该编辑器从键盘依次读入成行的文本,并将文本内容及时写入文件中,文件名由命令行参数指定。
如果输入“stop”,运行结束。
输入/输出处理、输入/输出处理中的字符流操作
(1)理解FileInputStream和FileOutputStream类的使用方法。
(2)理解字符流操作:
练习面向字符的I/O流操作
(3)能够创建、读写、更新文件
(1)结合例10-3和11-3,实现文件复制和显示功能的程序。
把程序调试通过。
(2)在以上操作中,均要求带有异常处理结构
(3)提交调试通过的Java程序。
实验8GUI程序(2学时)
(1)编写一个简易计算器程序,其界面如下图所示:
(2)用户界面可以手工编码的形式构造,也可以使用Netbeans、Eclipse等开发工具
(3)编写各个按钮的代码,使得能够进行四则运算。
(1)图形界面程序的特点
(2)事件处理机制的原理
掌握图形界面程序的设计方法和事件处理机制
实验9布局及事件处理(6学时)
(1)结合自己所学的基本组件及授权事件处理模型,完成不同组件的事件处理。
(2)综合I/O流及GUI设计相关内容,在记事本程序、Windows自带计算器、扫雷游戏中任选其一来模拟编程。
(1)GUI编程(布局、事件及基本组件)
(2)I/O流的应用
综合型
掌握GUI编程、I/O流的使用
(1)编写一个GUI程序,要求程序中包含List、Choice和TextField,在List中包含100项,内容分别是“前1项”,“前2项”,。
。
“前100项”,用来代表1——100之间,取前几项进行运算。
Choice中包含3项,分别是“求和”,“求平方和”,“求立方和”,分别处理List的双击及Choice的事件,在TextField中显示结果。
(2)仿照windows的记事本程序、扫雷游戏或者计算器编写一个自己的程序。
要求界面基本相同,能够实现最基本的功能。
(3)建议使用swing组件。
(1)如何结合IO实现记事本的打开和保存操作?
(2)如何实现复制、粘贴及剪切操作?
(3)游戏该如何设计?
相关功能如何实现?