Java 2实用教程(第5版)实验指导与习题解答 第4章-类与对象

实验 1 机动车

实验目的

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

实验要求

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

Vehicle 类有一个 double 类型的变量 speed,用于刻画机动车的速度,一个 int 型变量 power,用于刻画机动车的功率。类中定义了 speedUp(int s)方法,体现机动车有减速功能;定义了 speedDown()方法,体现机动车有减速功能; 定义了 setPower(int p)方法,用于设置机动车的功率; 定义了getPower()方法,用于获取机动车的功率。

机动车的 UML图如图所示。
在这里插入图片描述

在主类 User 的 main()方法中用 Vehicle 类创建对象,并让该对象调用方法设置功率,演示加速和减速功能。

实验代码

public class 机动车01 {
    public static void main(String[] args) {
        Vehicle a = new Vehicle(60.0,100);
        a.speedDown(70);
        a.speedDown(20);
        a.speedUp(20);
    }


}

class Vehicle{
    private double speed;
    private int power;

    public void speedUp(int n){
        speed += n;
        System.out.println("加速后机动车速度为" + speed);
    }

    public void speedDown(int n){
        if(n > speed){
            System.out.println("参数错误!");
        }else {
            speed -= n;
            System.out.println("减速后机动车速度为" + speed);
        }
    }

    public Vehicle() {
    }

    public Vehicle(double speed, int power) {
        this.speed = speed;
        this.power = power;
        System.out.println("机动车速度为:" + speed + "机动车功率为:" + power);
    }

    public double getSpeed() {
        return speed;
    }

    public void setSpeed(double speed) {
        this.speed = speed;
    }

    public int getPower() {
        return power;
    }

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

运行截图

在这里插入图片描述

实验 2 家中的电视

实验目的

本实验的目的是让学生掌握对象的组合以及参数传递。

实验要求

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

有三个源文件: TV.java、 Familiy.java 和 MainClass.java,其中 TV.java 中的 TV 类负
责创建“电视”对象, Family.java 中的 Family 类负责创建“家庭”对象, MainClass.java
是主类。

在主类的 main()方法中首先使用 TV 类创建一个对象 haierTV,然后使用 Familiy 类
再创建一个对象 zhangSanFamily,并将先前 TV 类的实例 haierTV 的引用传递给zhangSanFamily 对象的成员变量 homeTV。

Family 类组合 TV 类的实例的 UML 图如图 4.4 所示。
在这里插入图片描述

程序效果示例

程序运行效果如图 4.5 所示。
在这里插入图片描述

实验代码

在这里插入图片描述
Familiy.java

package 家中的电视02;

public class Familiy {
    private TV homeTV;

    public void buyTV(TV a){
        homeTV = a;
    }
    public void remoteControl(int a){
        System.out.println("将电视更换到" + a + "频道");
        homeTV.setChannel(a);
    }
    public void seeTV(){
        System.out.println("在看电视节目");
       homeTV.showProgram();
    }
}

TV.java

package 家中的电视02;

public class TV {
    private int channel;

    public 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;
        }
    }

    public TV() {
    }

    public TV(int channel) {
        this.channel = channel;
    }

    public int getChannel() {
        return channel;
    }

    public void setChannel(int channel) {
        this.channel = channel;
    }
}

MainClass.java

package 家中的电视02;

public class MainClass {
    public static void main(String[] args) {
        TV haierTV =new TV(5);
        Familiy zhangSanFamily = new Familiy();
        zhangSanFamily.buyTV(haierTV);
        System.out.println("haierTV的频道是" + haierTV.getChannel());
        System.out.println("zhangSanFamily开始看电视节目");
        haierTV.showProgram();
        System.out.print("zhangSanFamily");
        zhangSanFamily.remoteControl(2);
        System.out.println("haierTV的频道是" + haierTV.getChannel());
        System.out.print("zhangSanFamily");
        zhangSanFamily.seeTV();
    }

}

运行截图

在这里插入图片描述

实验 3 共饮同井水

实验目的

本实验的目的是让学生掌握类变量与实例变量,以及类
方法与实例方法的区别。

实验要求

编写程序模拟两个村庄共用同一口井水。编写一个 Village 类,该类有一个静态的 int 型
成员变量 waterAmount,用于模拟井水的水量。在主类 Land 的 main()方法中创建两个村庄,
一个村庄改变了 waterAmount 的值,另一个村庄查看 waterAmount 的值。

实验代码

public class 共饮同井水03 {
    public static void main(String[] args) {
        Village v1 = new Village(100);
        Village v2 = new Village();
        System.out.println("最初的水量" + v1.getWaterAmount());
        //v1用掉20的水,还剩下80
        v1.setWaterAmount(80);
        //v2查看剩余水量
        System.out.println("剩下的水量" + v2.getWaterAmount());

    }
}

class Village{
    private static int waterAmount;

    public Village() {
    }

    public Village(int waterAmount) {
        this.waterAmount = waterAmount;
    }

    public int getWaterAmount() {
        return waterAmount;
    }

    public void setWaterAmount(int waterAmount) {
        this.waterAmount = waterAmount;
    }
}

运行截图

在这里插入图片描述

实验 4 求方程的根

实验目的

本实验的目的是让学生掌握使用 package 和 import 语句。

实验要求

按照实验要求使用 package 语句将方程的属性即计算根的方法封装在一个有包名的类中,包名是 tom.jiafei,类的名字是 SquareEquation。编写一个 SunRise 的主类,该主类使用
import 语句引入 tom.jiafei 包中的 SquareEquation 类。

实验代码

在这里插入图片描述
SquareEquation

package 求方程的根04.tom.jiafei;

import java.util.Scanner;

public class SquareEquation {

    public static void function (double a,double b,double c){
            double x1=(-b+Math.sqrt(b*b-4*a*c))*1/(2*a);
            double x2=(-b-Math.sqrt(b*b-4*a*c))*1/(2*a);
            System.out.println("方程根为"+x1);
            System.out.println("方程根为"+x2);
    }
}

SunRise

package 求方程的根04;

import 求方程的根04.tom.jiafei.SquareEquation;

import java.util.Scanner;

public class SunRise {
    public static void main(String[] args) {
        double a,b,c;
        System.out.println("请分别输入一元二次方程的a,b,c值");
        Scanner input=new Scanner(System.in);
        boolean T = true;
        while(T){
            System.out.println("输入a:");
            a=input.nextDouble();
            System.out.println("输入b:");
            b=input.nextDouble();
            System.out.println("输入c:");
            c=input.nextDouble();
            if(b*b-4*a*c<0) {
                System.out.println("该方程无解,请重新输入");
            }else{
                SquareEquation.function(a,b,c);
                T = false;
            }

        }
    }
}

运行截图

在这里插入图片描述

  • 26
    点赞
  • 127
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GT-一二

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值