エンジニア成長日記 swaponQ

コンピュータサイエンス専攻の一般人のブログです。

新・明解 Java 入門 演習 12-2 解答

Hello, Terminal!swaponQです!

今回は演習 12-2 に取り組んでいこうと思います。

  • 演習 12-2

定期預金付き銀行口座クラス型変数a, bの普通預金と定期預金残高の合計額を比較した結果を返却するメソッドcompBalanceを作成せよ。
合計額を比較して、aの方が多ければ1、等しければ0、bの方が多ければ-1を返却すること。もしaやbの参照先が、定期預金をもたないAccount型のインスタンスであれば、普通預金の金額を比較対象とすること。

・Account.java

class Account{
  private String name;
  private String no;
  private long balance;

  Account(String n, String num, long z){
    name = n;
    no =num;
    balance = z;
  }

  String getName(){
    return name;
  }

  String getNo(){
    return no;
  }

  long getBalance(){
    return balance;
  }

  void deposit(long k){
    balance += k;
  }

  void withdraw(long k){
    balance -=k;
  }
}

・TimeAccount.java

class TimeAccount extends Account{
  private long timeBalance;

  TimeAccount(String name, String no, long balance, long timeBalance){
    super(name,no,balance);
    this.timeBalance = timeBalance;
  }

  long getBalance(){
    return timeBalance + super.getBalance();
  }

  void cancel(){
    deposit(timeBalance);
    timeBalance = 0;
  }

  static int compBalance(Account a, Account b){
    int r = 0;
    long balanceA = a.getBalance();
    long balanceB = b.getBalance();
    if (balanceA > balanceB) r = 1;
    else if (balanceA < balanceB) r = -1;
    else r = 0;
    return r;
  }
}

・TimeAccountTester.java

class TimeAccountTester {
    public static void main (String[]args){
      	TimeAccount a = new TimeAccount("定期預金","123456",7654321,1234567);
    	System.out.println("口座名 : " + a.getName());
    	System.out.println("口座番号 : " + a.getNo());
    	System.out.println("口座残高 : " + a.getBalance());
    	Account b = new Account("普通預金","654321",123456);
    	System.out.println("口座名 : " + b.getName());
    	System.out.println("口座番号 : " + b.getNo());
    	System.out.println("口座残高 : " + b.getBalance());
    	System.out.println(TimeAccount.compBalance(a,b));
    }
}

・実行結果

口座名 : 定期預金
口座番号 : 123456
口座残高 : 8888888
口座名 : 普通預金
口座番号 : 654321
口座残高 : 123456
1

以上で「第12章:クラスの派生と多相性」は終了です。お疲れ様でした!
次回からは「第13章:抽象クラス」です。
これからも頑張りましょう!

Goodbye, Terminal… swaponQでした!