赞
踩
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纸书写,不够另附纸。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。