实验4.1 机动车

一、实验目的

本实验的目的是让学生使用类来封装对象的属性和功能。

三、实验要求

编写一个简单的Java应用程序,该程序有两个类:Vehicle(用于刻画机动车)和User(主类)。具体要求如下:

  1. Vehicle类有个double类型的变量speed,用于刻画机动车的速度,一个int型变量power,用于刻画机动车的功率。类中定义了speedUp(int s)方法,体现机动车有加速功能;定义了speedDown(int d)方法,体现机动车有减速功能;定义了setPower(int p)方法,用于设置机动车的功率;定义了getPower()方法,用于获取机动车的功率。机动车的UML图如图4.2所示。
  2. 在主类User的 main()方法中用Vehicle为创建对象,并让该对象调用方法设置功率,演示加速和减速功能。

四、程序效果示例

程序运行效果如图4.3所示。

图4.3 Vehicle类创建对象

运行结果如下:

五、程序模板

请按模板要求,将【代码】替换为Java程序代码。

【Vehicle.java】

public class Vehicle { double speed;//声明double型变量speed,刻画速度 int power; //声明int型变量power,刻画功率 void speedUp(int s) { speed = s+speed;//将参数s的值与成员变量speed的和赋值给成员变量speed } void speedDown(int d) { speed= speed-d; //将成员变量speed与参数d的差赋值给成员变量speed } void setPower(int p) { power = p; //将参数p的值赋值给成员变量power } int getPower() { return power; //返回成员变量power的值 } double getSpeed() { return speed; }}

【User.java】

public class User { public static void main(String args[]) { Vehicle car1, car2; car1 = new Vehicle(); //使用new运算符和默认的构造方法创建对象car1 car2 = new Vehicle();//使用new运算符和默认的构造方法创建对象car2 car1.setPower(128); car2.setPower(76); System.out.println("car1的功率是:"+car1.getPower()); System.out.println("car2的功率是:"+car2.getPower()); car1.speedUp(80);//car1调用speedUp()方法将自己的speed的值增加80 car2.speedUp(80);//car2调用speedUp()方法将自己的speed的值增加80 System.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)改进speedUp()方法,使得Vehicle类的对象在加速时不能将speed值超过200。

void speedUp(int s) { if (s+speed > 200){ this.speed = 200; }else { this.speed = s+speed; };//将参数s的值与成员变量speed的和赋值给成员变量speed}

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

(4)void speedDown(int d) {if(speed-d < 0){this.speed=0;}else {this.speed= speed-d; //将成员变量speed与参数d的差赋值给成员变量speed}}

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

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

调用brake:

car1.brake();System.out.println("car1目前的速度:"+car1.getSpeed());
结果如下: