《面向对象程序设计(JAVA)》.doc_第1页
《面向对象程序设计(JAVA)》.doc_第2页
《面向对象程序设计(JAVA)》.doc_第3页
《面向对象程序设计(JAVA)》.doc_第4页
《面向对象程序设计(JAVA)》.doc_第5页
免费预览已结束,剩余38页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java程序设计实验指导书华中师范大学信息技术系二00九年五月项目一 Java语言基础3项目二 Java面向对象程序设计13项目三 Java高级编程23项目四 综合型Java程序设计与开发 (一)41项目五 综合型Java程序设计与开发 (二)42附录一:实验报告要求43附录二:实验成绩评分办法44项目一 Java语言基础一、实验学习目标1熟悉Java开发环境2了解和掌握Java的基本数据类型和基本运算3掌握Java语言的条件控制语句,循环语句以及转向语句。4理解和掌握数组的基本内容(包括数组声明,初始化,复制等)。5掌握多维数组的定义和使用。二、实验设备PC三、实验内容1配置JDK运行路径并编译运行第一个Java应用程序。2. 通过求最大值,算术运算,位移运算等小程序体会Java的基本数据类型和基本运算。 3通过成绩等级判定,九九乘法表等小程序体会Java语言的条件控制语句,循环语句以及转向语句 。4编写程序实现通过键盘输入10个数字并对这些数字进行排序,然后以从小到大的顺序输出。5编写程序实现两个矩阵相乘。四、实验原理 JDK(Java Development Toolkit)是Sun公司开发的Java开发工具包,它是一个简单的命令行工具,主要包括软件库、编译Java源代码的编译器、运行Java字节码的解释器,以及测试Java Applet的Applet阅读器,还有其他一些有用的工具。JDK主要是通过DOS命令行,在DOS环境下进行Java程序的编译和运行。常用的JDK工具包括javac、java、javadoc、appletviewer、jar、jdb、javah、javap、extcheck命令。要了解它们的具体语法描述,可以在设置好JDK路径后,在DOS环境下直接输入相关“工具名称”按回车,就能够看到每种工具的具体使用语法。五、实验步骤1安装好JDK 5.0后,如果想在系统的任意目录下编译和运行编写好的Java程序,需要先设置环境变量。本实验将在Windows系统下的环境变量中设置JDK运行路径( 以使用安装程序的默认路径:C:Program FilesJava jdk1.5.0_06为例)。(1)鼠标右键单击“我的电脑”,选择“属性”,在弹出对话框中选择“高级”下的“环境变量”,如图1.1所示。(2)在“系统变量”中选择Path,单击“编辑”按钮,如图1.2所示,在弹出对话框中的“变量值”文本框中添加;C:Program FilesJavajdk1.5.0_06bin (如果前一个变量值后已有“;”则将路径信息加入即可),单击“确定”按钮,如图1.3所示。图1.1图1.2图1.3 (3)在“环境变量”对话框中单击“新建”按钮,如图1.4所示,在弹出对话框中的“变量名”后输入java_home,“变量值”后输入C:Program FilesJavajdk1.5.0_06,单击“确定”按钮,如图1.5所示。图1.4(4)在“环境变量”下单击“新建”按钮,在弹出对话框中的“变量名”后输入classpath,在“变量值”后输入C:Program FilesJavajdk1.5.0_06libtools.jar;C:Program FilesJava jdk1.5.0_06jrelibrt.jar; .;,单击“确定”按钮,如图1.6所示。 图1.5 图1.6 至此环境变量设置完毕, 可以通过在DOS环境下直接键入javac命令按回车来检查环境变量设置是否成功,如果设置成功则可看到如图1.7所示结果。图1.7在以后需要通过DOS命令直接编译和执行Java程序时,只需进入Java程序所在的存放目录,通过javac和Java命令编译和执行相应程序。(5) 设置好JDK 5.0的路径后,使用任意文本编辑器编写第一个Java程序,程序源代码如图1.8所示。将文件保存成以HelloWorld.java为文件名的文件。使用DOS命令进入HelloWorld.java文件所存放的目录(如:D:Example),使用javac命令编译该应用程序,通过编译后在该文件夹中会生成一个名为HelloWorld.class的class文件,该class文件包含程序的字节码(Java字节码中包含的是Java解释程序将要执行的指令码),使用Java命令执行该class文件,将运行结果截图写入实验报告。命令格式如下所示:D:Examplejavac HelloWorld.javaD:Examplejava HelloWorld 图1.82阅读并分析程序Example1.java,程序源代码如图1.9所示。请写出分析的结果。然后新建Example1.java文件,将程序输入并保存。使用DOS命令进入其所存放的目录,编译运行该程序,看运行结果是否与之前的分析一致。如果不一致,请分析出错的原因。图1.93阅读如图1.10所示程序。新建CompareTwoNumbers1.java文件,输入程序,将程序中“代码1-4”处补充完整并保存。使用DOS命令进入其所存放的目录,编译运行该程序。通过键盘在控制台输入任意2个实数,将完整程序和运行结果截图写入实验报告。图1.104阅读如图1.11所示程序。新建BitMovement.java文件,输入程序,将程序中“代码1-4”处补充完整并保存。使用DOS命令进入其所存放的目录,编译运行该程序。通过键盘在控制台输入任意1个整数,分析运行结果并将完整程序和运行结果截图写入实验报告。图1.115阅读如图1.12所示程序,该程序要求将10个学生的成绩按等级输出(如=90:A,89-90:B等)。新建ChineseGrade2.java文件,输入程序,将如图所示程序补充完整并保存。使用DOS命令进入其所存放的目录,编译运行该程序。通过键盘在控制台输入10个学生的成绩,并将完整程序和运行结果截图写入实验报告。图1.126阅读如图1.13所示程序,该程序要求输出一个九九乘法表。新建MultiplyList1.java文件,输入程序,将如图所示程序补充完整并保存。使用DOS命令进入其所存放的目录,编译运行该程序。并将完整程序和运行结果截图写入实验报告。图1.137阅读如图1.14所示程序。新建InsertSort.java文件,输入程序,将程序中“代码1-4”处补充完整并保存。使用DOS命令进入其所存放的目录,编译运行该程序。并将完整程序和运行结果截图写入实验报告。图1.148阅读如图1.15所示程序,该程序通过键盘输入两个矩阵(前提是作为乘数的矩阵的列数和作为被乘数的矩阵的行数相等),并将它们相乘的结果输出。新建MatrixMultiply.java文件,输入程序,找出程序中的4处错误并说明错误原因。使用DOS命令进入其所存放的目录,编译运行该程序。并将完整程序和运行结果截图写入实验报告。图1.15六、实验思考1JDK与JRE什么不同?2+i和i+有什么不同?3位移运算中和有什么不同?4Continue和break有什么不同?5二维数组的length属性和一维数组的length属性含义是否相同?项目二 Java面向对象程序设计一、实验学习目标1 理解类的定义和对象的声明2 理解掌握构造函数的使用3 理解静态成员和实例成员的区别4 理解掌握子类概念和方法覆盖的使用5 理解掌握多态和动态绑定的含义与使用二、实验设备PC 三、实验原理1类(class)和对象(object)是面向对象方法的核心概念。类是对一类事物描述,是抽象的、概念上的定义;对象是实际存在的该类事物的每个个体,因而也称实例(instance)。 2在Java类中声明变量、方法和内部类时,可使用关键字static做为修饰符。static标记的变量或方法由整个类(所有实例)共享,如访问控制权限允许,可不必创建该类对象而直接用类名加“.”调用。static成员也称类成员或静态成员,如:类属性、类方法、静态方法等。3Java语言中变量按被声明的位置划分为局部变量(方法或语句块内部定义的变量)个成员变量(方法外部、类的内部定义的变量)。局部变量的作用域就是它所在的方法或语句块在程序调用方法(进入语句块)时,局部变量才被创建并可用,随方法(语句块)的退出。成员变量在类的定义中声明,在创建对象的同时创建有关的成员变量。成员变量依附于对象存在,具有与对象相同的生存期和作用域。 4在方法覆盖(又名方法重写)的时候应注意:在子类中可以根据需要对从父类中继承来的方法进行重写。重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值类型。重写方法不能使用比被重写方法更严格的访问权限。5多态性是指具有相同的方法接口,却有不同的实现。在Java中超类往往定义一个通用的方法,而其不同的实现则由它不同的子类来完成。当通过对象来调用这样一个方法时,Java会根据运行时该对象的实际类型来决定用方法的哪个版本来执行,即动态绑定。四、实验内容1通过一个程序体会类的定义和对象的声明以及构造函数的使用。2通过一个程序体会静态成员和实例成员的区别3通过一个程序体会子类概念和方法覆盖的使用4通过一个程序体会多态和动态绑定的含义与使用 五、实验步骤1(1)阅读如图2.1所示程序。该程序实现了一个圆环类Ring,该类有3个属性,分别是内半径innerRadius,外半径outerRadius和颜色color,这些属性可以自行设置也可以得到其值,并且该程序还可以返回圆环的面积Area。图2.1(2)新建Ring.java文件,输入程序,将程序中“代码1-4”处补充完整并保存。(3)使用DOS命令进入其所存放的目录,编译运行该程序。并将完整程序和运行结果截图写入实验报告。2阅读如图2.2所示程序。该程序实现了一个圆类Circle,该类有3个属性,分别是圆周率pi,半径radius和圆对象个数objectNo,其中圆周率和圆对象个数为static成员。并且该程序还有两个static方法用来设置圆周率和显示当前圆对象个数。图2.2(2)新建Circle.java文件,输入程序并保存。(3)使用DOS命令进入其所存放的目录,编译运行该程序。分析观察运行结果并将运行结果截图写入实验报告。(4)能否将程序中的cir1.setRadius(10)改为Circle.setRadius(10)?为什么?将圆周率pi的static修饰符去掉,会出现什么结果?为什么?将setPI(double p)的 static修饰符去掉呢?圆对象个数objectNo为什么要设置为static,它的作用是什么?将你的分析写入实验报告。3阅读如图2.3所示程序。该程序实现了一个父类Telephone和其子类Mobilephone,该类有电话品牌,电话号码等属性,另外还有计算话费和显示信息等方法。子类Mobilephone除了具有父类的属性外,还有网络类型,被叫时间等属性,另外它还有自己的计算话费和显示信息的方法。 图2.3(2)新建Inheritance.java文件,输入程序,将程序中“代码1-5”处补充完整并保存。(3)使用DOS命令进入其所存放的目录,编译运行该程序。并将完整程序和运行结果截图写入实验报告。(4)Mobilephone类的display( )方法中的 callCost( )方法调用的是谁的方法?如何调用父类的callCost( )方法?另外,将Mobilephone类的构造方法中的super(b, num)去掉,有什么结果?为什么?将你的分析写入实验报告。4阅读如图2.4所示程序。该程序实现了三个类:抽象父类Student(包括了一些学生的基本信息,如姓名,所学课程,课程成绩等)和其子类Undergraduate,Postgraduate。两个子类之间的主要差别是计算课程成绩等级的标准有所不同。图2.4(2)新建Polymorphism.java文件,输入程序,将程序中“代码1-5”处补充完整并保存。(3)使用DOS命令进入其所存放的目录,编译运行该程序。并将完整程序和运行结果截图写入实验报告。(4)能否在main()方法中添加语句Students s1 = new Students (陈建平)?为什么?main()方法中的语句studentsi.calculateGrade()都是调用哪些类的calculateGrade()方法?将你的分析写入实验报告。六、实验思考1方法覆盖和方法重载有什么不同?2一个引用类型变量如果声明为父类的类型,但实际引用的是子类对象,那么该变量可以访问子类中添加的属性和方法吗?为什么? 项目三 Java高级编程一、实验学习目标1 了解掌握javax.swing包中的常用GUI组件2 了解掌握事件处理机制3 了解掌握5种常用的布局管理器4 了解掌握javax.swing包中外观设置5 了解掌握字节流和字符流概念及其使用6 了解掌握ObjectInputStream, ObjectOutputStream的使用和对象序列化概念 7掌握 ZipOutputStream以及ZipIputStream的使用二、实验设备PC三、实验内容1通过一个名片录入界面程序体会javax.swing包中的常用GUI组件和常用的布局管理器的使用。2. 通过一个文字字体设置程序体会javax.swing包中外观设置和事件处理机制。3通过在文件中对对象进行数据的读写的程序体会ObjectInputStream, ObjectOutputStream的使用和对象序列化概念 。4通过压缩和解压两个小程序体会ZipOutputStream以及ZipIputStream的使用。 四、实验原理1Abstract Windows Toolkit(AWT)是最原始的 Java GUI 工具包。AWT的缺省实现使用了对等机制,即每一个Java GUI窗口部件都在底层的窗口系统中有一个对应的组件。例如,每一个java.awt.Button对象将在底层窗口系统中创建一个唯一对应的button。当用户点击那个按钮的时候,事件将从本地实现库传送到Java虚拟机里,并且最终传送到与java.awt.Button对象相关联的逻辑。对等系统的实现以及Java组件与对等组件之间的交流的实现都隐藏在底层JVM实现中,Java语言级的代码仍然跨平台。AWT 的主要优点是,它在 Java 技术的每个版本上都成为了一种标准配置,包括早期的 Web 浏览器中的 Java 实现。另外它也非常稳定,这意味着我们不需要单独安装这个工具包,在任何一个 Java 运行环境中都可以使用它。AWT 是一个非常简单的具有有限 GUI 组件、布局管理器和事件的工具包 。 因为 Sun 公司决定为 AWT 使用一种最小公分母(LCD)的方法(即AWT只拥有所有平台上都存在的组件的公有集合)。因此它只会使用为所有 Java 主机环境定义的 GUI 组件。最终的结果非常不幸,有些经常使用的组件,例如表、树、进度条等,都不支持。对于需要更多组件类型的应用程序来说,需要从头开始创建这些组件,这是一个很大的负担。2 Java Swing 是 Java Foundation Classes(JFC)的一部分,它是试图解决 AWT 缺点的一个尝试。在 Swing 中,Sun 开发了一个经过仔细设计的、灵活而强大的 GUI 工具包。 Swing 是在 AWT 组件基础上构建的,所有 Swing 组件实际上也是 AWT 的一部分。Swing 使用了 AWT 的事件模型和支持类,例如 Colors、Images 和 Graphics。 为了克服在不同主机上行为也会不同的缺点,Swing 将对主机控件的依赖性降至了最低。实际上,Swing 只为诸如窗口和框架之类的顶层 组件使用对等体。大部分组件(JComponent 及其子类)都是使用纯 Java 代码来模拟的。这意味着 Swing 天生就可以在所有主机之间很好地进行移植。因此,Swing 通常看起来并不像是本地程序。实际上,它有很多外观,有些模拟(尽管通常并不精确)不同主机的外观,有些则提供了独特的外观。 Swing 对基于对等体的组件使用的术语是重量级(heavyweight),对于模拟的组件使用的术语是轻量级(lightweight)。实际上,Swing 可以支持在一个 GUI 中混合使用重量级组件和轻量级组件,例如在一个 JContainer 中混合使用 AWT 和 Swing 控件,但是如果组件产生了重叠,就必须注意绘制这些控件的顺序。Swing 无法充分利用硬件 GUI 加速器和专用主机 GUI 操作的优点。结果是 Swing 应用程序可能比本地 GUI 的程序运行速度都慢。Sun 花费了大量的精力来改进Swing 的性能,这种缺点正在变得日益微弱。由于 Swing 的设计更加健壮,因此其代码基础也更坚实。这意味着它可以在一台健壮的机器上比 AWT 运行得更好。 3Java是通过数据流来实现数据的输入和输出的。通过数据流,程序可以从外部获得数据信息,也可以将数据信息传送到外部。在Java中,Reader和Writer是所有基于字符的数据流类的父类,它们可以处理16位的字符。另外,InputStream和OutputStream是所有基于字节的数据流类的父类,它们处理8位的字节数据。Java的对象序列化就是将对象的状态转换成字节流,以后可以通过这些字节信息再生成相同状态的对象。对象序列化能使对象获得持续性,可以长久保存。 五、实验步骤1阅读分析如图3.2所示程序。该程序实现了一个名片录入界面,当点击“取消”按钮时程序退出。程序运行结果如图3.1所示。图3.1 图3.2(2)新建CardManager.java文件,输入程序,将程序中“代码1-7”处补充完整并保存。(3)使用DOS命令进入其所存放的目录,编译运行该程序。并将完整程序和运行结果截图写入实验报告。(4)CardManager()方法中的ButtonGroup有什么用处?如果改变程序窗口的大小,会发生什么情况?为什么?将你的分析写入实验报告。(5)参考Java API文档,将本程序修改为用GridBagLayout布局管理器管理组件,使得组件能随程序窗口的变化成比例变化。将修改后的程序和运行结果截图写入实验报告。2阅读分析如图3.4所示程序。该程序可根据用户的选择对文字的字体,大小,颜色,风格等进行设置 。程序运行结果如图3.3所示。图3.3图3.4(2)新建ArtFont.java文件,输入程序,将程序中“程序段1-4”处补充完整并保存。(3)使用DOS命令进入其所存放的目录,编译运行该程序。并将完整程序和运行结果截图写入实验报告。(4)将程序中的语句colorBtn.addActionListener(this)改为如下形式:colorBtn.addActionListener(new ActionListener()if(e.getSource()=colorBtn)/改变颜色 colorStyle=JColorChooser.showDialog(this,选择字体颜色,colorStyle); colorBtn.setForeground(colorStyle); txtArea.setForeground(colorStyle); ); 程序可以编译运行吗?为什么?将你的分析写入实验报告。(5)参考Java API文档,将本程序修改为具有Unix操作系统的显示外观。将修改后的程序和运行结果截图写入实验报告。3阅读分析如图3.6所示程序。该程序可让用户自由选择某文件,并通过一个文本显示区域将选择的文件内容显示出来 。程序运行结果如图3.5所示。图3.5图3.6(2)新建TextViewer2.java文件,输入程序,将程序中“代码1-6”处补充完整并保存。(3)使用DOS命令进入其所存放的目录,编译运行该程序。并将完整程序和运行结果截图写入实验报告。(4)体会组合流(BufferedReader output=new BufferedReader(new FileReader(fileName);)和JfileChooser类的使用。4阅读分析如图3.7所示的三段程序。其中Student.java定义了一个学生类,ScoreSort.java负责将若干学生的的信息写入到当前目录下的student.dat文件中。ScoreSort2.java负责将student.dat文件中数据读取出来并显示,然后再按学生的成绩排序,将排序后的成绩重新写入student.dat文件中并再次显示。图3.7(2)新建Student.java ,ScoreSort.java,ScoreSort2.java 和student.dat四个文件。输入程序,将程序ScoreSort.java中“代码1-4”和程序ScoreSort2.java中“程序段1-3”补充完整并保存。(3)使用DOS命令进入其所存放的目录,编译运行该程序。并将完整程序和运行结果截图写入实验报告。(4)在程序ScoreSort.java中直接利用ObjectInputStream的writObject()方法将学生信息写入文件可以吗?为什么?如果想在程序ScoreSort.java中直接利用ObjectInputStream的writObject()方法将学生信息写入文件,需要对Student.java作什么样的修改?为什么?将你的分析写入实验报告。5(1)阅读分析如图3.8所示的两段程序。新建Compress.java和Release.java文件,输入程序并保存。使用DOS命令进入它们所存放的目录,编译运行这两个程序。并将完整程序和运行结果截图写入实验报告。图3.8(2)在程序Compress.java中的语句zipoutput.setMethod(ZipOutputStream.DEFLATED); 和zipoutput.putNextEntry(new ZipEntr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论