まさるblog

越後在住アプリケーションエンジニア奮闘記

目次

Blog 利用状況

ニュース

07/04/23
新規加入しました。
よろしくお願いします。

07/06/02
東京勉強会#8に参加しました。

07/10/21
情報処理技術者試験(NW)受験しました。

07/11/17
オブジェクト指向分科会#2参加しました。

07/12/06
SOFTWARE TOYBOXオープンしました。

08/03/02
息子誕生しました。

08/03/05
twitterはじめました。

現在
子育て奮闘中です。
デザインパターン勉強中です。
iKnow!、ESLPodcastなどで英語勉強中です。

ブログパーツ

あわせて読みたい

書庫

日記カテゴリ

コミュニティ

色々

電卓祭~提出~

前回までで、とりあえず形にはなりましたが、あといくつか問題が残ってました。

  • √の対応
  • %の対応
  • 0除算、Overflowの対応

 

この他、コメント欄にて通り*さんに指摘された、

  • 1+2=で3が表示された後に1+2=ってすると5になるんです。

のバグもありました。

 

今回はこれらに対応して、提出したいと思います。あと、ついでに仕様22.クリップボードにコピー機能も付けちゃいます。

 

まずはバグ対応。これは「計算後状態」の時に「数字」ボタンを押下した際に、「計算前状態」に戻す処理が抜けていた野が原因だったので(前回のリファクタリング時のデグレート)、それを直すことでOKです。

 

そして、今回のメイン、「√」、「%」の処理です。

まず、状態遷移図に「√」、「%」を押下した際の状態遷移を追加します。

[入力状態の状態遷移図]

InputState_3

[計算状態の状態遷移図]

CalculateState_2

 これにしたがって、これまでと同じようにStateパターンで実装します。この中で梃子摺ったのは、「計算前状態」で「√」ボタンを押下した際に「計算後状態」にするところです。この状態遷移が必要なことに気がつくまでしばらくかかってしまいました。

 

次に、0除算、Overflowの対応です。これは「計算ボタン」押下、「=」ボタン押下、「%」ボタン押下時に、「DivideByZeroException」、「OverflowException」が発生したら、"E."を表示し、それぞれ「入力前状態」、「計算前状態」に戻すことにしました。本当は"E."の表示後、「AC」か「C」ボタン以外の操作を無効にしたかったのですが、ちょっと時間が足りなくてできませんでした。

 

そしてクリップボードコピー機能です。まず、画面に「コピー」ボタンを追加しました。

Calculator3

あとはコピーボタンのクリックイベントで、System.Windows.Forms.ClipboardクラスのSetTextメソッドを呼んでやるだけです。

 

と、いうわけで、ここまでで私の「わんくま電卓」はこれで完成とします。

アクア先生、お願いします。→WankumaCalculator2_Final_20070720.zip

 

さて、4回にわたっての電卓開発でしたが、非常に面白く、なかなか勉強になりました。ただ、残念ながら締め切りが来てしまい、まだ納得いってない部分も残したままの提出となってしまいました。この辺は電卓祭関係なく、今後もちょこちょこ直していこうかとは思ってます。

 

最後に、課題を提案してくれたアクアさんに感謝して、このシリーズを終えたいと思います。アクアさん、どうもありがとうございました。

投稿日時 : 2007年7月20日 23:17

Feedback

# re: 電卓祭~提出~ 2007/07/23 14:07 通り*

細かなことですが、%ボタンの仕様について、面白いこと見つけました。

100+5%
 まさるさん→105
 Windows →この時点では計算しない
 私の携帯 →105
100+5%=
 まさるさん→110(イコールのたびに+5)
 Windows →105(イコールのたびに+5)
 私の携帯 →205(イコールのたびに+100)

200*5%
 まさるさん→2000(=200×200×5÷100)
 Windows →10
 私の携帯 →10
200*5%=
 まさるさん→10000(イコールのたびに×5)
 Windows →2000(イコールのたびに×10)
 私の携帯 →2000(イコールのたびに×200)

でも%なんて普段、使わないです...
>ここまでで私の「わんくま電卓」はこれで完成とします。
とのことなので、これは仕様ですね(^^
#あ、1/0=でEが表示された後にイコールとか押すと(ボソ

状態をクラスで表すところとか、とても勉強させてもらいました。ありがとうございました!

# re: 電卓祭~提出~ 2007/07/23 22:53 まさる

>細かなことですが、%ボタンの仕様について、面白いこと見つけました。
単純な間違いでしたorz仕様ぢゃねくてバグです。

>#あ、1/0=でEが表示された後にイコールとか押すと(ボソ
これもバグですねぇ。なんかもぉだめだめ。

>状態をクラスで表すところとか、とても勉強させてもらいました。ありがとうございました!
いえいえ、こちらこそ通り*さんにたくさんテストしていただいたおかげで、
いろいろとバグを見つける事もできましたので、感謝してます。

第2回祭があったら、また損時はお願いします(^ ^

# re: 電卓祭~提出~ 2007/07/23 22:54 まさる

損時→そんとき

タイトル  
名前  
Url
コメント