まさるblog

越後在住子持ちプログラマー奮闘記 - Author:まさる(高野 将、TAKANO Sho)

目次

Blog 利用状況

ニュース

著書

2010/7発売


Web掲載記事

@IT

.NET開発を始めるVB6プログラマーが知るべき9のこと

CodeZine

実例で学ぶASP.NET Webフォーム業務アプリケーション開発のポイント

第1回 3層データバインドを正しく活用しよう(前編)

ブログパーツ


書庫

日記カテゴリ

コミュニティ

電卓祭~提出~

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

  • √の対応
  • %の対応
  • 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回にわたっての電卓開発でしたが、非常に面白く、なかなか勉強になりました。ただ、残念ながら締め切りが来てしまい、まだ納得いってない部分も残したままの提出となってしまいました。この辺は電卓祭関係なく、今後もちょこちょこ直していこうかとは思ってます。

 

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

 

[2011/5/13追記]

この電卓のソースコードのライセンスはNYSL(http://www.kmonos.net/nysl/)とします。


A. 本ソフトウェアは Everyone'sWare です。このソフトを手にした一人一人が、
   ご自分の作ったものを扱うのと同じように、自由に利用することが出来ます。

  A-1. フリーウェアです。作者からは使用料等を要求しません。
  A-2. 有料無料や媒体の如何を問わず、自由に転載・再配布できます。
  A-3. いかなる種類の 改変・他プログラムでの利用 を行っても構いません。
  A-4. 変更したものや部分的に使用したものは、あなたのものになります。
       公開する場合は、あなたの名前の下で行って下さい。

B. このソフトを利用することによって生じた損害等について、作者は
   責任を負わないものとします。各自の責任においてご利用下さい。

C. 著作者人格権は まさる に帰属します。著作権は放棄します。

D. 以上の3項は、ソース・実行バイナリの双方に適用されます。


投稿日時 : 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 まさる

損時→そんとき

# PbclyTUfuldskVIvI 2011/12/26 23:05 http://www.discreetpharmacist.com/ita/index.asp

Uh, well, explain me a please, I am not quite in the subject, how can it be?!...

# ZPSlrxDogfie 2011/12/27 6:07 http://www.hansensurf.com

Last a few years has been to Ibiza, so met a person there whose style of presentation is very similar to yours. But, unfortunately, that person is too far from the Internet!...

# cIAszXGsDfkUjcpCDA 2012/01/14 2:53 http://www.michelegreenmd.com/

comment2

タイトル
名前
Url
コメント