佐々木屋

技術的なことから趣味まで色々書きます

5.演習・課題-2.手引き-1.電卓

電卓を作ろうの手引き⑬(まとめ)

オブジェクト指向による電卓アプリを作ってきましたが、このようにオブジェクト指向の機能を利用すると全体のコード量が多くなると勘違いするかもしれません。確かにデリゲートクラスを構築することは面倒なように見えますが、抽象クラス等による継承を利用…

電卓を作ろうの手引き⑫(継承を利用した方法②)

抽象的な何もしないクラスを定義しましたので、四則演算の各クラスに派生させていきます。 public class Calc_Plus : Calc_None { public override decimal? calc(decimal numRight) { try { return NumLeft + numRight; } catch (Exception ex) { ErrorMess…

電卓を作ろうの手引き⑪(継承を利用した方法①)

デリゲートで演算メソッドを定義していた演算クラスたちを継承による方法に変更します。 まず、抽象的な何もしないクラスを定義します。繰り返しになりますが、今回はこのクラスもインスタンスとして使いますので抽象クラスにはしません。計算メソッドである…

電卓を作ろうの手引き⑩(演算管理クラス③の2)

デリゲート部分がまずかったことが分かり、以下のクラスを追加しています。 public class Ope_None { public decimal? calc(decimal numRight, ref string errorMessage) { return numRight; } } Public Class Ope_None Public Function calc(ByVal numRight…

電卓を作ろうの手引き⑨(修正の巻)

さて、前回フォームの構築でも説明した通り、この状態では電卓は機能しません。 悪い部分はズバリ以下のメソッドのデリゲートメソッド実行部分です。 public void Calculate() { if (ErrorFlg) return; try { string errorMessage = string.Empty; decimal r…

電卓を作ろうの手引き⑧(フォーム)

フォーム側は押下されたボタンの状態をクラスに渡すだけになりますので、一つ一つのイベントはあまり長くならないのが特徴です。 フォーム起動時イベント フォームが起動された時に発生する処理は、初期値を設定することと電卓の計算結果が0にならなければ…

電卓を作ろうの手引き⑦(演算管理クラス③の1)

最後に演算管理クラスの本丸である計算メソッドを構築します。 演算デリゲート 各演算クラスのCalcメソッド(戻り値decimal?、第一引数decimal、第二引数ref string)を実行するデリゲートとなります。戻り値はエラーと判別できるようにnull許容型にした方が…

電卓を作ろうの手引き⑥(演算管理クラス②)

前回に引き続き、演算管理クラスを作っていきます。今回は演算管理クラスの中で一番重要になるプロパティを作っていきます。 数値関係 表示用プロパティと入力数値(計算用)のプロパティを設定します。 表示用プロパティはsetterはクラス内部のみからしかア…

電卓を作ろうの手引き⑤(演算管理クラス①)

電卓アプリで最も重要な演算管理クラスを作ります。 sasaki816.hatenablog.com 既定値代入 クラスの既定値を代入するプロパティ処理を考えます。計算用(num)と表示用(ShowNum)に代入します。例えば、CEキー(表示だけを0にする)押下時などに利用できま…

電卓を作ろうの手引き④(共通関数)

数値変換 電卓には欠かせない数値変換関数です。これは電卓に限らず色々な場面で使えますので、一旦ちゃんと作っておくと役に立つと思います。 public static decimal NL(object value) { try { decimal res = decimal.Parse(value.ToString()); return res;…

電卓を作ろうの手引き③(演算クラスたち)

加減乗除のクラスを作っていきます。 VB6出身の方は多分ここで一回つまづくはずです。なぜなら、手続き型の場合はこの加減乗除をSelect Caseで分けて一つのメソッドにまとめていたと思います。例えば以下のような形です。 Dim intNum As Integer Select Case…

電卓を作ろうの手引き②(シンボリック定数)

定数をまとめて静的に宣言しておくと、アプリケーション設計上とても楽になります。変更時はこのクラスだけを変更すれば良いですし、拡張・縮小する場合も同様です。今回の電卓の場合は、桁数最大値と演算たちをそれぞれシンボリック定数として設定します。 …

電卓を作ろうの手引き①(エントリポイント)

ここからオブジェクト指向による電卓アプリ作成の解答例を紹介していきます。 なお、あくまでオブジェクト指向の練習として作成していますので、電卓アプリ自体の解答ではありません。また、「こうしたらもっと完結、且つ短く書けるよ!」というのもあるかも…