読者です 読者をやめる 読者になる 読者になる

kojiko-android’s blog

開発中にハマった時の解決策や、忘れがちなことを残しておきます。

【電卓アプリを作るvol.1】状態遷移

電卓ロジックを考える

電卓を作るにあたって、
電卓をどのように操作していたかを思い出してみます。

まず数値を入力して、演算子キーを押し、
2つめの数値を入力して、最後に[=]キーを叩くという流れではないでしょうか。

演算子を押した直後に数値を入力すると、表示はいったんリセットされ、
また一桁目から入力していくようになります。

これは、最初は"左辺を入力している状態"になり、演算子を押した後は、
"右辺を入力する状態"になるといった具合に、
ユーザーの操作によって、内部的な"状態"が遷移していく、ということです。

状態の種類

基本的な電卓において、状態の種類を考えると、以下の4つでカバーできます。
各状態を、A・B・C・D、とします。

A 左辺入力中 (HELLO !)
B 演算子入力中(演算子が押され、右辺の入力前)
C 右辺入力中 (右辺の入力が開始された)
D 計算結果 (イコールが押された)

右は状態の特徴を説明していますが、この限りではありません。

主なキーの種類

数字キー (小数点を含む)
演算子キー
イコールキー
クリアーキー(オールクリアーも兼ねる)
%キー

・・・他にも、[+/-]チェンジキーや、メモリーキーなどありますが、
状態によって特に挙動が異なるのがこれらのキーであること、
あまり多いと記述が大変になってくるので、上記の5種類に絞っています。


電卓においては、特別な機種を除いて、キーの操作によってのみ、状態の変化が起きます。
キーの操作と、状態の関係を表すと、以下のようになります

f:id:kentaro198477:20160915214328p:plain
見づらくて申し訳ありません

今回の電卓では、%キーと、定数計算をカバーしています。
「%の処理」とありますが、%キーの処理は、
入力された演算子が[+][-]の場合と、[×][÷]の場合で違ってくるためです。


たかが電卓と、侮ることはできません。
でも、状態遷移をしっかり意識することで、
信頼性の高いアプリになっていきます。

次回は、この表を元に、状態によって処理を分ける仕組みを作っていきます!