首页 > 解决方案 > 将信用卡和借记卡类链接到银行账户类

问题描述

我正在学习 Java,我的一项任务是创建 Credit and Debit Cards 类,以便您可以在创建新个人帐户时创建与新个人帐户相关联的新卡。信用卡应该存储购买,当用户付款(全部或部分)时,从账户中减去金额(加上 3% 的利息)。借记卡立即从账户中扣除购买金额。

我已经编写了所有内容并使其工作,但仅作为 Account 类中的嵌套类。有没有办法将账户、信用卡和借记卡作为三个独立的类,并使得每次创建新账户时,您都可以选择创建链接到每个新个人账户的卡?

免责声明:我正在修剪一些代码,因为它都是西班牙语,所以我不必全部翻译(主要是布尔值来检查正数和类似的东西),但代码仍然有效。提前非常感谢!

package accounts;

public class Account {

    protected static double balance;
    protected static String accountNumber;

    public Account() {
    }

    public Account(String accountNumber, double balance) {
        Account.accountNumber = accountNumber;
        Account.balance = balance;
    }

    public double getBalance() {
        return balance;
    }

    public String getAccountNumber() {
        return accountNumber;
    }

    public void deposit(double depositAmount) {
            Account.balance += depositAmount;
        }

    public void extraction(double extractionAmount) {
            Account.balance -= extractionAmount;
        }

    public void showBalance() {
        System.out.println("Your current balance is: " + getBalance());
    }

    protected static class DebitCard {

        private String userName;
        private int cardNumber;

        public DebitCard () {
        }

        public DebitCard (String userName, int cardNumber) {
            this.userName = userName;
            this.cardNumber = cardNumber;
        }

        public String getUserName() {
            return userName;
        }

        public int getCardNumber() {
            return cardNumber;
        }

        public void debitPurchase(double purchaseAmount) {
                Account.balance -= purchaseAmount;
            }
    }

    protected static class CreditCard {

        private String userName;
        private int cardNumber;
        private double creditCardDebt;
        private double limit;

        public CreditCard () {
        }

        public CreditCard(String userName, int cardNumber, double limit) {
            this.userName = userName;
            this.cardNumber = cardNumber;
            this.limit = limit;
        }

        public String getUserName() {
            return userName;
        }

        public int getCardNumber() {
            return cardNumber;
        }

        public double getLimit() {
            return limit;
        }

        public double getCrediCardDebt() {
            return creditCardDebt;
        }

        public void creditCardPurchase(double purchaseAmount) {
            if (this.creditCardDebt + purchaseAmount > this.limit) {
                Error notEnoughLimit = new Error("There's not enough limit to make this purchase");
                throw notEnoughLimit ;
            } else {
                this.creditCardDebt += purchaseAmount + (purchaseAmount * 0.03);
                this.limit -= purchaseAmount;
                this.creditCardDebt += purchaseAmount + (purchaseAmount* 0.03);
                this.limit -= purchaseAmount;
            }
         }

        public void payCard(double payAmount) {
            Account.balance -= payAmount;
            this.creditCardDebt = this.creditCardDebt - payAmount;
        }
    }
}

标签: javaclassoopcredit-card

解决方案


是的,有可能。但在你这样做之前,你应该解决由声明balanceaccountNumber作为static变量引起的问题。通过这样做,您使每个Account实例共享一个帐号和一个余额。

这些变量也应该private使其他类无法直接访问或更改它们。

一旦你解决了这个问题,你应该更改构造函数Credit并将Debit其作为参数Account。他们将其存储在一个私有字段中,然后Account通过对Account对象的操作执行从...中添加和移除资金的操作。


推荐阅读