实验四-类与对象_第1页
实验四-类与对象_第2页
实验四-类与对象_第3页
实验四-类与对象_第4页
实验四-类与对象_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、实验四 类与对象1. 实验目的1、使用类来封装对象的属性和行为;2、掌握对象的组合以及参数传递;3、掌握类变量与实例变量,以及类方法与实例方法的区别2. 实验内容1、参考教科书,完成下面实验:1)实验 1 Tank 类2)实验 2 计算机与光盘3)实验 3 家族的姓氏4)实验 4 三角形、梯形和圆形的类封装5)实验 5 实例成员与类成员2、完成习题:1)根据要求修改实验 1,改进 speedUP方法,使得 Tank 类的对象加速 时不能将 speed 值超过 220;增加一个刹车方法: void brake() ,Tank 类的 对象调用它能将 speed 的值变成 0。2)根据要求修改实验

2、2,主类中再增加一个 CD的对象,然后将计算机 中的数据( data 数组)复制到 CD对象中。3、提高题编写储蓄账户类及测试类,模拟存款,参考以下运行方式:( 1)新开 5 个储蓄账户,各储蓄账户的编号、户名在新开储蓄账户时 初始化,假设每位用户新开储蓄账户时都存入了一笔钱。(2)提示用户从键盘输入储蓄账户编号。( 3)若输入的储蓄账户编号与新开的 5 个储蓄账户编号之一匹配,则 提示用户从键盘输入存款金额,存款金额必须大于 0,否则显示错误提示,直 到用户输入的存款金额大于 0 为止。(4)相应储蓄账户的余额被更新。( 5)存款完成后,提示存款成功,显示该储蓄账户的编号、户名、余 额。(

3、6)若输入的储蓄账户编号与新开的 5 个储蓄账户编号均无法匹配, 显示错误提示,并询问是否还要继续存款。( 7)用户输入 yes,继续执行步骤( 2),否则显示退出信息。 最基本要求:绘制 UML 类图;储蓄账户的余额必须确保大于等于 0。3. 实验步骤参考教材中相关的实验。4. 评分标准1. A内容功能完善,编程风格好,人机接口界面好;2. B内容功能完善,编程风格良好,人机接口界面良好;3. C完成必做内容;4. D能完成必做内容;5. E未按时完成必做内容,或者抄袭(雷同者全部为E)参照书上实验按模版要求,将【代码】替换为 Java 程序代码,编写好完整 的程序文档,最后运行得到的相关文

4、件,把实验所得文件一起打包上交。 (压缩 包的文件名为:学号后三位和名字开头字母,如 109zhhRAR|ZIP)实验 1 Tank 类模板代码Tank.javapublic class Tank /【代码 1 】 /声明 double 型变量 speed,刻画速度/【代码 2】/声明 int 型变量 bulletAmount ,刻画炮弹数量 void speedUp(int s)/【代码 3】 /s+speed赋值给 speedvoid speedDown(int d) if(speed-d>=0)/ 【代码 4】/d-speed赋值给 speed elsespeed=0;int ge

5、tBulletAmount() return bulletAmount;void setBulletAmount(int m) bulletAmount = m;double getSpeed() return speed;void fire()if(bulletAmount>=1)/【代码 5】/ 将bulletAmount-1 赋值给 bulletAmountSystem.out.println(" 打出一发炮弹 ");elseSystem.out.println(" 没有炮弹了,无法开火 ");Fight.javapublic class F

