2022年10月3日 月曜日 01:23

【プログラミング初心者向け】C#・WPFで計算機アプリを作ってみようPart1(設計編)

【プログラミング初心者向け】C#・WPFで計算機アプリを作ってみようPart1(設計編)

※本記事はプログラミング初心者向けです。これまでにアプリを作ったことがある、プログラミングをしたことがある方にはレベルが低すぎるのでご了承ください。

皆様こんにちは。リラ吉です。

今回の記事から数パートに分けて、初心者の初心者による初心者のためのプログラミング講座をしたいと思います。

使用する言語はC#でレベルとしては初心者による初心者向けの記事なので、数時間程度で出来るようなものになっていますのでご了承ください。

C#を使用した理由は簡単にUI(表示、操作処理など)を開発できるWPFが使用できるからです。 開発環境は「Visual Studio」 をこの記事では使用します。 「Visual Studio」 のインストール方法については過去の記事をご参照ください。

ただMacOSをお使いの方は裏技はありますが、基本的にはWPFでは開発出来ませんのでご了承ください。

今回作るのは「計算機」です。動作がイメージし易いので設計、テストがしやすいのが選んだ理由です。

最終的な完成イメージは下図のようになります。

今回の記事では実際にプログラムを書く前に簡単に設計をしていきます。

計算機は複雑な内容・処理ではないので、正直設計する必要があるかは微妙なラインではありますが、設計は大事なことですし、時間をかけない程度にやっていきます。

クラス図

かなり適当ですが、クラス図は下図のようになります。

内容を解説すると、計算機を作るうえで大まかに9つのクラスを用意しました。

MainWindow

MainWindowはUI(=実際に使う人が見る計算機の画面)にデータを渡す、またUIから渡されたデータをMainWindowModelに渡す役割のクラスです。

MainWindowModel

MainWindowModel は MainWindowとDataManagerに「こういう値が来たよ」「こんな風に値が変わったよ」と伝える役割のクラスです。

DataManager

DataManagerはMainWindowModelから受け取ったものが一体何なのか、その後どういう処理をすべきか判断している場所です。実はここが一番重要です。

例えば「1」と入力したあと、「.」と入力したらどうなるでしょうか?当然ですが「1」の後ろに「.」をつけて「1.」という小数になります。なのでDataManagerには「1.」になるように判断させます。

しかしこのあとにもう一度「.」を押したらどうなるでしょうか?

私たち人間は「1..」のように小数点の後ろに小数点がないことはわかっていますが、コンピューターはそうはいきません。

こうならないようにDataManagerには「小数点の後に小数点が入力されたらダメ」と判断させなければなりません。

ただこれを聞いてプログラミング経験のある方は

それって文字型にしているからであって、数値型(double型など)なら小数点の後ろに小数点が来ないようにするとか考える必要ないんじゃない?

そう思われた方もいらっしゃるでしょう。

double型でも問題ありません。というかdouble型のほうが上手くいくかもしれません。

ただ今回は入力した数字や計算結果、数式を表示する場所をTextBlockにしました。

TextBlockのプロパティのTextは文字通りテキストなので、入力した数字等をstring型にして、それをバインドするという設計にしました。

これはどちらが正しいとかでなく、好みの問題になってくるかと思います。

また、DataManagerは下記のクラスとも繋がっています。

CalcStatus

CalcStatusはステータス(=今の状況・状態)の列挙型(enum)が書いてある場所です。

計算機にはステータスが必要です。数字を入れた後は「数字を入れた後」という状況になります。

演算子を入れた後は「演算子を入れた後」という状況です。

しかし、プログラミングではステータスのようなものは数字で表されます。

今回作る電卓で言えば0がクリアした後、1が数字を入れ後、2が演算子を入れた後といった感じです。

数字で表しても良いのですが、数字だと作った本人はわかっても、他の人がプログラムを見たとき「ステータスが0ってどういうこと?何を表してるの?」となってしまいます。

