JAVA-类与对象

实验名称

类与对象

实验要求

  1. 理解面向对象的程序设计方法
  2. 掌握使用类的定义和对象的使用
  3. 掌握引用类型参数的传值

实验内容

  1. 基于面向对象的思想,模拟一个猫和老鼠的程序。

要求:

  1. 猫和老鼠都有名字和体重两种属性,各自都有有参的构造方法,猫有抓老鼠的方法public void catchMouse(Mouse mouse),老鼠则有逃跑的方法 public void escapeCat(Cat cat)。
  2. 产生一个猫对象和一个老鼠对象,对名字和体重通过有参构造方法进行赋值。若猫的体重大于或等于老鼠的体重,则实现抓老鼠方法;若猫的体重小于老鼠的体重,则实现老鼠逃跑的方法。

样例图如下:

实现思路

1.定义一个 Animal 类,包括名字和体重两个属性,以及有参构造方法。

2.定义一个 Cat 类,继承自 Animal 类,添加抓老鼠的方法 public void catchMouse ( Mouse mouse )。在方法中,判断猫的体重是否大于或于老鼠的体重,若是,则抓住老鼠,输出"猫抓住了老鼠",否则输出"老鼠逃跑了"。

3.定义一个 Mouse 类,继承自 Animal 类,添加逃跑的方法 public void escapeCat ( Cat cat )。在方法中,判断老鼠的体重是否大于猫的体重,若是,则逃跑成功,输出"老鼠逃跑成功",否则输出"老鼠被猫抓住了"。

4.在主函数中,创建一个 Cat 对象和一个 Mouse 对象,并通过有参构造方法为它们赋值。

5.调用 Cat 对象的 catchMouse 方法,传入 Mouse 对象作为参数,实现猫抓老鼠的过程。6.调用 Mouse 对象的 escapeCat 方法,传入 Cat 对象作为参数,实现老鼠逃跑的过程。7.输出结果,展示猫和老鼠的交互过程。

程序代码

package 实验二;//打包语句,将Cat类存于TestProgramming包中随后解释其作用;

public class Cat {
   
private String name;
   
private double weight;

   
public Cat(String name, double weight) {
       
this.name = name;
       
this.weight = weight;
    }

   
public void catchMouse(Mouse mouse) {
        System.out.println(name +
"抓住了老鼠" + mouse.getName() + "");
    }
}

package 实验二;

  

  public class Mouse {

    private String name;

    private double weight;

  

    public Mouse(String name, double weight) {

        this.name = name;

        this.weight = weight;

    }

  

    public String getName() {

        return name;

    }

}
package 实验二;

  

  import java.util.Scanner;

  

  public class TomAndJerry {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

  

        System.out.print("请输入猫的名字:");

        String catName = scanner.nextLine();

  

        System.out.print("请输入猫的体重:");

        double catWeight = scanner.nextDouble();

  

        System.out.print("请输入老鼠的名字:");

        String mouseName = scanner.next();

  

        System.out.print("请输入老鼠的体重:");

        double mouseWeight = scanner.nextDouble();

  

        Cat tom = new Cat(catName, catWeight);

        Mouse jerry = new Mouse(mouseName, mouseWeight);

  

        tom.catchMouse(jerry);

  

        scanner.close();

    }

}

结果截图

实验心得

对面向对象编程的概念有清晰的理解。在开始实验之前,需要对面向对象编程的概念和基本原则进行充分的理解,包括封装、继承、多态等方面的知识。只有对这些基本概念有深入的理解,才能更好地应用到实验中。

  1. 编写一个银行新用户开户及现金业务办理程序。

要求:

  1. 要模拟出银行对用户到来的欢迎动作、对用户离开的提醒动作(欢迎与离开提示均使用静态方法)。
  2. 模拟用户的开户(写入银行类构造方法中,开户时扣除10元卡费);
  3. 开户后可办理存款和取款业务,要提示用户的账户余额。
  4. 取款时需要用户输入正确的密码,取款金额要小于当前账户金额,若不能办理时,要提示用户。

实现思路

首先会提示用户输入账号和密码进行开户操作。在开户过程中,会调用Bank类的静态方法welcome来欢迎用户,并扣除 10 元的卡费。

然后,用户可以进行存款和取款业务。存款时,用户需要输入存款金额,并调用Bank类的deposit方法进行存款操作。取款时,用户需要输入取款金额和密码,并调用Bank类的withdraw方法进行取款操作,系统会进行余额判断。在程序结束之前,调用Bank类的静态方法farewell来提醒用户离开。

程序代码

package 实验二;

  

  import java.util.Scanner;

  

  class Bank {

    private static double cardFee = 10; // 卡费

    private String accountNumber;

    private String password;

    private double balance;

  

    public Bank(String accountNumber, String password) {

        this.accountNumber = accountNumber;

        this.password = password;

        this.balance = 0;

        welcome();

        deductCardFee();

    }

  

    private void deductCardFee() {

        balance -= cardFee;

        System.out.println("已扣除" + cardFee + "元办卡费用。");

        checkBalance();

    }

  

    public void deposit(double amount) {

        balance += amount;

        System.out.println("存款成功!");

        checkBalance();

    }

  

    public void withdraw(double amount, String inputPassword) {

        if (inputPassword.equals(password)) {

            if (amount <= balance) {

                balance -= amount;

                System.out.println("取款成功!");

                checkBalance();

            } else {

                System.out.println("账户余额不足!");

            }

        } else {

            System.out.println("密码错误!");

        }

    }

  

    private void checkBalance() {

        System.out.println("当前账户余额为:" + balance + "");

    }

  

    public static void welcome() {

        System.out.println("欢迎来到银行,办理您的业务!");

    }

  

    public static void farewell() {

        System.out.println("感谢您使用我们的服务,再见!");

    }

}

  

  public class Main {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

  

        System.out.print("请输入您的账号:");

        String accountNumber = scanner.nextLine();

  

        System.out.print("请输入您的密码:");

        String password = scanner.nextLine();

  

        Bank.welcome();

        Bank bank = new Bank(accountNumber, password);

  

        System.out.print("请输入存款金额:");

        double depositAmount = scanner.nextDouble();

        bank.deposit(depositAmount);

  

        System.out.print("请输入取款金额:");

        double withdrawAmount = scanner.nextDouble();

  

        System.out.print("请输入您的密码:");

        String inputPassword = scanner.next();

  

        bank.withdraw(withdrawAmount, inputPassword);

  

        Bank.farewell();

  

        scanner.close();

    }

}

结果截图

实验心得

通过该实验,我学会了如何让建立简单类型的数组,并掌握了将数组作为方法的传入参数和返回值。在该实验中,遇到的问题主要是如何将一个连续的多位数在存入数组时,每个数组元素只对应改多位数的一个组成数。

  • 19
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值