版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、华北电力大学实验报告实验名称Java程序面向对象设计(一)课程名称Java 程序设计专业班级:学生姓名:学 号:成 绩:指导教师:张学斌实验日期:、实验目的及要求1. 掌握类的定义。2. 掌握成员变量和成员方法的定义。3. 掌握构造方法的定义和使用。4. 掌握类的多态性二、实验环境Windows2000/Windows XP JDK 1.21.6三、试验内容和步骤要求按照实验内容,写出详细实验过程和步骤,必要时截图。实验1机动车1.1实验要求编写一个Java应用程序,该程序有两个类:Vehicle (用于刻画机动车)和User(主 类)。具体要求如下:Vehicle类有一个double类型的变
2、量speed,用于刻画机动车的速度,一个int型变 量power,用于刻画机动车的功率。定义了speedUp(int s)方法,体现机动车有加速功能。定义了 speedDown()方法,体现机动车有减速功能。定义了 setPower(int s), 用于 设置机动车的功率。定义了 getPower()方法,用于获取机动车的功率。在主类User的mian()方法中用Vehicle类创建对象,并让该对象调用方法设置功率,演示加速和减速功能。1.2程序模板Vehicle.javapublic class Vehicle 【代码11 /声明double型变量speed,刻画速度【代码21 /声明int
3、型变量power,刻画功率void speedUp(i nt s) 【代码31 /将参数s的值与成员变量speed的和赋值给成员变量speedvoid speedDow n(i nt d) 【代码4】/将成员变量speed与参数d的差赋值给成员变量speedvoid setPower(i nt p) 【代码51/ 将参数p的值赋值给成员变量power int getPower() 【代码6】/返回成员变量power的值double getSpeed() retur n speed;User.javapublic class User public static void main( Stri
4、ng args) Vehicle car1,car2;car1car2【代码7】/使用new运算符和默认的构造方法创建对象【代码8】/使用new运算符和默认的构造方法创建对象car1.setPower(128);car2.setPower(76);【代码9】car1调用speedUp方法将自己的speed的值增加80【代码10】car2 调用speedUp方法将自己的speed的值增加80carl.speedDow n(10);car2.speedDow n( 20);1.3实验指导创建一个对象时,成员变量被分配空间,这些内存空间称作该对象的实体或变量, 而对象中存放着引用,以确保这些变量被该
5、对象操作使用。空对象不能使用,即不能让一个空对象去调用方法产生行为。 假如程序中使用了 空对象,在运行时会产生异常:NullPointerException ,对象时动态地分配实体 的,Java的编译器对空对象不做检查。因此,在编译时要避免使用空对象。1.4实验改进(编写程序,并给出结果)1. 改进speedUp()方法,使得Vehicle类的对象加速时不能将speed值超过200.2. 改进speedDown()方法,使得Vehicle类的对象在减速时不能将 speed值小于0.3. 增进一个刹车方法void brake(),Vehicle 类的对象调用它能将speed的值变成1.5实验结果
6、实验2家中的电视1. 实验要求编写一个Java应用程序,模拟家庭买一台电视,即家庭将电视作为自己的一个成 员,即通过调用一个方法将某个电视的引用传递给自己的电视成员。具体要求如下:有三个源文件,其中 TV.java中的TV类负责创建“电视”对象。Family.java中的Family类负责创建“家庭”对象, Ma in Class.java 是主类。在主类的main()方法中首先使用TV类创建一个对象haierTV ,然后使用Family 类再创建一个对象zhangsanFamily,并将先前TV类的实例haierTV的引用传递 给zhangsanFamily对象的成员变量homeTV2. 程
7、序模板TV.javapublic class TV in t cha nn el; /电视频道void setCha nn el( int m) if(m>=1)cha nn el=m;in t getCha nn el() retur n cha nn el;void showProgram() switch(cha nn el) break; break; break; break; break;Family.java public class Family TV homeTV;void buyTV(TV tv) 【代码1】/将参数tv赋值给homeTVvoid remoteC on
8、 trol( int m) homeTV.setCha nn el(m);void seeTV() homeTV.showProgram(); /homeTV 调用 showProgram()方法Main Class.javapublic class Main Class public static void main( Stri ng args) TV haierTV = new TV();【代码2】/haierTV 调用setChannel(int m), 并向参数 m传递5Family zha ngSa nF amily = new Family();【代码 3】/zhangSanFam
9、ily 调用 void buyTV(TV tv)方法,并将 haierTV传递给参数TVzha ngSa nF amily.seeTV();int m=2;zha ngSa nF amily.remoteCo ntrol(m);zha ngSa nF amily.seeTV();3. 实验结果实验3共饮同井水1.实验要求编写程序模拟两个村庄共用一口水井。编写一个Village类,该类有一个静态的int型成员变量waterAmount,用于模拟井水的水量。在主类 Land的main()方法中创建两个村庄,一个村庄改变了 waterAmount的值,另一个村庄查看 waterAmount的值。2.
10、程序模板Village.javapublic class Village static int waterAm ount; /int peopleNumber; /Stri ng n ame;/模拟水井的水量村庄的人数村庄的名字Village(Stri ng s) n ame = s;static void setWaterAm oun t(i nt m) if(m>0)waterAm ount = m;void drin kWater(i nt n)if( waterAm ount-n>=0) waterAm ount = waterAm ount-n;elsewaterAm o
11、unt = 0;static int lookWaterAm oun t() return waterAm ount;void setPeopleNumber(i nt n) peopleNumber = n;int getPeopleNumber() retur n peopleNumber;Lan d.java public class Land public static void main( Stri ng args) 【代码11 /用类名调用setWaterAmount(int m),并向参数传值200 int leftWater =【代码 21 / 用 Village 类的类名访问
12、 waterAmountVillage zhaoZhua ng,maJiaHeZhi;zhaoZhua ng = new Village(”赵庄");maJiaHeZhi = new Village(”马家河子");zhaoZhua ng.setPeopleNumber(80); maJiaHeZhi.setPeopleNumber(120);【代码31 /zhaoZhuang调用drinkWater(int n), 并向参数传值50 leftWater =【代码 4】/maJiaHeZhi 调用 lookWaterAmount()方法Stri ng n ame=maJia
13、HeZhi. name;maJiaHeZhi.dri nkWater(100);leftWater =【代码 51 /zhaoZhuang 调用 lookWaterAmount()方法n ame=zhaoZhua ng.n ame;int peopleNumber = zhaoZhua ng.getPeopleNumber();peopleNumber = maJiaHeZhi.getPeopleNumber();3.实验指导当java程序执行时,类的字节码文件被加载到内存,如果该类没有创建对 象,类的实例变量就不会被分配内存。但是,类的类变量,在该类被加载到 内存时,就分配了相应的内存变量。
14、如果该类创建对象,那么不同对象的实 例变量互不相同,即分配不同的内存空间,而类变量不再重新分配内存,所 有对象共享类变量。当类的字节码文件被加载到内存时,类的实例方法不会被分配入口地址,只 有当该类创建对象后,类中的实例方法才分配入口地址。当使用new运算符和构造方法创建对象时,首先分配成员变量给对象,同时实例方法必须分配 入口地址,然后再执行构造方法中的语句,完成必要的初始化。因而实例方 法必须由对象调用执行。需要注意的是,当创建第一个对象时,类中的实例 方法就分配了入口地址,当再创建对象时,不再分配入口地址,也就是说, 方法的入口地址被所有的对象共享。对于类中的类方法,在该类被加载到内 存
15、时,就分配了相应的入口地址,即使该类没有创建对象,也可以直接通过 类名调用类方法。4.扩展练习 【代码3】是否可以是 Village.drinkWater(50);,为什么?(2)【代码4】是否可以是Village.lookWaterAmount();,为什么?(3) Land类main()方法中倒数第2行代码是否可以更改为:peopleNumber = Village.getPeopleNumber();为什么?5.实验结果实验4求方程的根1. 实验要求按照实验要求使用package语句将方程属性即计算根的方法封装在一个有包名的类中,包名是tom.jiafei,类的名字是SquareEqua
16、tio n。编写一个Sun Rise的主类,该主类使用import 语句引入 tom.jiafei 包中的 SquareEquation 类。2. 程序模板模板1将模板1给出的源文件SquareEquatio n.java编译后得到的字节码文件复制到c:/1000/tom/jiafei 目录中。SquareEquatio n.javapackage tom.jiafei;public class SquareEquati on double a,b,c;double root1,root2;boolea n boo;public SquareEquati on( double a,double
17、 b,double c) this.a=a;this.b=b;this.c=c;if(a!=O)boo=true;elseboo=false;public void getRoots() if(boo) double disk=b*b-4*a*c;if(disk>=0) root 1=(-b+Math.sqrt(disk)/(2*a);root2=(-b-Math.sqrt(disk)/(2*a);else else public void setCoefficie nt(double a,double b,double c) this.a=a;this.b=b;this.c=c;if(
18、a!=0)boo=true;elseboo=false;模板21.设置classpath。假设本地JDK的安装目录是:D:jdk1.6 。在命令行执行如下命令:set classpath = D:jdk1.6jrelibrt.jar;.;c:1000;或 右击“我的电脑”->属性-> 系统特性-> 高级选项-> 环境变量,将classpath的值 改为 classpath = D:jdk1.6jrelibrt.jar;.;c:1000;2.将模板2给出的Java源程序SunRise.java 保存到D:2000中。Sun Rise.javaimport tom.jiaf
19、ei.*;public class Sun Rise public static void main( Stri ng args) SquareEquati on equati on=new SquareEquati on( 4,5,1);equatio n. getRoots();equatio n.setCoefficie nt(-3,4,5);equatio n. getRoots();3实验指导如果使用import语句引入了整个包中的类,那么可能会增加编译时间。但绝不 会影响程序运行的性能。Java运行平台由所需要的Java类库和虚拟机组成,这 些类库被包含在一个jre'lib
20、中的压缩文件中,当程序执行时,Java运行平台从类库中加载程序真正使用的类字节码到内存。可以使用import语言引入自定义包中的类,但必须在classpath中指明包的位置。实验5实例成员和类成员1. 实验要求掌握实例成员和类成员的使用方法2. 程序模板Example.javaclass A【代码1】/声明一个float型实例变量a【代码2】/声明一个float型类变量b,即static 变量bvoid setA(float a)【代码3】/ 将参数a的值赋值给成员变量avoid setB(float b)【代码4】/ 将参数b的值赋值给成员变量bfloat getA()return a;fl
21、oat getB()return b;void in putA()static void in putB()public class Examplepublic static void main(String args)【代码5】/通过类名操作类变量b,并赋值100【代码6】/通过类名调用方法inputB()A cat=new A();A dog=new A();【代码7】/cat象调用方法setA(int a)将cat的成员a的值设置为200【代码8】/cat调用方法setB(intb)将cat的成员b的值设置为400【代码9】/dog象调用方法setA(int a) 将dog的成员a的值设置为150【代码10】/dog调用方法setB(int b)将dog的成员b的值设置为300【代码11】/cat调用 inputA()。【代码12】/cat调用 inputB()。【代码13】/dog调用 inputA()。【代码14】/dog调用 inputB()。实验6银行账户1.实验要求声明银行账户类,成员变量包括账号、储户姓名、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 市妇幼保健院关于修订《院长办公会议事规则》的通知
- 建筑工程技术基础章节练习题及答案详解集
- 居家护理常见疾病护理方法测试题
- 公共安全防范技能提升与安全员模拟题集
- 建筑工地安全规范与管理考试题及答案集
- 康复医学考试题库及答题技巧
- 家庭教育观念与方法测试及答案
- T∕SNLT 0025-2025 南疆免耕复播中晚熟大豆高产栽培技术规程
- 2024年公路水运工程施工企业安全生产管理人员证考试题库附答案
- 环境科学知识自测题及答案详解
- (外研版3起)英语四年级上册单词字帖书写练习(手写体)高清打印版
- 2023学年完整公开课版闽菜1
- 设备采购技术服务方案
- 杂交水稻之父袁隆平事迹介绍宣讲课件PPT模板下载
- 安全监督先进个人主要事迹范文七篇
- GB/T 38661-2020电动汽车用电池管理系统技术条件
- 八年级班主任家长会发言稿
- 各种纯烃类组分的辛烷值
- 人教版数学六年级上册期中测试卷课件
- 《工程制图》教案
- 起重安全培训课件
评论
0/150
提交评论