クリアした後であれば「ステータスは0」と書くより「ステータスはAfterClear」といった感じで表すほうがわかりやすいです。

これが出来るのが列挙型です。列挙型を使用することで、内部的な処理は数字ですが、私達が見る部分においてはステータスを数字ではなく文字で表すことができます。

Operator

演算子の列挙型が書いてあるクラスです。

CalcOption

二乗や平方根、±のような特殊な計算の列挙型が書いてあるクラスです。

DataStore

値を格納し、計算するクラスです。

NumberButton

数字ボタンを定義しているクラスです。

OperatorButton

演算子ボタンを定義しているクラスです。

これらがこの計算機アプリケーションのクラスになります。この設計をもとに次回の記事からプログラムを書いていきます。

シーケンス図

シーケンス図についても簡単に書いていきます。今回は「数字ボタンを押したとき」「演算子ボタンを押したとき」の2ケースを書きました。

「数字ボタンを押したとき」演算子ボタンを押したとき」 もステータス (=今の状況) によって動作は変わります。

なにも入力されていない状況だと、基本的には数字ボタンを押したときは押された数字をためて(キャッシュして)いき、演算子ボタンを押された際にその数字を一つ目の数字として確定させます。

例えば何も押していない状況で「1」と入力したら「1」がキャッシュされます。もう一度「1」を押すと「11」がキャッシュされます。

その後「+」を押したら「11」という数字が一つ目の数字として確定されるという作りです。

演算子を入力された状態で演算子ボタンを押すと演算子が変わります。

演算子が入力されている状況で数字ボタンを押すと演算子が確定され、数字をためて(キャッシュして) します。

最後に=を押したら数字が二つ目の数字として確定され計算が行われます。

というように書いてもわかりづらいと思うの、例を挙げると、1→2→+→-→3→4→=という順番で押していくと下記のようになります。

①1が押され1がキャッシュされる

②2が押され、キャッシュされていた数字の末尾(1の後ろ)に2を追加(キャッシュされている値が12になる)

③+が押され、12という値が一つ目の数字として確定される

④-が押され、演算子が+だったのが-になる

⑤3が押され、-が演算子として確定され、3がキャッシュされる

⑥4が押され、キャッシュされていた数字の末尾(3の後ろ)に4を追加(キャッシュされている値が34になる)

⑦=が押され、34という数字が二つ目の数字として確定、一つ目の数字(12)、演算子(-)、二つ目の数字(34)による計算が行われる

という流れになります。

実際の実装では制御も入るのでもう少し複雑にはなりますが、基本的にはこの流れになります。

ここまでが計算機アプリの基本的な設計になります。

設計は文字で説明するのが難しいので、もしわかりずらかったら申し訳ございません。

次の記事からVisual StudioでUIを作っていきます。

今回は以上です。それではまた。

リラ吉

にほんブログ村 にほんブログ村へ

関連記事

【プログラミング初心者向け】計算機アプリを作ってみよう Part5(ボタン作成編)

※この記事ではC#とWPFを使用してアプリを作成しております。MacOSではWPFを使用できませんので、その点はご了承ください。 皆様こんにちは。リラ吉です。 前回はTextBlockを作成しました。今回もUI部分(レイアウト)を作成していきます。 本記事ではボタンの作成を行います。 ボタンの作成 現在、プログラムは下の画像のようになっているかと思います。 50行目の</Viewbox>と53行目の</Grid>の間が空いていますが、ここに下記のコードを書きます。 <local:NumberButton x:Name="NumberBtn1" Grid.Column="0" Grid.Row="5" Number="1" Click="NumberBtn_Click" Margin="10,10" Style="{StaticResource CalcButton}" IsEnabled="{Binding IsEnableButton}"> ...

【プログラミング初心者向け】計算機アプリを作ってみよう Part4(TextBlock作成編)

