《《面向对象程序设计Java》实验讲义.doc》由会员分享,可在线阅读,更多相关《《面向对象程序设计Java》实验讲义.doc(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、面向对象程序设计Java 实验讲义黑龙江大学软件学院2010年3月目 录前 言4实验要求5实验1 Java 程序的编辑、编译、运行环境(2学时)61.实验内容62.预习内容63.实验类型64.实验目的65.实验要求6实验2 Java基本语法(2学时)71.实验内容72.预习内容73.实验类型74.实验目的75.实验要求76.思考题8实验3类和对象的使用(2学时)91.实验内容92.预习内容93.实验类型94.实验目的95.实验要求96.思考题10实验4 包及其使用(2学时)111.实验内容112.预习内容113.实验类型114.实验目的115.实验要求11实验5继承性(2学时)121.实验内容
2、122.预习内容123.实验类型124.实验目的125.实验要求126.思考题12实验6 Object类(2学时)131.实验内容132.预习内容133.实验类型134.实验目的135.实验要求136.思考题13实验7数组(2学时)141.实验内容142.预习内容143.实验类型144.实验目的145.实验要求146.思考题14实验8 异常处理(2学时)151.实验内容152.预习内容153.实验类型154.实验目的155.实验要求15实验9 输入/输出处理(2学时)161.实验内容162.预习内容163.实验类型164.实验目的165.实验要求16实验10 字符流操作(2学时)171.实验内
3、容172.预习内容173.实验类型174.实验目的175.实验要求17实验11 GUI程序(2学时)181.实验内容182.预习内容183.实验类型184.实验目的18实验12网络通信(4学时)191.实验内容192.预习内容193.实验类型194.实验目的195.实验要求196.思考题19前 言面向对象程序设计(java)实验在面向对象程序设计的基础上,阐述Java语言的编程基础及其设计方法。内容包括:Java程序的输入输出、表达式与运算符、结构化程序设计、类、属性和方法、继承和重载、包和接口、Applet与图形用户界面以及相关Java网络设计等知识,本课程注重实际应用操作,采用实例讲解为学
4、生进一步学习J2EE和J2ME打下技术基础。结合对实例的开发,以学生为主体,充分发挥学生的主观能动性,引导学生自学教材部分内容,并锻炼学生自行开发各种小型程序模块;培养和锻炼学生利用Java语言进行网络编程的能力。面向对象程序设计(java)实验是以程序设计操作为主的技能课程,它由若干个独立的实验项目组成,与相应的理论课面向对象程序设计(java)配套,本课程的目标是:(1) 加深学生对课堂讲授内容的理解,从计算机语言的基本概念、面向对象程序设计的基本方法、语法规则等方面加深理解,打好面向对象程序设计、软件开发的良好基础。(2) 在上机实验中,提高学生对Java 语言各部分内容的综合使用能力,
5、逐步掌握Java语言程序设计的规律与技巧。(3) 在对Java 程序的调试过程中,提高学生分析程序中出现的错误和排除这些错误的能力。(4) 通过上机实践,加深学生对计算机软件运行环境、Java 集成开发环境的了解。实验要求面向对象程序设计(java)实验是与面向对象程序设计(java)理论课配套的实验课程。通过本课程的实验训练,要求学生能运用所学理论知识进行基本的面向对象程序设计,培养其规范的编程习惯,掌握基本的操作技能和编程思想。同时要注意培养学生实事求是的科学态度,相互协作的团队精神,为学习后续课程,参加实际工作和开展科学研究打下良好的基础。具体要求是:(1) 本课程以实验为主,配合理论课
6、的教学。任课教师需向学生讲清课程的性质,任务,要求,课程安排和进度,平时考核内容,期末考试办法,实验守则及实验室安全制度等。(2) 本课程主要设置下列类型的实验:(1)基本操作训练,(2)验证性及设计性实验;整个实验过程包括课前准备,实验操作,实验报告等环节。学生在实验前必须进行准备。(3) 根据实验内容不同,基本操作性的实验1 人1 组,设计性实验可根据情况多人一组,每个实验要求在规定时间内由学生独立完成。(4) 实验过程中,老师应在实验室进行巡视,及时回答问题,纠正学生的错误操作,检查学生的实验报告。(5) 任课教师要认真备课,提前预做实验,上好每一堂课。实验前清点学生人数。实验的验收将分
7、为两个部分。第一部分是上机操作,包括设计结果的源程序的验收与检查。第二部分是提交书面的实验报告。实验1 Java 程序的编辑、编译、运行环境(2学时)1.实验内容(1) 编写并调试运行HelloWorld应用程序。(2) 编写并调试运行HelloWorld小应用程序。(3) 设置path和classpath环境变量。(4) 实现一个整数N的阶乘运算。N为固定常数。2.预习内容Java语言概述3.实验类型验证型4.实验目的(1) 了解 Java 程序运行环境;(2) 掌握程序调试的全部过程;(3) 学会编写和调试 Java Application 和 Java Applet 程序;(4) 掌握j
8、ava环境变量的配置 5.实验要求(1) 在修改源程序文件名时,测试源程序文件名是否必须与公有类类名一致;若源程序中没有公有类,源程序文件名可以如何命名;(2) 注意观察字节码文件何时生成,在何路径下生成;(3) 掌握设置环境变量的方法。(4) 阶乘计算部分必须用函数的递归调用来实现,函数定义时应声明为static,如:static long getFactorial(int i) 实验2 Java基本语法(2学时)1.实验内容(1)在屏幕上按如下格式输出乘法口诀表:1X1=11X2=2 2X2=41X3=3 2X3=6 3X3=9其中,每行的多个乘法公式之间用t分割(2)编写一个简单的猜数游
9、戏程序:l 利用Math.random()方法生成0-1之间的double型数dNum,将dNum转换为0-100之间的整数iNum。l 利用KeyInput.readInt()方法接收键盘输入的整数inNum。如果inNum小于iNum,在屏幕上显示“输入的值小,请输入更大的数.”;如果inNum大于iNum,在屏幕上显示“输入的值大,请输入更小的数.”;如果inNum等于iNum,在屏幕上显示“猜对了.”,并结束运行。l 猜测错误的时候,重新输入inNum,直到猜对为止。如果猜测10次后仍未猜对,显示“猜测次数已达10次,猜数失败.”,并结束程序的运行。程序调试通过后填写实验报告。2.预习
10、内容(1) 常用控制语句的格式(2) System.out.print和System.out.println方法的区别3.实验类型 设计型4.实验目的掌握Java循环控制语句和System.out.print、System.out.println方法的使用掌握Java随机数方法和键盘输入类KeyInput的使用5.实验要求(1) 乘法口诀表部分l 编写NineMultiply类l 在main方法中实现乘法口诀表的输出(2) 猜数游戏部分l 编写NumGuessGame类l 在main方法中定义相关变量l 生成dNum和iNuml 利用KeyInput.readInt(),获取inNum值l 根
11、据inNum和iNum值,显示相应信息l 如果猜测10次仍未成功,结束程序的运行6.思考题l 如何将程序修改成可以猜测多个数的程序?l 如何将猜数游戏程序编写成更为灵活的类?实验3类和对象的使用(2学时)1.实验内容(1) 实现一个Point类,该类包含表示坐标的两个int型变量x、y,构造方法Point()和Point(int xx, int yy),返回x值和y值的int getX()和int getY()方法,计算两点间距离的double distance(Point)方法。其中计算平方根用Math.sqrt()方法。(2) 实现一个Circle类,该类包含表示圆心的Point型变量ce
12、nter,表示半径的int radius变量,以及构造方法Circle()、Circle(int xx,int yy,int r)、Circle(Point c,int r),返回周长和面积的int perimeter()、double area()方法,返回两个圆是否为同一个圆(返回0)、同心圆(返回1)、相交的圆(返回2)、分离的圆(返回3)、包含的圆(返回4)等关系的int relation(Circle c)等方法。PI值可以用Math.PI常量。(3) 实现测试上述两个类的ClassTest类。该类在main方法中分别创建若干个Point对象和Circle对象,并调用相关方法,输出方
13、法的返回值,验证其正确性。(4) 程序调试通过后填写实验报告。2.预习内容(1) 类的组成:成员变量、成员方法、构造方法(2) 对象的创建和使用3.实验类型 设计型4.实验目的掌握Java类的设计原理和对象的使用方法5.实验要求(1) 编写Point类,实现相关方法(2) 编写Circle类,实现相关方法(3) 编写ClassTest类,并在main方法中创建两个Point对象和两个Circle对象,对象的参数可以用固定值(4) 调用Point和Circle的相关方法,并把返回值输出到屏幕上。6.思考题(1) 为什么distance()和relation()方法只需要一个参数?提供两个或更多的
14、参数有什么缺点?(2) relation()方法只返回整数,而不是在方法内部直接输出判断结果。这么做有什么优点?实验4 包及其使用(2学时)1.实验内容(1) 将1-3实验中类的包名分别调整为experiment?,并重新运行,验证是否运行正确。其中?表示实验编号。(2) 实现Rectangle类和RectangleTest类。其中,Rectangle类隶属于包的包名为experiment9,含有两个方法:构造方法Rectangle()和计算面积的方法area();RectangleTest类不属于experiment9包,利用RectangleTest类调用包experiment9中的Rec
15、tangle类,计算矩形面积。2.预习内容Java包及其使用方法3.实验类型 设计型4.实验目的(1) 理解包的概念以及package语句的用法。(2) 掌握编译和运行包的方法。(1) 理解import语句的用法。(3) 掌握自己设计包的方法和步骤以及调用自己设计的包的方法。5.实验要求(1)l 把实验1-3的程序制作为3个Java包。l 实验中的包名为experiment?,其中?表示实验编号。例如,实验1中的HelloWorldApp类的所隶属的包名为experiment1。(2)l 实现Rectangle类,含有两个方法:构造方法Rectangle()和计算面积的方法area()。l R
16、ectangle类隶属于包的包名为experiment9l 实现RectangleTest类。利用RectangleTest类调用包experiment9中的Rectangle类,计算矩形面积。(3) 提交调试通过的Java程序。实验5继承性(2学时)1.实验内容(1) 编写一个代表圆柱体的Cylinder类,该类是Circle类的子类。Cylinder类包括圆柱体的高度变量height以及计算圆柱体的体积方法volume()和计算表面积的方法surfaceArea()。(2) 编写测试Cylinder类的CylinderTest类,并在该类得main方法中调用Cylinder类的相关方法。(
17、3) 程序调试通过后填写实验报告。2.预习内容(1) 类的定义(2) 继承机制及其作用3.实验类型 设计型4.实验目的掌握Java继承机制的使用方法5.实验要求(1) 确定Circle类的包名(2) 在Cylinder类中用import导入Circle类(3) 编写Cylinder类的代码(4) 编写CylinderTest类的代码6.思考题您还可以设计哪些Circle类的子类?实验6 Object类(2学时)1.实验内容(1) 重写Point和Circle类的equals()、toString()方法,并测试这些方法的正确性。(2) 程序调试通过后填写实验报告。2.预习内容(1) Objec
18、t类的作用(2) equals()方法和toString()方法3.实验类型 设计型4.实验目的掌握Object类与其它类之间的关系5.实验要求(1) 在Point和Circle类中分别添加equals()方法和toString()方法(2) 测试上述方法的正确性6.思考题为什么equals()方法和toString()方法的访问类型必须为public?实验7数组(2学时)1.实验内容(1) 设计和编写代表矩阵的Matrix类。该类包括矩阵行列数变量int rows和int cols,矩阵数据数组double data,构造方法Matrix()、Matrix(int rows,int cols
19、)、Matrix(int rows,int cols,double data),获取某元素值的方法getData(int row,int col),设置某元素值的方法setData(int row,int col,double value),计算两个矩阵的乘积的方法multiply(Matrix m)以及toString()等内容。(2) 编写测试类MatrixTest,并在该类中创建两个矩阵对象,计算其乘积。(3) 程序调试通过后填写实验报告。2.预习内容(1) 数组的定义(2) 类的定义3.实验类型 设计型4.实验目的掌握数组的定义和使用5.实验要求(1) 编写Matrix类(2) 编写M
20、atrixTest类。在该类中通过键盘输入方式确定所要创建的两个矩阵的行列数,根据行列数随机生成数据或键盘输入,并通过setData方法生成矩阵的内容。(3) 计算矩阵的乘积,并把结果通过toString方法输出到屏幕上6.思考题(1) 您还可以编写哪些Matrix类的方法?(2) 如果没有setData方法,如何将矩阵的元素值赋值? 实验8 异常处理(2学时)1.实验内容将教材书后的习题二第6小题调试通过。2.预习内容异常处理3.实验类型 其它型4.实验目的(1) 理解异常的使用和自定义异常类的方法。(2) 理解throw和throws的区别和联系。5.实验要求(1) 将教材书后的习题二第6
21、小题调试通过。(2) 提交调试通过的Java程序。实验9 输入/输出处理(2学时)1.实验内容结合例10-3和11-3,实现文件复制和显示功能的程序。2.预习内容输入/输出处理3.实验类型 验证型4.实验目的理解FileInputStream和FileOutputStream类的使用方法。5.实验要求(1) 结合例10-3和11-3,实现文件复制和显示功能的程序。把程序调试通过。(2) 在以上操作中,均要求带有异常处理结构(3) 提交调试通过的Java程序。实验10 字符流操作(2学时)1.实验内容实现一个简单的文本编辑器,该编辑器从键盘依次读入成行的文本,并将文本内容及时写入文件中,文件名由
22、命令行参数指定。如果输入“stop”,运行结束。2.预习内容输入/输出处理中的字符流操作3.实验类型 设计型4.实验目的(1) 理解字符流操作:练习面向字符的I/O 流操作(2) 能够创建、读写、更新文件5.实验要求(1) 在以上操作中,均要求带有异常处理结构。(2) 提交调试通过的Java程序。实验11 GUI程序(2学时)1.实验内容(1) 编写一个简易计算器程序,其界面如下图所示:(2) 用户界面可以手工编码的形式构造,也可以使用Netbeans、Eclipse等开发工具(3) 编写各个按钮的代码,使得能够进行四则运算。(4) 程序调试通过后填写实验报告。2.预习内容(1) 图形界面程序
23、的特点(2) 事件处理机制的原理3.实验类型 设计型4.实验目的掌握图形界面程序的设计方法和事件处理机制实验12网络通信(4学时)1.实验内容(1) 编写两点间实时通信的图形界面软件。该软件分为客户端和服务器端两个程序,客户端通过IP地址与服务器端连接,连接成功后双方能够实时发送通信数据。(2) 程序调试通过后填写实验报告。2.预习内容(1) GUI编程(2) 线程的构造(3) Socket通信3.实验类型 综合型4.实验目的掌握GUI编程、网络通信、I/O流和线程的使用5.实验要求(1) 编写服务器端类TalkServer,该类建立ServerSocket对象,并在接收客户端的连接时建立接收客户端信息线程和接收键盘输入线程。(2) 编写客户端类TalkClient,该类通过IP地址(键盘输入或命令行参数,如果两个程序都在本机上运行,IP地址为127.0.0.1)与服务器端连接。连接成功后建立接收服务器端信息线程和接收键盘输入线程。(3) 分别打开两个命令窗口,运行服务器端和客户端程序。(4) 键盘输入通信内容,并查看客户端和服务器端之间是否通信成功。6.思考题(1) 如果将程序修改成可以在多个客户端之间实时通信的程序,服务器端应该做哪些调整?(2) 为什么必须采用线程?
限制150内