华北电力大学实验报告实验名称Java程序面向对象设计(一)课程名称Java程序设计专业班级:学生姓名:学号:成绩:指导教师:张学斌实验日期:华北电力大学实验报告第页共页一、实验目的及要求1.掌握类的定义。2.掌握成员变量和成员方法的定义。3.掌握构造方法的定义和使用。4.掌握类的多态性二、实验环境Windows2000/WindowsXP,JDK1.2~1.6三、试验内容和步骤要求按照实验内容,写出详细实验过程和步骤,必要时截图。实验1机动车1.1实验要求编写一个Java应用程序,该程序有两个类:Vehicle(用于刻画机动车)和User(主类)。具体要求如下:Vehicle类有一个double类型的变量speed,用于刻画机动车的速度,一个int型变量power,用于刻画机动车的功率。定义了speedUp(ints)方法,体现机动车有加速功能。定义了speedDown()方法,体现机动车有减速功能。定义了setPower(ints),用于设置机动车的功率。定义了getPower()方法,用于获取机动车的功率。在主类User的mian()方法中用Vehicle类创建对象,并让该对象调用方法设置功率,演示加速和减速功能。1.2程序模板Vehicle.javapublicclassVehicle{【代码1】//声明double型变量speed,刻画速度【代码2】//声明int型变量power,刻画功率voidspeedUp(ints){【代码3】//将参数s的值与成员变量speed的和赋值给成员变量speed}voidspeedDown(intd){【代码4】//将成员变量speed与参数d的差赋值给成员变量speed}voidsetPower(intp){【代码5】//将参数p的值赋值给成员变量power}intgetPower(){【代码6】//返回成员变量power的值华北电力大学实验报告第页共页}doublegetSpeed(){returnspeed;}}----------------------------------------------------------------------------------------------User.javapublicclassUser{publicstaticvoidmain(Stringargs[]){Vehiclecar1,car2;【代码7】//使用new运算符和默认的构造方法创建对象car1【代码8】//使用new运算符和默认的构造方法创建对象car2car1.setPower(128);car2.setPower(76);System.out.println(car1的功率是:+car1.getPower());System.out.println(car2的功率是:+car2.getPower());【代码9】//car1调用speedUp方法将自己的speed的值增加80【代码10】//car2调用speedUp方法将自己的speed的值增加80System.out.println(car1目前的速度:+car1.getSpeed());System.out.println(car2目前的速度:+car2.getSpeed());car1.speedDown(10);car2.speedDown(20);System.out.println(car1目前的速度:+car1.getSpeed());System.out.println(car2目前的速度:+car2.getSpeed());}}1.3实验指导创建一个对象时,成员变量被分配空间,这些内存空间称作该对象的实体或变量,而对象中存放着引用,以确保这些变量被该对象操作使用。空对象不能使用,即不能让一个空对象去调用方法产生行为。假如程序中使用了空对象,在运行时会产生异常:NullPointerException,对象时动态地分配实体的,Java的编译器对空对象不做检查。因此,在编译时要避免使用空对象。1.4实验改进(编写程序,并给出结果)1.改进speedUp()方法,使得Vehicle类的对象加速时不能将speed值超过200.2.改进speedDown()方法,使得Vehicle类的对象在减速时不能将speed值小于0.3.增进一个刹车方法voidbrake(),Vehicle类的对象调用它能将speed的值变成0.1.5实验结果华北电力大学实验报告第页共页实验2家中的电视1.实验要求编写一个Java应用程序,模拟家庭买一台电视,即家庭将电视作为自己的一个成员,即通过调用一个方法将某个电视的引用传递给自己的电视成员。具体要求如下:有三个源文件,其中TV.java中的TV类负责创建“电视”对象。Family.java中的Family类负责创建“家庭”对象,MainClass.java是主类。在主类的main()方法中首先使用TV类创建一个对象haierTV,然后使用Family类再创建一个对象zhangsanFamily,并将先前TV类的实例haierTV的引用传递给zhangsanFamily对象的成员变量homeTV。2.程序模板TV.javapublicclassTV{intchannel;//电视频道voidsetChannel(intm){if(m=1){channel=m;}}intgetChannel(){returnchannel;}voidshowProgram(){switch(channel){case1:System.out.println(综合频道);break;case2:System.out.println(经济频道);break;case3:System.out.println(文艺频道);break;case4:System.out.println(国际频道);break;case5:System.out.println(体育频道);break;default:System.out.println(不能收看+channel+频道);}}}----------------------------------------------------------------------------------------------Family.javapublicclassFamily{TVhomeTV;voidbuyTV(TVtv){【代码1】//将参数tv赋值给homeTV华北电力大学实验报告第页共页}voidremoteControl(intm){homeTV.setChannel(m);}voidseeTV(){homeTV.showProgram();//homeTV调用showProgram()方法}}-----------------------------------------------------------------------------------------MainClass.javapublicclassMainClass{publicstaticvoidmain(Stringargs[]){TVhaierTV=newTV();【代码2】//haierTV调用setChannel(intm),并向参数m传递5System.out.println(haierTV的频道是+haierTV.getChannel());FamilyzhangSanFamily=newFamily();【代码3】//zhangSanFamily调用voidbuyTV(TVtv)方法,并将haierTV传递给参数TVSystem.out.println(zhangSanFamily开始看电视节目);zhangSanFamily.seeTV();intm=2;System.out.println(hangSanFamily将电视更换到+m+频道);zhangSanFamily.remoteControl(m);System.out.println(haierTV的频道是+haierTV.getChannel());System.out.println(hangSanFamily再看电视节目);zhangSanFamily.seeTV();}}3.实验结果实验3共饮同井水华北电力大学实验报告第页共页1.实验要求编写程序模拟两个村庄共用一口水井。编写一个Village类,该类有一个静态的int型成员变量waterAmount,用于模拟井水的水量。在主类Land的main()方法中创建两个村庄,一个村庄改变了waterAmount的值,另一个村庄查看waterAmount的值。2.程序模板Village.javapublicclassVillage{staticintwaterAmount;//模拟水井的水量intpeopleNumber;//村庄的人数Stringname;//村庄的名字Village(Strings){name=s;}staticvoidsetWaterAmount(intm){if(m0)waterAmount=m;}voiddrinkWater(intn){if(waterAmount-n=0){waterAmount=waterAmount-n;System.out.println(name+喝了+n+升水);}elsewaterAmount=0;}staticintlookWaterAmount(){returnwaterAmount;}voidsetPeopleNumber(intn){peopleNumber=n;}intgetPeopleNumber(){returnpeopleNumber;}}-----------------------------------------------------------------------------Land.javapublicclassLand{publicstaticvoidmain(Stringargs[]){【代码1】//用类名调用setWaterAmount(intm),并向参数传值200intleftWater=【代码2】//用Village类的类名访问waterAmountSystem.out.println(水井中有+leftWater+升水);VillagezhaoZhuang,maJiaHeZhi;zhaoZhuang=newVillage(赵庄);maJiaHeZhi=newVillage(马家河子);华北电力大学实验报告第页共页zhaoZhuang.setPeopleNumber(80);maJiaHeZhi.setPeopleNumber(120);【代码3】//zhaoZhuang调用drinkWater(intn),并向参数传值50leftWater=【代码4】//maJiaHeZhi调用lookWaterAmount()方法Stringname=maJiaHeZhi.name;System.out.println(name+发现水井中有+leftWater+升水);maJiaHeZhi.drinkWater(100);leftWater=【代码5】//zhaoZhuang调用lookWaterAmount()方法name=zhaoZhuang.name;System.out.println(name+发现水井中有+leftWater+升水);intpeopleNumber=zhaoZhuang.getPeopleNumber();System.out.println(赵庄的人口:+peopleNumber);peopleNumber=maJiaHeZhi.getPeopleNumber();System.out.println(马家河子的人口:+peopleNumber);}}3.实验指导当java程序执行时,类的字节码文件被加