※この記事ではC#とWPFを使用してアプリを作成しております。MacOSではWPFを使用できませんので、その点はご了承ください。 皆様こんにちは。リラ吉です。 前回は計算機アプリのスタイルを作成しました。今回もUI部分(レイアウト)を作成していきます。 本記事では式、数字を表示するTextBlockの作成を行います。 TextBlockの作成 まずはTextBlockを作っていきます。TextBlockとは文字を表示するところです。 TextBlockを作るのはエクセルで作った画面イメージの下図の矢印の場所です。 余談ではありますが、WPFにはTextBlockのように文字を表示するTextBoxというのもあります。 厳密にはフォントの設定等の違いもありますが、この2つの一番の違いは TextBlock:入力した文字、数字等を編集不可TextBox:入力した文字、数字等を編集可能 となっています。 今回作成する電卓は編集する必要はありませんのでTextBlockを使用します。 ではTextBlockを作っていきましょう。今回は下のコードを使います。 最初の3行が式を表示する1つ目のTextBlock、4行目が空白で、5行目以降が数字を表示する2つ目のTextBlockを作るためのコードです。 <Viewbox Grid.Row="0" Grid.ColumnSpan="4" HorizontalAlignment="Right"> <TextBlock Text="{Binding FormoulaText}" Margin="0,0,20,0"/> </Viewbox> <TextBlock Grid.Row="1" Grid.ColumnSpan="4" Background="#ffffff"/> <Viewbox Grid.Row="1" Grid.ColumnSpan="4" HorizontalAlignment="Right" Margin="0,0,20,0"> ...

【書籍紹介】「一流の頭脳」

皆様こんにちは。リラ吉です。 現代社会において、うつ病などの精神疾患、寿命が延びたことによる認知症の増加は非常に大きな問題になっております。 私自身、仕事で悩み、休職を経験したこともありました。 今回の記事ではそんな精神疾患やうつ病の対策について書かれたスウェーデンの精神科医であるアンダース・ハンセンさん著書「一流の頭脳」についてご紹介します。 本書のポイント 本書に書かれている重要なポイントは下記の5つです。 たとえわずかだったとしても運動をすると集中力の向上、ストレス解消に効果がある習慣的な運動は副作用のないうつ病の「特効薬」にもなる年齢を重ねるごとに脳は縮小していきますが、適度な運動をすることでそれを食い止めることができる運動は脳の海馬や前頭葉の発達を促す運動が脳にとって重要なのは人類の進化が関係している 上記ポイントの最初の3つは運動による効果、4つ目、5つ目はその理由になりますが1~4つ目のポイントはよく聞く話だと思います。 本書で一番面白いと思えるのは5つ目のポイントです。 私たち人間の進化の歴史を見ると約1万年前に農耕を始めました。約200年前に産業革命。そしてここ数十年でネットが普及という歴史になっています。 この歴史で見ると活動量は少なくとも半分に減りましたが、脳そのものは約1万年前からほとんど変わっていないというのが著者の意見です。 人類に限らず、生物は何万年もの年月をかけて緩やかに進化します。では生活様式はというとここ数十年で生物の進化のスピードをはるかにしのぐ速さで変わりました。 この生活様式の変化に脳も身体も追いつけていない状態である、また私たちの脳も身体も1万年前とそこまでかわっていないことから、当時の生活(=活動量が多い生活)に適した作りであり、最大のパフォーマンスを発揮するには適度な活動、つまり運動が必要だというのが著者の意見です。 そのような経緯から、「脳は適度な身体的負荷の下で最高のパフォーマンスをする」「変わらない脳が、速いスピードで変化する生活習慣に適応できず、様々な精神疾患が発生している」と著者は考えています。 感想 多くの方が「運動をすると集中力が上がる」「ストレス解消になる」と言っておりますが、その理由を人類の歴史から考えているのは非常に面白く感じました。 もちろん「運動が脳に良いのは人類の歴史のほとんどで体を動かしていたから」「様々な精神疾患が発生しているのは変化する生活習慣に適応できていないから」という意見が100%正しいかはわかりません。 ただ一つの意見としては参考になりますし、なにより運動をしようという気持ちにさせてくれる本かと思います。 今回の記事では紹介しませんでしたが、本書には効果の高い運動法についても書かれていますので、気になる方がいらっしゃいましたらぜひ購入していただけたらと思います。 それではまた。 リラ吉 一流の頭脳 価格:1760円(税込、送料無料) (2022/7/29時点)楽天で購入

