Java はじめて18 〜設計後の部品を実装する2〜

今回は、部品の設計を行った後の、実装を行います。(設計で)作成したクラスは以下の通りです。

  1. MainBankクラス
  2. Calcurationクラス

オブジェクト指向Lv1

オブジェクト指向で作り始めるとだんだん話が大きくなってしまうので、ここでは小さく、わかりやすく実装しようと思います。
作成するクラスは上記の通りですので、これらをシンプルに実装します。

MainBakクラス

メインメソッドは、以下になります。

public static void main(String[] args) {
    MainBank main = new MainBank();
    main.atm();
}

2行で終わりました。。。デワデワ。。。

というのは冗談として、最終的なソースはGitにコミットしておきます。(本当はPUSHですが。。。)
ここまできたら、あとは創意工夫がモノを言うので、ここでは実装した結果を記載したいと思います。

作成したコード

部品一覧

一覧と言っても、2つのクラスしかないので、大したことはないのですが、簡単に説明だけつけておきます。

MainBankクラス
・メインメソッ: このクラスのatm()メソッドを呼び出します。これだけです。
・フィールド: cal=Calcurationクラス
・コンストラクタ: 引数なしのコンストラクタで、Calcurationクラスのインスタンスを生成する
・atm()メソッド: コンソール表示を行い、入金、引き出しのどちらかの処理を呼び出す。
そして、想定外の入力があった時はエラーメッセージを出力してサイド入力を促す
Calcurationクラス
・フィールド: 預金額を保持
・預金額のGetterとSetterを持っている
・入金・引き出し処理メソッド: 第二引数のbooleanで入金か引き出しか判定する。あとは入金なら足し算、引き出しなら引き算を行う。
他のメソッドは細かい入力チェック、計算処理

これらのクラス関係

MainBankクラスはフィールドにCalcurationクラスを持っている。このクラスがアプリケーションのメインを担当する。

これに対して、Calcurationクラスは、入金、引き出し処理の担当を行い。フィールドには預金額を保持するようにしている。入金、引き出しの処理で預金額が加算されたり、減算される。

コンストラクタについて

コンストラクタはクラスのインスタンスを作るときに通るメソッドのようなものでクラスの初期化を行う。
そして、引数のあるなしによりコンストラクタは区別される。

public class MainBank {
    MainBank() {
       // コンストラクタA
    }
    MainBank(int yokingaku) {
       // コンストラクタB
    }
    

上の2つのコンストラクタはJVMによって区別されます。
例えば、メインメソッドでコンストラクタを呼び出したときに処理が走る場所が変わります。サンプルコードをいかに記載しいます。

public static void main(String[] args) {
   // コンストラクタAが起動する
   MainBank main = new MainBank();
   // コンストラクタBが起動する
   MainBank main = new MainBank(1008);
   

このようにコンストラクタを複数作るのは、初期化するパターンを何個か作成したいからです。
もし、「パターンはいらんな。。。」という場合はこのようにコンストラクタを複数作らなければ良いのです。

そして、上のように「引数あり」と「引数なし」のコンストラクタ(メソッド)を作成することを「オーバーロード」と言いいます。
のちに、「オーバーライド」という言葉も出てくるので混同しないようにしましょう。

でわでわ。。。