首页 > 其他分享 >12.5日报

12.5日报

时间:2024-12-13 10:42:50浏览次数:13  
标签:account 日报 double void Account amount 12.5 public

今天完成软件设计实验二十二状态模式,以下为实验内容:

实验 22:状态模式

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

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

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

 
   

 

 

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

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

实验要求:

1.     画出对应的类图;

 

2.     提交源代码;

// 账户状态接口
interface AccountState {
    void deposit(Account account, double amount);
    void withdraw(Account account, double amount);
}

// 正常状态
class NormalState implements AccountState {
    public void deposit(Account account, double amount) {
        account.setBalance(account.getBalance() + amount);
        System.out.println("Deposited " + amount + ". Balance is " + account.getBalance());
    }

    public void withdraw(Account account, double amount) {
        if (account.getBalance() >= amount) {
            account.setBalance(account.getBalance() - amount);
            System.out.println("Withdrew " + amount + ". Balance is " + account.getBalance());
        } else {
            System.out.println("Insufficient balance for withdrawal");
        }
    }
}

// 透支保护状态
class OverdraftState implements AccountState {
    public void deposit(Account account, double amount) {
        account.setBalance(account.getBalance() + amount);
        System.out.println("Deposited " + amount + ". Balance is " + account.getBalance());
        if (account.getBalance() > 0) {
            account.setState(new NormalState());
        }
    }

    public void withdraw(Account account, double amount) {
        if (account.getBalance() + 100 >= amount) {
            account.setBalance(account.getBalance() - amount);
            System.out.println("Withdrew " + amount + ". Balance is " + account.getBalance());
        } else {
            System.out.println("Insufficient balance for withdrawal");
        }
    }
}

// 冻结状态
class FrozenState implements AccountState {
    public void deposit(Account account, double amount) {
        System.out.println("Account is frozen. Deposit not allowed.");
    }

    public void withdraw(Account account, double amount) {
        System.out.println("Account is frozen. Withdrawal not allowed.");
    }
}

// 账户类
class Account {
    private double balance;
    private AccountState state;

    public Account(double balance) {
        this.balance = balance;
        this.state = new NormalState();
    }

    public double getBalance() {
        return balance;
    }

    public void setBalance(double balance) {
        this.balance = balance;
    }

    public AccountState getState() {
        return state;
    }

    public void setState(AccountState state) {
        this.state = state;
    }

    public void deposit(double amount) {
        state.deposit(this, amount);
    }

    public void withdraw(double amount) {
        state.withdraw(this, amount);
    }
}

// 客户端测试代码
public class StatePatternTest {
    public static void main(String[] args) {
        Account account = new Account(1000);

        account.deposit(500);
        account.withdraw(200);
        account.withdraw(1500); // 触发透支保护

       
account.deposit(1000);
        account.withdraw(500);

标签:account,日报,double,void,Account,amount,12.5,public
From: https://www.cnblogs.com/lijianlongCode13/p/18604405

相关文章

  • AI 口语学习应用 Speak 新一轮融资估值 10 亿美元;YouTube 推出 AI 多语言配音丨 RTE
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编......
  • 作为管理者,要你设计一个日报(周报)的excel模板,你是如何?有什么原则?要查看哪些信息呢?
    作为一个管理者,为前端开发团队设计日报(周报)Excel模板,我的目标是简洁、高效地追踪项目进度、识别潜在问题并促进团队沟通。以下是我设计的模板以及背后的原则:原则:简洁明了:避免冗余信息,只收集必要的进度数据。易于填写:模板结构清晰,填写方便快捷,减少团队负担。数据驱动:......
  • 2024最新更新!!!人民日报文本数据(2013-2024年)
    文章目录数据下载地址数据指标说明项目备注数据下载地址数据下载地址点击这里下载数据数据指标说明数据名称:人民日报文本数据数据简介:人民日报文本数据是《人民日报》自创刊以来所发表的所有文章、报道、评论等内容的集合,它记录了中国的历史变迁、社会发展......
  • Google PaliGemma 2 新增情绪识别能力;OpenAI 即将发布全新 Sora 视频生成器丨 RTE 开
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编......
  • 通义开源语音处理框架 ClearerVoice-Studio;亚马逊 Nova 计划明年发布端到端语音模型丨
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编......
  • 2024.12.5 周四
    2024.12.5周四Q1.1000给定x2~xn(<=500),构造a1~an,满足i:2~n,x[i]==a[i]%a[i-1]。Q2.1200n户人家在一条线上,现在在某两户i,i+1之间/两端修建一条公路,给定一01串:0代表希望在公路左边,1则相反。要求两侧都要有至少一半人家满意。多解则:i尽量距离中间人家最近,如仍多解则选取......
  • 2024.12.5——攻防世界xff_referer
    知识点:XFFreferer一、知识点详情1.XFF(1)介绍X-Forwarded-For(简称XFF)是一个HTTP请求头部字段,它用于表示HTTP请求的客户端IP地址,尤其是当请求通过一个中介代理或负载均衡器时。该字段的值通常是一个逗号分隔的IP地址列表,其中第一个IP地址是最初连接到中介代理或......
  • 24.12.5-----day01-回文数
    day01--12.25回文数题解classSolution{publicbooleanisPalindrome(intx){intnum=0;inttemp=x;if(x>=0){while(x!=0){//从右往左获取每一个数字intge=x%10;......
  • 个人测试日报邮件怎么发
    1.风险与求助风险与求助本来是放在3.测试进展与风险的,但是不方便领导查看,所以改成放在最前面。风险是写版本测试的风险,比如转测时间太晚,测不完;问题太多,开发问题解决慢,开发反复引入问题;严重问题阻塞测试等,要附上测试责任人,开发责任人,SE求助是自己解决不了的问题需要向领导求......
  • Hume AI 语音控制功能:创建个性化语音;李飞飞空间智能首个模型:单图生成 3D 交互场景丨 R
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编......