创建一个银行账户的继承层次,表示银行的所有客户的账户。每个客户都能在他们的银行账户存钱,取钱。但是账户可以分为更具体的两种类型,例如,依靠存款生息的存储账户SavingsAccount类

该博客介绍了一个银行账户的继承层次设计,包括Account、CheckingAccount、SavingsAccount类,以及Person和Transaction类。讨论了类之间的关联和继承关系,并提供了测试代码示例,展示了如何在Person类中管理账户并进行交易操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

创建一个银行账户的继承层次,表示银行的所有客户的账户。每个客户都能在他们的银行账户存钱,取钱。但是账户可以分为更具体的两种类型,例如,依靠存款生息的存储账户SavingsAccount类,另一种就是信用卡账户CheckingAccount(没有利息但可以透支一定的金额)。每个账户的每次交易都需要存储以方便用来查询。每个客户可以拥有很多不同id的银行账户。

【任务一】根据设计出的UML图,回答问题
在这里插入图片描述
(1). Person和Account之间是什么关系?
Person与Account是关联关系。一个用户可以持有多个账户,且用户与账户相对独立
(2). Account和Transaction之间是什么关系?
Account与Transaction是依赖关系。因为Transaction是由Account构造出来的。只有Account存在的情况下,Transaction才存在
(3). SavingsAccount和CheckingAccount和Account之间是什么关系?
继承关系,SavingsAccount和CheckingAccount是Account的继承

【任务二】根据设计图和运行结果,设计出每个类的代码。测试程序的主要代码已经给出,请补充部分方法。
public class TestAccount {
public static void main (String[] args) {
Person p = new Person(“George”);
//创建一个储蓄账户account1
SavingsAccount account1 = new SavingsAccount(p.getName(),1122, 1000);
SavingsAccount.setAnnualInterestRate(5.5);
//创建一个和account1相同id的储蓄账户
SavingsAccount account2 = new SavingsAccount(p.getName(),1122, 1000);
//创建一个信用卡账户account3
CheckingAccount account3 = new CheckingAccount(p.getName(),2233,0, 20000);
//加入account1
p.addAcouunt(account1);
//一个人不能拥有相同的id的账户,account2不能加入成功
p.addAcouunt(account2);
//加入account3
p.addAcouunt(account3);
//在Person类中定printAllAccounts方法并补充完整
p.printAllAccounts();
account1.deposit(30);
account1.deposit(40);
account1.deposit(50);
account1.withdraw(5);
account1.withdraw(4);
account1.withdraw(2);
//在测试类中定义printAllTrans方法,并补充完整
printAllTrans(account1);
account3.withdraw(3000);
account3.withdraw(4000);
account3.withdraw(5000);
account3.withdraw(8000);
printAllTrans(account3);
}
public static void printAllTrans(Account a){
//补充代码
}
}
}

源码:

Account(账户)类:

import java.util.ArrayList;

//CheckingAccount与SavingsAccount的父类
public class Account {
   
    //存储人的姓名
    private String personName;
    //卡号
    private int carId;
    //存储金额
    private int balance;
    //用于存储账户所有的交易信息
    private ArrayList<Transaction> transactions = new ArrayList<>();

    Account(String personName,int carId,int balance){
   
        this.personName = personName;
        this.carId = carId;
        this.balance = balance;
    }

    //用于存取CheckingAccount传入的参数
    Account(String personName,int carId){
   
        this.personName = personName;
        this.carId = carId;
    }
    //传入金额
    public void setBalance(int balance) {
   
        this.balance = balance;
    }
    //获取卡号
    public int getCarId(){
   
        return carId;
    }
    //获取用户名
    public String getPersonName() {
   
        return personName;
    }
    //获取卡内余额
    public int getBalance() {
   
        return balance;
    }
    //向订单容器内添加订单
    public void addTran(Transaction transaction){
   
        transactions.add(transaction);
    }
    //获取订单容器
    public ArrayList<Transaction> getTransactions() {
   
        return transactions;
    }
}

CheckingAccount(信用卡)类:

public class CheckingAccount extends Account {
   
    //可借额度
    private int borrowableAmount;
    //已借额度
    private int haveBorrowableAmount;
    //构造函数
    CheckingAccount(String personName,int carId,int haveBorrowableAmount,int borrowableAmount){
   
        super(personName,carId);
        this.haveBorrowableAmount = haveBorrowableAmount;
        
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值