admin管理员组

文章数量:1648035

创建支票账户(checking account)和储蓄账户(saving account)两个子类。支票账户有一个透支限定额,但储蓄账户不能透支。

画出这些类的UML图并实现这些类。编写一个测试程序,创建Account、SavingsAccount和CheckingAccount的对象,然后调用它们的toString()方法。

Account类:
import java.util.Date;

public class Account {
	private int id = 0;
	private double balance = 0;
	private double annualInterestRate = 0;
	private Date dateCreated;
	public Account() {
		dateCreated = new Date();
	}
	public Account(int id, double balance) {
		this.id = id;
		this.balance = balance;
		dateCreated = new Date();
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public double getBalance() {
		return balance;
	}
	public void setBalance(double balance) {
		this.balance = balance;
	}
	public double getAnnualInterestRate() {
		return annualInterestRate;
	}
	public void setAnnualInterestRate(double annualInterestRate) {
		this.annualInterestRate = annualInterestRate;
	}
	public Date getDateCreated() {
		return dateCreated;
	}
	public void withDraw(double money) {
		balance -= money;
	}
	public void deposit(double money) {
		balance += money;
	}
	public String toString() {
		return "账户id为:"+ id +" 余额为:"+balance;
	}
}

CheckingAccount类:

public class CheckingAccount extends Account{
	private int quota;
	private double Overdraft_amount;
	
	public CheckingAccount(){
	}
	public CheckingAccount(double balance, int quota) {
		setBalance(balance);
		this.quota = quota;
	}
	public double getOverdraft_amount() {
		return Overdraft_amount;
	}
	public int getQuota() {
		return quota;
	}
	public void withDraw(double money) {
			if(getBalance()-money<0) {
				if(Math.abs(getBalance()-money)>quota) {
					System.out.println("透支额度不足!");
				}
				else {
					System.out.println("已透支 "+Math.abs(getBalance()-money)+" 元");
					setBalance(getBalance()-money);
				}
				Overdraft_amount=Math.abs(getBalance()-money);
			}
			else 
				setBalance(getBalance()-money);
	}
	public String toString() {
		return "账户id为:"+getId()+"余额为:"+getBalance();
	}
}

SavingsAccount类:

public class SavingsAccount extends Account{
	private double interestRate;
	private double interest;
	
	public SavingsAccount() {
	}
	public SavingsAccount(double balance, double interestRate) {
		setBalance(balance);
		this.interestRate = interestRate;
	}
	public double getInterestRate() {
		return interestRate;
	}
	public double getInterest(int month) {
		return interest=this.getBalance()*interestRate*month/12;
	}
	public double getbalance() {
		return getBalance()+interest;
	}
	public String toString() {
		return "账户id为:"+getId()+" 余额为:"+getbalance();
	}
}

测试程序:

public class HomeWork3 {
	public static void main(String[] args) {
		Account account = new Account(139,10000);
		SavingsAccount saccount = new SavingsAccount(5000, 0.0275);
		CheckingAccount caccount = new CheckingAccount(2500,5000);
	
		System.out.println("设置id:");
		saccount.setId(123);
		caccount.setId(789);
		System.out.println("储蓄账户的id为:"+saccount.getId());
		System.out.println("支票账户的id为:"+caccount.getId());
		System.out.println("存款:");
		System.out.println("储蓄账户的存款为:"+saccount.getBalance());
		System.out.println("支票账户的存款为:"+caccount.getBalance());
		System.out.println("储蓄账户的月利率为:"+saccount.getInterestRate());
		System.out.println("存储12个月所得利息:"+saccount.getInterest(12));
		System.out.println("存储12个月后存款为:"+saccount.getbalance());
		System.out.println("取款:");
		System.out.println("支票账户取款3000元:");
		caccount.withDraw(3000);
		System.out.println("支票账户取款4501元:");
		caccount.withDraw(4501);
		System.out.println("取款后支票账户余额:"+caccount.getBalance());
		System.out.println(account.toString());
		System.out.println(saccount.toString());
		System.out.println(caccount.toString());
	}
}

UML图:


运行结果:

本文标签: 账户年利率子类作业练习题