【所有ギター紹介】Gibson Custom Shop Larry Carlton ES-335 “Pilot Run”

皆様こんにちは。リラ吉です。 先日の記事ではLarry Carlton(ラリー・カールトン)の2022年来日公演での使用機材を紹介しました。 来日公演を見に行き、あの記事を書いてから、セミアコがものすごく欲しくなってしまい・・・ 買ってしまいました 買ったギターはこのカラーを見たらわかる方も多いかもしれませんが、 Mr.335こと、Larry CarltonモデルのES-335です。 今回の記事ではこのギターをご紹介します。 特徴 上記の通りこのギターは普通のLarry CarltonモデルのES-335なのですが、実は通常のモデルではありません。 ヘッド裏を見ると「PILOT RUN」の文字があります。 実はこのギター、のちにレギュラー化となった『Larry Carlton Signatire ES-335』発売前のマーケティング用として全世界で50本ほどの限定生産されたモデルです。 ちなみに「PILOT RUN」スタンプは特に初期の物に限られるようで、#20番頃からはヘッド・シリアルは無くFホール内のオレンジ・ラベル上に変更されているようです。 長所・短所 このギターの長所としてまず挙げられるのが、汎用性の高いギターだとということです。練習としていくつかの曲を弾いてみましたが、さすがはES-335、たいていのジャンルには対応できそうな印象がありました(さすがにメタルとかはギターの特徴的にも見た目的にも難しそうですが・・・)。 汎用性が高いということはライブで重宝するということです。 短所としてあげられるのはよく言われていますが、ボディが大きいということです。 私は毎回測るときに1~2cmほど上下しますが、170cm前後の身長です。このくらいの身長だと少しボディが大きく感じてしまいます。といってもここは慣れもあるとは思うのでそのうち気にならなくなるかと思います。また、このボディの大きさがES-335特有の音色を出すためには必要であると言われていますので、短所のような長所とも捉えることができます。 というわけで、今回はGibson Custom Shop Larry Carlton ES-335 "Pilot Run"をご紹介しました。 様々なジャンルで使用できますのでどんどん使っていきたいと思います。 それではまた。 リラ吉
PVアクセスランキング にほんブログ村

返事を書く

Please enter your comment!
Please enter your name here

最新記事

【プログラミング初心者向け】計算機アプリを作ってみよう Part5(ボタン作成編)

※この記事ではC#とWPFを使用してアプリを作成しております。MacOSではWPFを使用できませんので、その点はご了承ください。 皆様こんにちは。リラ吉です。 前回はTextBlockを作成しました。今回もUI部分(レイアウト)を作成していきます。 本記事ではボタンの作成を行います。 ボタンの作成 現在、プログラムは下の画像のようになっているかと思います。 50行目の</Viewbox>と53行目の</Grid>の間が空いていますが、ここに下記のコードを書きます。 <local:NumberButton x:Name="NumberBtn1" Grid.Column="0" Grid.Row="5" Number="1" Click="NumberBtn_Click" Margin="10,10" Style="{StaticResource CalcButton}" IsEnabled="{Binding IsEnableButton}"> ...

【プログラミング初心者向け】計算機アプリを作ってみよう Part4(TextBlock作成編)

