实验 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;
            }

        }
    }
}

运行截图

在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