admin管理员组文章数量:1648014
创建支票账户(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图:
运行结果:
版权声明:本文标题:Java作业--(Account类的子类)在编程练习题9.7中定义了一个Account类来对一个银行账户建模。一个账户有账号、余额、年利率、开户日期等属性,以及存款和取款等方法。 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1729495806a1202894.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论