春级河北工业大学城市学院网络编程试验指导书.docx
- 文档编号:12189183
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:55
- 大小:641.33KB
春级河北工业大学城市学院网络编程试验指导书.docx
《春级河北工业大学城市学院网络编程试验指导书.docx》由会员分享,可在线阅读,更多相关《春级河北工业大学城市学院网络编程试验指导书.docx(55页珍藏版)》请在冰豆网上搜索。
春级河北工业大学城市学院网络编程试验指导书
实验一、Application与Applet程序调试运行
实验目的:
熟悉所用系统的上机方法与步骤。
实验环境:
安装Windows7或Windowsxp计算机和JDK编译器。
实验内容:
编写一个JavaApplication和一个Applet程序,输出以下信息:
Hello,JavaWorld!
java程序分为javaapplication(java应用程序)和javaapplet(java小应用程序)两种。
1、JavaApplication
Application是在本地独立运行的完整的Java程序。
Application与网络的联系不如Applet那样密切,它一般存储在本地机,运行时也不需要浏览器,而是由独立的Java解释器来解释执行。
Application的程序特点是它包含一个含有main()方法的主类,这个main()方法就是整个程序的执行入口点。
下面是用Application写的程序,它完成的功能是在屏幕上输出一个字符串“Hello,JavaWorld!
”。
由于Application无法借助浏览器的窗口系统,所以字符串“Hello,JavaWorld!
”是直接显示在字符界面中的。
Application编译生成的字节码文件存储在本地,不需要网络下载,由本地的独立解释器解释执行,因此它的安全性限制没有Applet那么严格,与本地普通的应用程序相当。
但同时,由于不能像Applet那样充分利用浏览器系统提供的
窗口系统,Application必须创建和管理自己的图形界面,乃至整个程序。
由于Application的可靠性好,编程自由度大和功能较强,它较多用于网络的服务器端的应用编程。
2、JavaApplet
JavaApplet是嵌入在HTML文件中运行的Java小程序,它的程序结构特点是程序中必然包含一个继承了系统Applet类的子类,这个子类用来在解释执行Applet的浏览器中建立一个Java的工作区,显示有关信息,接受用户命令。
javaapplet程序也是一个类,其编译方式与javaapplication完全一样。
javaapplet的执行方式与javaapplication完全不同,javaapplet程序必须嵌入到html文件中才能够执行,因此必须编写相应的html文件。
下面是一个最简单的JavaApplet程序:
这个程序的功能是在浏览器的JavaApplet工作区中显示字符串“Hello,JavaWorld!
”。
这个程序由一个类组成,类名为HelloWorld,它是系统类Applet的子类。
类HelloWorld包含了一个方法paint(),这个方法负责在工作区的指定位置显示字符串,由解释执行Applet的浏览器自动调用执行。
Applet没有main()方法,它必须嵌在超文本文件中,在浏览器中进行运行。
所有的Applet程序都是Applet类的子类,Applet程序是从方法init()开始执行的。
Applet不能独立运行,必须依赖一个特殊的环境框架——浏览器。
这一特殊的运行机制对安全性也提出了较高的要求,所以需Applet可以执行的操作权限做相应的限制。
该程序编译后生成HelloWorld.class文件,为了运行这个程序,需要编写一个html文件来调用它,html文件和其放在同一目录,
下面为HelloWorld.html文件的内容:
然后可以通过JDK所提供的命令“appletviewer”,在命令行下面执行javaapplet程序。
如果是在windows操作系统中,就可以在"命令提示符"下敲入"appletviewerHelloEducation.html“。
applet还可以采用另外一种方式运行,就是直接在浏览器中打开HelloEducation.html程序,在主流的浏览器如IE、Netscape中都包含有java虚拟机,负责解释执行javaapplet程序。
实验二Java语法基础
实验目的:
了解Java的数据类型,掌握各种变量的声明方式,理解运算符的优先级,掌握Java基本数据类型、运算符与表达式,掌握顺序结构、选择结构和循环结构语法的程序设计方法。
实验要求:
1、编写一个声明Java不同数据类型变量的程序。
2、编写使用不同选择结构的程序。
3、编写使用不同循环结构结构的程序。
实验内容:
一、声明不同数据类型变量
1、编写声明不同数据类型变量的程序。
编译并运行该程序,分析程序的运行结果。
2、Integer类在某对象中打包了原始类型为int的值。
Integer类型对象包含int型的单个域。
此外,此类提供了许多方法,可以将int型转换为string型,也可以将Sring型转换为int型,还包含处理int类型时的其他有用常量和方法。
publicclassIntegerDemo
{
publicstaticvoidmain(Stringargs[])
{
Integer[]array={newInteger(20),newInteger(40),newInteger("110")};
for(inti=0;i { System.out.println(Integer.toBinaryString(array[i].intValue())+"\t"); System.out.println(Integer.toHexString(array[i].intValue())+"\t"); System.out.println(Integer.toOctalString(array[i].intValue())+"\n"); } } } 编译并运行该程序,分析程序的运行结果。 二、分支程序结构 1、使用if...else语句 publicclassTestIf { publicstaticvoidmain(Stringargs[]) { booleanleap; intyear=2005; if((year%4==0&&year%100! =0)||(year%400==0)) System.out.println(year+"年是闰年"); else System.out.println(year+"年不是闰年"); year=2008;//方法2 if(year%4! =0) leap=false; elseif(year%100! =0) leap=true; elseif(year%400! =0) leap=false; else leap=true; if(leap==true) System.out.println(year+"年是闰年"); else System.out.println(year+"年不是闰年"); year=2050;//方法3 if(year%4==0){ if(year%100==0){ if(year%400==0) leap=true; else leap=false; } else leap=false; } else leap=false; if(leap==true) System.out.println(year+"年是闰年"); else System.out.println(year+"年不是闰年"); } } 编译运行该程序,分析程序的运行结果。 2、switch多分支语句 用swith语句实现从键盘读如1,2,3时,屏幕提示不同信息。 编译运行该程序,分析程序的运行结果。 3、用分支语句编程,输入一个学生成绩,给出相应等级: 90~100优 80~89良 70~79中 69~60及格 0~59不及格 三、循环及跳转程序结构 1、分析程序,掌握for控制语句,写出执行结果。 } } } 2、用三种循环语句来分别实现输出10~50之间的3的倍数。 3、打印以下图案(每行打5个星号,每个星号之间空两个空格)。 ***** ***** ***** ***** ***** 2)采用for循环求1至1000之内的所有“完全数”。 所谓“完全数”是指一个数,恰好等于它的因子之和。 例如,6是一个完全数,因为6的因子为1、2、3,而6=1+2+3。 3)一个整数的各位数字之和能被9整除,则该数也能被9整除。 编程验证给定的整数能否被9整除。 4)已知XYZ+YZZ=532,其中X、Y和Z为数字,编程求出X,Y和Z的值。 实验三面向对象程序设计 实验目的: 通过编程和上机实验理解Java语言是如何体现面向对象编程基本思想,熟悉类的封装方法以及如何创建类和对象,熟悉成员变量和成员方法的特性,熟悉类的继承性和多态性的作用,熟悉包、接口的使用方法,掌握OOP方式进行程序设计的方法。 实验要求: 1、编写程序实现类的定义和使用。 2、编写不同成员和不同成员方法修饰方法的程序。 3、编写体现类的继承性(成员变量、成员方法、成员变量隐藏)的程序和多态性(成员方法重载、构造方法重载)的程序。 4、编写接口的定义和使用的程序。 5、编写包的定义和使用的程序。 实验内容: 一、类的定义及使用 [修饰符]class类名[extends父类名][implements接口列表] { //类体 } 说明: 1)类修饰符分类: 访问修饰符: 缺省(默认方式)、public; 非访问修饰符: abstract、final,不能同时修饰一个类 2)extends: 实现继承 3)implements: 实现接口 1、下面给出了一个矩形类Rectangle,其中含有多个构造方法。 上机编译并运行此程序,观察运行结果,体会其中不同构造方法的设计和使用。 2、程序功能: 通过两个类StaticDemo、TestDemo说明静态变量/方法与实例变量/方法的区别,程序源代码如下。 classStaticDemo { staticintx; inty; publicstaticintgetX() { returnx; } publicstaticvoidsetX(intnewX) { x=newX; } publicintgetY() { returny; } publicvoidsetY(intnewY) { y=newY; } } publicclassTestDemo { publicstaticvoidmain(String[]args) { System.out.println("静态变量x="+StaticDemo.getX()); System.out.println("实例变量y="+StaticDemo.getY()); StaticDemoa=newStaticDemo(); StaticDemob=newStaticDemo(); a.setX (1); a.setY (2); b.setX(3); b.setY(4); System.out.println("静态变量a.x="+a.getX()); System.out.println("实例变量a.y="+a.getY()); System.out.println("静态变量b.x="+b.getX()); System.out.println("实例变量b.y="+b.getY()); } } 对上面的源程序进行编译,查错并运行。 二、继承和多态的作用 新类可从现有的类中产生并保留现有类的成员变量和方法,并可根据需要对它们加以修改。 新类还可添加新的变量和方法,这种现象就称为类的继承。 当建立一个新类时,不必写出全部成员变量和成员方法。 只要简单地声明这个类是从一个已定义的类继承下来的,就可以引用被继承类的全部成员。 被继承的类称为父类或超类(superclass),这个新类称为子类。 Java提供了一个庞大的类库让开发人员继承和使用。 设计这些类是出于公用的目的,因此,很少有某个类恰恰满足你的需要。 你必须设计自己的能处理实际问题的类,如果你设计的这个类仅仅实现了继承,则和父类毫无两样。 所以,通常要对子类进行扩展,即添加新的属性和方法。 这使得子类要比父类大,但更具特殊性,代表着一组更具体的对象。 继承的意义就在于此。 类的继承发生在多个类之间,而类的多态只发生在同一个类上。 在一个类中,可以定义多个同名的方法,只要确定它们的参数个数和类型不同。 这种现象称为类的多态。 多态使程序简洁,为程序员带来很大便利。 在OOP中,当程序要实现多个相近的功能时,就给相应的方法起一个共同的名字,用不同的参数代表不同的功能。 这样,在使用方法时不论传递什么参数,只要能被程序识别就可以得到确定的结果。 类的多态性体现在方法的重载(overload)上,包括成员方法和构造方法的重载。 1、编译并运行下面的程序,观察分析运行结果,体会程序中super和this的用法,进一步理解变量隐藏和方法重写的概念。 2、编译并运行下面的程序,分析运行结果,体会其中方法重载的用法,进一步理解方法重载的概念。 三、接口的定义和使用 1、接口的基本概念 Java中的接口在语法上有些类似于类,它定义了若干的抽象方法和常量,形成一个属性集合,该属性集合通常代表了某一功能的实现。 它的主要作用是可以帮助我们实现类似于类的多重继承的功能。 Java中各类获取某一接口定义的功能,并不是通过直接继承这个接口中的域和方法来实现的,因为接口中的域都是常量,接口中的方法都是没有方法体的抽象方法,也就是说,接口定义的仅仅是实现某一特定功能的功能接口和规范,而并没有真正的实现这个功能,这个功能的真正实现实在“继承”了这个接口的各个类中完成的,有这些类来具体定义接口中各抽象方法的方法体。 故在Java中,通常把对接口功能的“继承”称为实现。 2、接口的声明 Java中声明接口的语法如下: [public]interface接口名[extends父接口名列表] {//接口体: //常量域声明 [public][static][final]域类型域名=常量值; //抽象方法声明 [public][abstract][native]返回值方法名(参数列表)[throw异常列表]; } 3、接口的实现 某个类为接口中的抽象方法书写语句并定义实在的方法体,称为该类实现可这个接口。 示例如下: 编译并运行上述程序,分析程序的运行结果。 四、包的定义和使用 ●创建自定义包Mypackage 在存放源程序的文件夹中建立一个子文件夹Mypackage。 例如,在“E: \java\程序”文件夹之中创建一个与包同名的子文件夹Mypackage(E: \java\程序\Mypackage),并将编译过的class文件放入该文件夹中。 注意: 包名与文件夹名大小写要一致。 再添加环境变量classpath的路径,例如: E: \j2sdk1.4.2_01\lib;E: \java\程序 ●在包中创建类 YMD.java程序功能: 在源程序中,首先声明使用的包名Mypackage,然后创建YMD类,该类具有计算今年的年份并输出一个带有年月日的字符串的功能。 源代码如下 编译Test_YMD.java文件,然后将Test_YMD.class文件存放到Mypackage文件夹中。 ●编写使用包Mypackage中Test_YMD类的程序 YMD_2.java程序功能: 给定某人姓名与出生日期,计算该人年龄,并输出该人姓名,年龄,出生日期。 程序使用了Test_YMD的方法来计算年龄。 源代码如下。 编译并运行程序。 五、编程题,编写程序并写出运行结果 1、创建一个桌子Table类,该类中有桌子名称、重量、桌面宽度、长度及桌子高度属性。 其中有: (1)构造函数初始化所有数据成员; (2)Area(): 计算桌面的面积; (3)Display(): 在屏幕上输出所有数据成员的值; (4)ChangeWeight(int): 改变桌子重量的函数; (5)在main()中实现创建一个桌子对象,计算桌面的面积,改变桌子重量,并在屏幕上输出所有桌子数据成员的值。 2、创建一个名称为Pay的类,该类包括工作小时、每小时工资、扣缴率、应得工资总额和实付工资等5个双精度型的成员变量。 创建3个重载的应得工资computeNetPay()方法。 应得工资是工时乘以每小时工资的计算结果。 当computeNetPay()接收代表小时、扣缴率和工资率的数值时,计算出应得工资=工作小时*每小时工资*(1—扣缴率)*(1—工资率)。 当computeNetPay()接收两个参数时,扣缴率假定为15%,计算出应得工资=工作小时*每小时工资*(1—0.15)*(1—工资率) 当computeNetPay()接收一个参数时,扣缴率假定为15%,每小时工资率为4.65%。 同时编写一个测试类,该测试类的main方法测试所有3个重载的方法。 3、商店销售某一件商品,商店每天公布统一的折扣(discount)。 同时允许销售人员在销售时灵活掌握价格(price),在统一折扣的基础上,对一次购入10件以上者,还可以销售9.5折优惠。 现已知当天5名售货员的销售情况为: 售货员编号(num)销售件数(quantity)销售单价(price) 1013126.8 2218125.6 32510124.8 10845123.4 901100121.5 编写销售商品类Sale和含有main方法的公共类Test,计算当天此商品的总销售额sum,以及每件商品的平均售价,并在显示器上显示。 (3)定义接口Shape及其抽象方法getArea()和getPerimeter()用于计算图形和面积和周长。 定义类Rectangle(矩形)、类Circle(圆形)、类Triangle(三角形),要求这些类继承点类Coordinates()并实现接口的抽象方法。 提示: classCoordinates { longx; longy; Coordinate(longx,longy) { this.x=x; this.y=y; } } 实验四、异常处理程序设计 实验目的: 了解Java中异常处理(exception)的作用及常用的异常类,掌握异常处理的设计方法。 实验要求: 理解系统异常处理的机制和创建自定义异常的方法。 实验内容: 在已实现的方法中,加入出错处理异常(EXCEPTION),又称例外,是特殊的运行错误,对应着Java语言特定的运行机制。 由于Java程序是在网络环境中运行的,安全成为需要首先考虑的首要因素之一。 为了能够及时有效的处理程序中的运行错误,Java中引入了异常和异常类。 作为面向对象的语言,异常与其它语言要素一样,是面向对象规范的一部分,是异常类的对象。 异常类结构与组成: Java的异常类是处理运行是错误的特殊类,每一种异常类对应一种特定的运行错误。 所有的Java异常类都是系统类库中的Exception类的子类。 其类继承结构如下图: Throwable类是java.lang包中的一个类,它派生了两个子类: Exception和Error。 其中Error类由系统保留,而Exception类则供应用程序使用。 系统定义的运行异常: Exception类有若干子类,每一个子类代表了一种特定的运行错误。 这些子类有些是系统事先定义好包含在Java类库中的,称为系统定义的运行异常。 系统定义的运行异常通常对应着系统运行错误。 由于这种错误可能导致操作系统错误,甚至是整个系统的瘫痪,所以需要定义异常来特别处理。 用户自定义的异常: 系统定义的异常主要用来处理系统可以预见的较常见的运行错误,对于某个应用所特有的错误,则需要用户程序自己创建用户自定义异常。 这种用户自定义异常主要用来处理用户程序中特定的逻辑运行错误。 用户自定义异常用来处理程序中可能产生的逻辑错误,使得这种错误能够被系统及时识别并处理。 因此用户自定义异常可以使用户程序更为强健,使整个系统更加安全稳定。 异常的抛出: Java程序在运行时如果引发了一个可识别的错误,就会产生一个与该错误相对应的异常类的对象,这个过程被称为异常的抛出。 异常的抛出根据异常类的不同,抛出的方法也不同。 所有的系统定义的异常都可以由系统自动抛出;用户程序自定义的异常必须借助于throw语句来定义何种情况算是产生了此种异常对应的错误,并应该抛出这个异常的新对象。 异常的处理: 当一个异常被抛出时,应有专门的语句来接受这个被抛出的异常对象,这个过程被称为捕捉异常。 当一个异常类被捕捉或接收后,用户程序就会发生跳转,系统中止当前的流程而跳转至专门的异常处理语句块,或直接跳出当前程序和Java虚拟机回到操作系统。 在Java程序里,异常处理语句的格式如下: try{ //用try语句来选定捕获异常的范围 } catch{ //异常处理语句 } finally{ //总是会被执行的代码 } 1、用try-catch-finally结构实现异常处理。 编译并运行程序,写出程序运行结果。 2、编译并运行程序,写出程序运行结果。 3、输入并运行下面的程序,写出程序运行结果。 4、请看下面的定义 Strings=null; if((s! =null)&(s.length()>0)); if((s! =null)&&(s.length()>0)); if((s==null)|(s.length()>0)); if((s==null)||(s.length()>0)); 在上面4个语句中,哪个能引发异常? 是哪种类型的异常? 请说明理由。 5、请根据题目要求,编写程序并写出运行结果 1)设计一个Java程序,自定义异常类,从命令行(键盘)输入一个字符串,如果该字符串值为“XYZ”,则抛出一个异常信息“ThisisaXYZ”,如果从命令行输入ABC,则没有抛出异常。 (只有XYZ和ABC两种输入)。 2)使用命令行方式输入四个参数,分别是姓名、数学成绩、英语成绩、Java成绩,求总成绩和平均成绩,处理数组下标越界、成绩不是数组、成绩输入不合理(不在1-100之间)的异常。 要去: 自己定义输出成绩不合理的异常。 提示1: 数组下标越界异常为: ArrayIndexOutOfBoundsException 成绩不是数组的异常采用Java中的异常: NumberFormatException 提示2: 自定义的异常通常是Exception的子类。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 河北 工业大学 城市 学院 网络 编程 试验 指导书