※この記事ではC#とWPFを使用してアプリを作成しております。MacOSではWPFを使用できませんので、その点はご了承ください。 皆様こんにちは。リラ吉です。 前回は計算機アプリのスタイルを作成しました。今回もUI部分(レイアウト)を作成していきます。 本記事では式、数字を表示するTextBlockの作成を行います。 TextBlockの作成 まずはTextBlockを作っていきます。TextBlockとは文字を表示するところです。 TextBlockを作るのはエクセルで作った画面イメージの下図の矢印の場所です。 余談ではありますが、WPFにはTextBlockのように文字を表示するTextBoxというのもあります。 厳密にはフォントの設定等の違いもありますが、この2つの一番の違いは TextBlock:入力した文字、数字等を編集不可TextBox:入力した文字、数字等を編集可能 となっています。 今回作成する電卓は編集する必要はありませんのでTextBlockを使用します。 ではTextBlockを作っていきましょう。今回は下のコードを使います。 最初の3行が式を表示する1つ目のTextBlock、4行目が空白で、5行目以降が数字を表示する2つ目のTextBlockを作るためのコードです。 <Viewbox Grid.Row="0" Grid.ColumnSpan="4" HorizontalAlignment="Right"> <TextBlock Text="{Binding FormoulaText}" Margin="0,0,20,0"/> </Viewbox> <TextBlock Grid.Row="1" Grid.ColumnSpan="4" Background="#ffffff"/> <Viewbox Grid.Row="1" Grid.ColumnSpan="4" HorizontalAlignment="Right" Margin="0,0,20,0"> ...

【書籍紹介】「一流の頭脳」

皆様こんにちは。リラ吉です。 現代社会において、うつ病などの精神疾患、寿命が延びたことによる認知症の増加は非常に大きな問題になっております。 私自身、仕事で悩み、休職を経験したこともありました。 今回の記事ではそんな精神疾患やうつ病の対策について書かれたスウェーデンの精神科医であるアンダース・ハンセンさん著書「一流の頭脳」についてご紹介します。 本書のポイント 本書に書かれている重要なポイントは下記の5つです。 たとえわずかだったとしても運動をすると集中力の向上、ストレス解消に効果がある習慣的な運動は副作用のないうつ病の「特効薬」にもなる年齢を重ねるごとに脳は縮小していきますが、適度な運動をすることでそれを食い止めることができる運動は脳の海馬や前頭葉の発達を促す運動が脳にとって重要なのは人類の進化が関係している 上記ポイントの最初の3つは運動による効果、4つ目、5つ目はその理由になりますが1~4つ目のポイントはよく聞く話だと思います。 本書で一番面白いと思えるのは5つ目のポイントです。 私たち人間の進化の歴史を見ると約1万年前に農耕を始めました。約200年前に産業革命。そしてここ数十年でネットが普及という歴史になっています。 この歴史で見ると活動量は少なくとも半分に減りましたが、脳そのものは約1万年前からほとんど変わっていないというのが著者の意見です。 人類に限らず、生物は何万年もの年月をかけて緩やかに進化します。では生活様式はというとここ数十年で生物の進化のスピードをはるかにしのぐ速さで変わりました。 この生活様式の変化に脳も身体も追いつけていない状態である、また私たちの脳も身体も1万年前とそこまでかわっていないことから、当時の生活(=活動量が多い生活)に適した作りであり、最大のパフォーマンスを発揮するには適度な活動、つまり運動が必要だというのが著者の意見です。 そのような経緯から、「脳は適度な身体的負荷の下で最高のパフォーマンスをする」「変わらない脳が、速いスピードで変化する生活習慣に適応できず、様々な精神疾患が発生している」と著者は考えています。 感想 多くの方が「運動をすると集中力が上がる」「ストレス解消になる」と言っておりますが、その理由を人類の歴史から考えているのは非常に面白く感じました。 もちろん「運動が脳に良いのは人類の歴史のほとんどで体を動かしていたから」「様々な精神疾患が発生しているのは変化する生活習慣に適応できていないから」という意見が100%正しいかはわかりません。 ただ一つの意見としては参考になりますし、なにより運動をしようという気持ちにさせてくれる本かと思います。 今回の記事では紹介しませんでしたが、本書には効果の高い運動法についても書かれていますので、気になる方がいらっしゃいましたらぜひ購入していただけたらと思います。 それではまた。 リラ吉 一流の頭脳 価格:1760円(税込、送料無料) (2022/7/29時点)楽天で購入

