JAVA实验4-1答案 下载本文

内容发布更新时间 : 2024/5/26 23:16:57星期一 下面是文章的全部内容请认真阅读。

GDOU-B-11-112

广东海洋大学学生实验报告书(学生用表)

实验名称 学院(系) 学生姓名

实验四(1). 类与对象(第1

部分) 信息学院 彭德权

专业

Java程序设计与开发

课程名称 课程号 16232204

技术 计算机科学与技术

钟海楼 04019

班级 计科1131 2015年

实验日期

9月24日

学号 201311621124 实验地点

一、实验目的

(1)学习使用Java中的类来封装对象的属性和功能; (2)学习掌握Java中对象的组合及参数传递。

二、实验任务

完成实验三指导上实验1、实验2的实验任务。

三、实验仪器设备和材料

安装有J2SE开发工具的PC机。

四、实验内容和步骤 实验1 机动车

编写一个Java应用程序,改程序中有两个类:Vehicle(用于刻画机动车)和User(主类)。具体要求如实验指导所示。

代码如下: Vehicle.java

public class Vehicle{ private double speed; private int power; void speedUp(int s){

this.speed=this.speed+s; }

void speedDown(int s){

this.speed=this.speed-s; }

void setPower(int p){ this.power=p; }

int getPower(){

return this.power;

}

double getSpeed(){ return this.speed; } }

User.java

public class User{

public static void main(String args[]){ Vehicle car1,car2; car1=new Vehicle(); car2=new Vehicle(); car1.setPower(128); car2.setPower(76);

System.out.println(\的功率是:\ System.out.println(\的功率是:\ car1.speedUp(80); car2.speedUp(80);

System.out.println(\目前的速度:\ System.out.println(\目前的速度:\ car1.speedDown(10); car2.speedDown(20);

System.out.println(\目前的速度:\ System.out.println(\目前的速度:\ } }

运行结果:

课后的练习

(1) 改进speedUp()方法,使得Vehicle类的对象加速时不能将speed值超过200。

void speedUp(int s){

if(this.speed+s>200){

System.out.println(\速度不能超过200\ }

else{

this.speed=this.speed+s; } }

在主方法中更改为car1.speedUp(210); 运行结果:

(2) 改进speedDown()方法,使得Vehicle类的对象在减速时不能将speed值小于0。

void speedDown(int s){ if(this.speed-s<0){

System.out.println(\速度不能少于0\ } else{

this.speed=this.speed-s; } }

在主方法中更改为car1.speedUp(80);

car1.speedDown(90);

运行结果:

(3) 增加一个刹车方法void brake(),Vehicle类的对象调用它将speed的值变成0。

void brake(){ this.speed=0; }

在主方法中增加语句:

System.out.println(\刹车\ car1.brake();

System.out.println(\目前的速度:\运行结果:

实验2 家中的电视

编写一个Java应用程序,模拟家庭购买一台电视,即家庭将电视作为自己的一个成员,即通过调用一个方法将某个电视的引用传递给自己的电视成员。具体要求如实验指导所示。

代码如下: TV.java

public class TV{ int channel;

void setChannel(int m){ if(m>=1){

channel=m; } }

int getChannel(){ return channel; }

void showProgram(){ switch(channel){

case 1:System.out.println(\综合频道\ break;

case 2:System.out.println(\经济频道\ break;

case 3:System.out.println(\文艺频道\ break;

case 4:System.out.println(\国际频道\ break;

case 5:System.out.println(\体育频道\ break;

default:System.out.println(\不能收看\频道\ }

} }

Family.java

public class Family{ TV homeTV;

void buyTV(TV tv){ this.homeTV=tv; }

void remoteControl(int m){ homeTV.setChannel(m); }

void seeTV(){

homeTV.showProgram(); } }

MainClass.java

public class MainClass{

public static void main(String args[]){ TV haierTV=new TV(); haierTV.setChannel(5);

System.out.println(\的频道是\ Family zhangSanFamily=new Family(); zhangSanFamily.buyTV(haierTV);

System.out.println(\开始看电视节目\ zhangSanFamily.seeTV(); int m=2;

System.out.println(\将电视更换到\频道\ zhangSanFamily.remoteControl(m);

System.out.println(\的频道是\ System.out.println(\再看电视节目\ zhangSanFamily.seeTV(); } }

运行结果:

课后的练习

(1) 省略代码2程序能否通过编译?若能通过编译,程序输出的结果是怎样的?

能编译通过。结果如下图,原因是对象内的元素channel是int型数据,默认值为0。 运行结果:

(2) 在朱类main()方法的最后增添下列代码,并解释运行效果。

Family liiFamily=new Family(); lisiFamily.buyTV(haierTV); lisiFamily.seeTV();

因为zhangSanFamily和lisiFamily引用了同一个对象成员haierTV, 导致当zhangSanFamily调用方法remoteControl()改变channel的值时, lisiFamily中的对象成员的channel值也会改变。

运行结果:

成绩 指导教师

孙兵

日期 2015年9月26日

第 页,共 页

注:请用A4纸书写,不够另附纸。