《Java程序设计试验2学生版.docx》由会员分享,可在线阅读,更多相关《Java程序设计试验2学生版.docx(20页珍藏版)》请在优知文库上搜索。
1、华北电力高校实验报告试名称JaVa程序而对对象设计(汁课程名称JaVa程序设计专业班级:学生姓名:学号:成绩:指导老师:张学斌试验日期:创建一个对象时,成员变量被安排空间,这些内存空间称作该对象的实体或变量,而对象中存放着引用,以确保这些变量被该对象操作运用。空对象不能运用,即不能让一个空对象去调用方法产生行为。假如程序中运用了空对象,在运行时会产生异样:NulIPointerException.对象时动态地安排实体的,Java的编译器对空对象不做检查。因此,在编译时要避开运用空对象。1.4试验改进(编写程序,并给出结果)I.改进SPeedUPo方法,使得VehiCIe类的对象加速时不能将SP
2、eed值超过200.2.改进SPeedDOIVn()方法,使得VehiCle类的对象在减速时不能将speed值小于0.3.增进一个刹车方法Voiclbrake。,VehicIe类的对象调用它能将SPeed的值变成0.1.5试验结果试验2家中的电视1.试验要求编写一个JaVa应用程序,模拟家庭买一台电视,即家庭将电视作为H己的一个成员,即通过调用一个方法将某个电视的引用传递给自己的电视成员。具体要求如下:有三个源文件,其中TV.java中的TV类负责创建“电视”对象。Family.java中的Eamiiy类负责创建“家庭对象,MainClass.java是主类。在主类的main()方法中首先运用
3、TV类创建一个对象haierTV,然后运用Family类再创建一个对象ZhangsanFamily,并将从前TV类的实例haierTV的弓|用传递给ZhangsanEami1y对象的成员变量homeTV。2.程序模板TV.javapublicclassTVintchannel;电视频道voidSetChannel(intin)if(m=l)channel=m;)intgetChannel()returnchannel;)voidShowProgramOswitch(channel)case 1 :SyStem.out.println(综合频道”);break;case 2 :SySten1.o
4、Ut.printIn(经济频道);break;case 3 :SySten.out.printIn(文艺频道”);break;case 4 :SySten.out.printIn(国际频道);break;case 5 :SyStem.out.printin(体育频道);break;default:SyStem.out.println(不能收看+channel+”频道”);)Family,javapublicclassFamilyTVhomeTV:voidbyTV(TVtv)【代码1】将参数tv赋值给homeTVvoidVemoteControl(intm)homeTV.setChannel(m
5、);voidseeTV()(homeTV.showProgram();/homeTV调用ShOWPrOgramo方法)MainClass.javapublicclassMainClasspublicstaticvoidmain(Stringargs)TVhaierTV=newTV();【代码2/haierTV调用SetChannel(intm),并向参数m传递5System,out.printIn(haierTV的频道是+haierTV.getChannel();FamilyZhangSanFamiIy=newFamiIy();代码3/ZhangSanFami1y调用voidbuyTV(TVt
6、v)方法,并将haierTV传递给参数TVSystem,out.println(*ZhangSanFamiIy起先看电视节目”);ZhangSanFamily.seeTV();intm=2:System,out.PrintIn(hangSanFamiIy将电视更换到“+m+”频道”);ZhangSanEamily.remoteControl(m);System,out.printInC,haierTV的频道是*+haierTV.getChannelO);System,out.printInCrKangSanFamiIy再看电视节目”):ZhangSanFamily.seeTV();)3.试验结
7、果试验3共饮同井水1 .试验要求编写程序模拟两个村庄共用一口水井。编写一个ViIlage类,该类有一个静态的int型成员变量WaterAmount,用于模拟井水的水量。在主类1.and的main()方法中创建两个村庄,*个村庄变更了WaterAmOUnt的值,另一个村庄查看IVaterAmOUnt的值。2 .程序模板Village,javapublicclassVillage(staticintWaterAmount;模拟水井的水量intpeopleNumber;村庄的人数Stringname;/村庄的名字Village(Strings)name=s;)staticvoidSetWaterAm
8、ount(intm)if(nO)WaterAmount=m;)voiddrinkWater(intn)if(WaterAmOUnt-n=0)watermount=WaterAmOUntf;System,out.Println(name+喝了+n+升水”);elsewatermount=O;)staticint100kWaterAmountOreturnWaterAmount;voidSetBeopleNumber(intn)PeopleNumber=n;)intgetPeopleNumber()returnpeopIeNumber;)1.and,javapublicclass1.andpubl
9、icstaticvoidmain(Stringargs)(【代码1J/用类名调用SetWaterAJDoUnt(intm),并向参数传值200intIeftWater=【代码2】用Village类的类名访问WaterAmountSyStem.out.println(水井中有+IeftWater+升水”);VillageZhaOZhUang,majialleZhi;ZhaoZhuang=newVilIage(赵庄”);najialIeZhi=newViIlage(马家河子”);zhaoZhuang.SetPeopleNumber(80);najialleZhi.SetPeopleNumber(1
10、20);代码3/zhaoZhuang调用drinkWater(intn),并向参数传值50IeftWater=【代码4】/najialleZhi调用100kWaterAmountO方法Stringname=maJiaHeZhi.name;SyStem.out.printin(name+发觉水井中有+IeftWater+”升水”);majiaHeZhi.drinkWater(100);IeftWater=【代码5】ZhaoZhUang调用100kNaterAmOUnIo方法name=zhaoZhuang.name;SyStem.out.printIn(name+”发觉水井中有+IeftWater
11、+”升水”);intpeopleNumber=zhaoZhuang.getPeopIeNumberO;System.OUt.rintln(赵庄的人口:+PeOPleNUmber);PeopleNumbermajiaHeZhi.getBeopleNmber():System.OUt.printin(马家河子的人口:+PeoPleNUmber);)3 .试验指导当java程序执行时,类的字节码文件被加载到内存,假如该类没有创建对象,类的实例变量就不会被安排内存。但是,类的类变量,在该类被加载到内存时,就安排了相应的内存变量。假如该类创建对象,那么不同对象的实例变量互不相同,即安排不同的内存空间,而
12、类变量不再重新安排内存,全部对象共享类变量。当类的字节码文件被加载到内存时,类的实例方法不会被安排入口地址,只有当该类创建对象后,类中的实例方法才安排入1地址。当运用new运算符和构造方法创建对象时,首先安排成员变量给对象,同时实例方法必需安排入口地址,然后再执行构造方法中的语句,完成必要的初始化。因而实例方法必需由对象调用执行。须要留意的是,当创建第-个对象时,类中的实例方法就安排了入口地址,当再创建对象时,不再安排入口地址,也就是说,方法的入口地址被全部的对象共享。对于类中的类方法,在该类被加载到内存时,就安排了相应的入口地址,即使该类没有创建对象,也可以干脆通过类名调用类方法。4 .扩展
13、练习(1)【代码3】是否可以是ViIIage.drinkWater(50);,为什么?(2)代码4是否可以是ViHage.100kWaterAmount();,为什么?(3)1.and类main。方法中倒数第2行代码是否可以更改为:PeopleNumber=Village,getPeopIeNumberO;为什么?5.试验结果试验4求方程的根1.试验要求根据试验要求运用package语句将方程属性即计算根的方法封装在一个有包名的类中,包名是tom.jiafei,类的名字是SqUareEqUatiOn。编写一个SUnRiSe的主类,该主类运用import语句引入tom.jiafei包中的Squa
14、reEquation类。2.9蝴模板1将模板1给出的源文件SquareEquation.java编译后得到的字节码文件复制到c:/1000/tom/jiafei书目中。SquareEquation.javapackagetom.jiafei:publicclassSquareEquation(doublea,b,c;doublerootl,root2;booleanboo;publicSquareEquation(doublea,doubleb,doublec)this,a=a;this,b=b;this,c=c;if(a!=O)boo=true;elseboo=false;Ipublicvo
15、idgetRoots()if(boo)System.OUt.printin(是一元2次方程);doubledisk=b*b-4*a*c;if(clisk=O)rootl=(-b+Math.sqrt(disk)(2*a);root2=(-b-Math.sqrt(disk)(2*a);System.OUt.printf(方程的根:%f,%fn*,rootl,root2);)elseSystem.out.PrinIf(方程没有实根n);)elseSystem,out.PrintIn(不是一元2次方程”);)publicvoidSetCoefficient(doublea,doubleb,doublec)(