6、ight public static void main(String args) Tank tank1,tank2;tank1=new Tank();tank2=new Tank();tank1.setBulletAmount(10);tank2.setBulletAmount(10);System.out.println("tank1 的炮弹数量: "+tank1.getBulletAmount();System.out.println("tank2 的炮弹数量: "+tank2.getBulletAmount(); tank1.speedUp(80

7、);tank2.speedUp(90);System.out.println("tank1 目前的速度: "+tank1.getSpeed();System.out.println("tank2 目前的速度: "+tank2.getSpeed();tank1.speedDown(15);tank2.speedDown(30);System.out.println("tank1 目前的速度: "+tank1.getSpeed();System.out.println("tank2 目前的速度: "+tank2.get

8、Speed();System.out.println("tank1 开火: ");tank1.fire();System.out.println("tank2 开火: ");tank2.fire();System.out.println("tank1 的炮弹数量: "+tank1.getBulletAmount();System.out.println("tank2 的炮弹数量: "+tank2.getBulletAmount(); 实验 2 计算机与光盘模板代码CD.javapublic class CD int

9、 size;int content;public void setSize(int size)this.size=size;content=new intsize;public int getSize()return size;public int getContent() return content;public void setContent(int b) int min=Math.min(content.length,b.length);for(int i=0;i<min;i+)contenti=bi;Computer.javapublic class Computer int

10、data;CD includCD;public void putCD(CD cd)includCD=cd;int size=includCD.getSize();data=new intsize;void copyToComputer()int b=includCD.getContent();int min=Math.min(data.length,b.length);for(int i=0;i<data.length;i+) datai=bi;public void addData(int m)for(int i=0;i<data.length;i+) datai=datai+m

11、;void copyToCD()includCD.setContent(data);void showData()for(int i=0;i<data.length;i+)System.out.printf("%3d",datai);User.javapublic class User public static void main(String args) CD dataCD=new CD();int b=1,2,3,4,5,6,7,8;dataCD.setSize(b.length);dataCD.setContent(b);int a=dataCD.getCon

12、tent();System.out.println("dataCD 上的内容: ");for(int i=0;i<a.length;i+)System.out.printf("%3d",ai);Computer computerIMB=new Computer();【代码 1】 /computerIMB 调用 putCD(CD cd) 方法,将 dataCD 的引用传递给 cd System.out.println("n 将 dataCD 的数据复制到计算机: computerIMB.");【代码 2】 /computerIMB

13、 调用 copyToComputer() 方法 System.out.println("computerIMB 上的内容: ");computerIMB.showData();int m=12;System.out.println("ncomputerIMB 将每个数据增加 "+m); computerIMB.addData(m);System.out.println("computerIMB 将增值后的数据复制到 CD: dataCD");【代码 3】 /computerIMB 调用 copyToCD() 方法System.out.

14、println("dataCD 上的内容: ");a=dataCD.getContent();for(int i=0;i<a.length;i+)System.out.printf("%3d",ai);实验 3 家族的姓氏模板代码FamilyPerson.javapublic class FamilyPerson static String surname;String name;public static void setSurname(String s) surname = s;public void setName(String s) thi

15、 = s;MainClass.javapublic class MainClass public static void main(String args) 【代码 1】 /用类名 FamilyPerson 访问 surname,并为 surname赋值: "李" FamilyPerson father,sonOne,sonTwo;father=new FamilyPerson(); sonOne=new FamilyPerson(); sonTwo=new FamilyPerson();【代码 2】 /father 调用 setName(String s),传

16、递 "向阳 " sonOne.setName("抗日 "); sonTwo.setName("抗战 ");System.out.println(" 父亲: "+father.surname+); System.out.println(" 大儿子: "+sonOne.surname+sonO); System.out.println(" 二儿子: "+sonTwo.surname+sonT);【代码 3】 /father 调用

17、setName(String s),传递 "张" System.out.println(" 父亲: "+father.surname+); System.out.println(" 大儿子: "+sonOne.surname+sonO); System.out.println(" 二儿子: "+sonTwo.surname+sonT);实验 4 三角形、梯形和圆形的类封装模板代码AreaAndLength.javaclass Trangledouble sideA,

18、sideB,sideC,area,length;boolean boo;public Trangle(double a,double b,double c)【代码 1 】 / 参数 a,b,c 分别赋值给 sideA,sideB,sideC if( 【代码 2】) /a,b,c 构成三角形的条件表达式 代码 3】 /给 boo 赋值else【代码 4】 /给 boo 赋值。double getLength()【代码 5】 /方法体,要求计算出 length 的值并返回public double getArea()if(boo)double p=(sideA+sideB+sideC)/2.0;a

19、rea=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC) ;return area;elseSystem.out.println(" 不是一个三角形 ,不能计算面积 ");return 0;public void setABC(double a,double b,double c)【代码 6 】 / 参数 a,b,c 分别赋值给 sideA,sideB,sideCif( 【代码 7】) /a,b,c 构成三角形的条件表达式【代码 8】 /给 boo 赋值。else【代码 9】 /给 boo 赋值。class Laderdouble abov

20、e,bottom,height,area;Lader(double a,double b,double h)代码 10】 /方法体,将参数 a,b,c 分别赋值给 above,bottom,heightdouble getArea()【代码 11】 /方法体, ,要求计算出 area 返回class Circledouble radius,area;Circle(double r)【代码 12】 /方法体double getArea()【代码 13】 /方法体,要求计算出 area 返回double getLength()length 返回【代码 14】 /getArea 方法体的代码 ,要求

21、计算出void setRadius(double newRadius) radius=newRadius;double getRadius()return radius;public class AreaAndLengthpublic static void main(String args)double length,area;Circle circle=null;Trangle trangle;Lader lader;【代码 15】 /创建对象 circle【代码 16】 /创建对象 trangle。【代码 17】 /创建对象 lader【代码 18】/ circle 调用方法返回周长并赋

22、值给 length System.out.println(" 圆的周长 :"+length);【代码 19】 / circle 调用方法返回面积并赋值给 area System.out.println(" 圆的面积 :"+area);【代码 20】 / trangle 调用方法返回周长并赋值给 lengthSystem.out.println(" 三角形的周长 :"+length);【代码 21】/ trangle 调用方法返回面积并赋值给 areaSystem.out.println(" 三角形的面积 :"+area);【代码 22】 / lader调用方法返回面积并赋值给 area System.out.println(" 梯形的面积 :"+area);【代码 23】 / trangle 调用方法设置三个边,要求将 三个边修改为 12,34,1。【代码 24】/ trangle 调用方法返回面积并赋值给 area System.out.println(" 三角形的面积 :"+area);【代码 25】 / trangle 调用方法返回周长并赋值给 lengthSystem.out.println (&

温馨提示

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

最新文档

评论

0/150

提交评论