【所有ギター紹介】Gibson Custom Shop Larry Carlton ES-335 “Pilot Run”

皆様こんにちは。リラ吉です。 先日の記事ではLarry Carlton(ラリー・カールトン)の2022年来日公演での使用機材を紹介しました。 来日公演を見に行き、あの記事を書いてから、セミアコがものすごく欲しくなってしまい・・・ 買ってしまいました 買ったギターはこのカラーを見たらわかる方も多いかもしれませんが、 Mr.335こと、Larry CarltonモデルのES-335です。 今回の記事ではこのギターをご紹介します。 特徴 上記の通りこのギターは普通のLarry CarltonモデルのES-335なのですが、実は通常のモデルではありません。 ヘッド裏を見ると「PILOT RUN」の文字があります。 実はこのギター、のちにレギュラー化となった『Larry Carlton Signatire ES-335』発売前のマーケティング用として全世界で50本ほどの限定生産されたモデルです。 ちなみに「PILOT RUN」スタンプは特に初期の物に限られるようで、#20番頃からはヘッド・シリアルは無くFホール内のオレンジ・ラベル上に変更されているようです。 長所・短所 このギターの長所としてまず挙げられるのが、汎用性の高いギターだとということです。練習としていくつかの曲を弾いてみましたが、さすがはES-335、たいていのジャンルには対応できそうな印象がありました(さすがにメタルとかはギターの特徴的にも見た目的にも難しそうですが・・・)。 汎用性が高いということはライブで重宝するということです。 短所としてあげられるのはよく言われていますが、ボディが大きいということです。 私は毎回測るときに1~2cmほど上下しますが、170cm前後の身長です。このくらいの身長だと少しボディが大きく感じてしまいます。といってもここは慣れもあるとは思うのでそのうち気にならなくなるかと思います。また、このボディの大きさがES-335特有の音色を出すためには必要であると言われていますので、短所のような長所とも捉えることができます。 というわけで、今回はGibson Custom Shop Larry Carlton ES-335 "Pilot Run"をご紹介しました。 様々なジャンルで使用できますのでどんどん使っていきたいと思います。 それではまた。 リラ吉

【2022年来日公演版】Larry Carlton(ラリー・カールトン)の使用機材

世界的に有名なギタリストLarry Carlton(ラリー・カールトン)氏。 今回の記事では2022年の横浜公演のセカンドステージで使用したギター・アンプ・エフェクターを紹介いたします。 使用ギター 彼の代名詞といえばGibson ES-335ですが、近年使用しているのはパートナーシップを結び開発したSire H7です。カラーはCherry Sunburstでした。 ご本人が使用しているものは特注モデルかもしれませんが、私達が手に入れられるモデルの新品価格はデジマートさんを見る限り9万3500円です。Gibson ES-335よりは手に入れやすい価格になっております。 使用アンプ アンプはダンブル系のアンプとして有名なBludotone(ブルードトーン)を使用していました。 以前のインタビューで「Bludotoneのアンプはブリュッセルと東京にもあって、ヨーロッパと日本でツアーする時はアメリカから空輸しなくていいんだ」と言っておりましたので、このアンプは「日本に置いてあるアンプ」なのかもしれません(ただ昔のインタビューなので今は日本にないかもしれません)。 (adsbygoogle = window.adsbygoogle || ).push({}); 使用エフェクター・パワーサプライ エフェクターは下記のものを使用しておりました。 BOSS FV-30H/L(ボリュームペダル)Vox Wah(ワウ) ※V847かモディファイされたものか不明Blueline Overdrive(オーバードライブ)Providence CHRONO DELAY DLY-4(ディレイ)FREE THE...