状态模式

实验 22:状态模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 

1、理解状态模式的动机,掌握该模式的结构;

2、能够利用状态模式解决实际问题。

 

[实验任务一]:银行账户

Java代码模拟实现课堂上的银行账户的实例,要求编写客户端测试代码模拟用户存款和取款,注意账户对象状态和行为的变化。

实验要求:

1. 画出对应的类图

 

2. 提交源代码

// BankAccount类,代表银行账户

class BankAccount {

    private double balance;

 

    // 构造方法,初始化账户余额

    public BankAccount(double initialBalance) {

        if (initialBalance >= 0) {

            this.balance = initialBalance;

        } else {

            throw new IllegalArgumentException("初始余额不能为负数");

        }

    }

 

    // 存款方法

    public void deposit(double amount) {

        if (amount > 0) {

            balance += amount;

        } else {

            throw new IllegalArgumentException("存款金额必须大于0");

        }

    }

 

    // 取款方法

    public void withdraw(double amount) {

        if (amount > 0 && amount <= balance) {

            balance -= amount;

        } else if (amount <= 0) {

            throw new IllegalArgumentException("取款金额必须大于0");

        } else {

            throw new IllegalArgumentException("余额不足");

        }

    }

 

    // 获取账户余额的方法

    public double getBalance() {

        return balance;

    }

}

 

// BankAccountClient类,用于测试银行账户的功能

class BankAccountClient {

    public void testBankAccount() {

        // 创建一个初始余额为1000的银行账户

        BankAccount account = new BankAccount(1000);

 

        // 存款操作

        account.deposit(500);

        System.out.println("存款后余额:" + account.getBalance());

 

        // 取款操作

        account.withdraw(200);

        System.out.println("取款后余额:" + account.getBalance());

 

        try {

            // 尝试进行非法取款操作(金额大于余额)

            account.withdraw(1500);

        } catch (IllegalArgumentException e) {

            System.out.println("取款失败:" + e.getMessage());

        }

 

        try {

            // 尝试进行非法存款操作(金额为负数)

            account.deposit(-100);

        } catch (IllegalArgumentException e) {

            System.out.println("存款失败:" + e.getMessage());

        }

    }

}

 

// 主程序入口,用于运行测试

public class BankAccountMain {

    public static void main(String[] args) {

        BankAccountClient client = new BankAccountClient();

        client.testBankAccount();

    }

}

3注意编程规范。

 

posted @ 2024-12-30 22:35  chrisrmas、  阅读(5)  评论(0)    收藏  举报