TDDで電卓アプリを実装する日記#5

はじめに

第5回にしてやっと四則演算の追加を開始しています。手癖で雑に書いてしまえばすでに電卓が完成している気もするけど、今回は練習も兼ねてひたすら丁寧に作成するので気にしないことにする。

今回実装するToDoリスト

今回は四則演算すべてをまとめて実装する。(ただしゼロ除算を始めとする例外処理はまずは考えない。)

四則演算を一つのクラスで使い分けたいが、それには関数オブジェクトやそれに準ずるものが必要。Javaで関数オブジェクトを扱う方法は…BiFunctionインタフェースを使用すれば良さそうだ。

ただ、BiFunctionをそのままSignalKeyクラスに入れて扱うのは何をしているのかがぼやけてしまいそうだ。記号クラスでも作り、BiFunctionをラップしたほうが丁寧だろう。
あと関数を何度も作るのは無駄だし派手にリークしそうで嫌だからからファクトリクラス内に一個作ってそれの参照を渡す形で対応するか。

……と考えていたら上のようなクラスが出来上がった。

そして計算処理はSignalKeyクラス内に持たせて、

https://github.com/mickie895/swing_calc_for_education/blob/6ebbacb5dc5626baeed5a8409dd25eccf5e963c0/src/personal/mickie/education/calc/cpu/SignalKey.java

必要に応じてFormulaクラスから呼び出すようにしよう。

https://github.com/mickie895/swing_calc_for_education/blob/6ebbacb5dc5626baeed5a8409dd25eccf5e963c0/src/personal/mickie/education/calc/cpu/Formula.java

これでテストも通ることを確認した。テストは一回でまとめて作業したいからと短縮しているので、これに合わせてToDoリストも修正した。

四則演算の処理が完了したタイミングでの実装状況は下のリンクの通り。(タグ使えば良いことに今更気がついた)

https://github.com/mickie895/swing_calc_for_education/tree/dialy_%236_result

おわりに

5回目、実質作業時間6時間ぐらいでやっと四則演算ができるようになった。電卓を示すクラスの形が見えてきたので、もうそろそろ例外処理などへの対応もしていくか。

この記事が気に入ったらサポートをしてみませんか?