イントロダクション
前回は、クイズも交えて、入力コンポーネントを作成しました。
OpenCVは、画像解析用のライブラリです。輪郭の取り出しなど、いろいろできます。機械学習と連携して顔認証などにも応用されています。
以下の動画は、サンプルです。「OpenCVはこんな感じ・・・」というのがイメージできれば良いなと思いました。
OpenCvチュートリアルも詰まってきたので、基本に戻ります(笑)
<2019/02/09追記> 実装開始します。
計算処理
パソコンは大きな計算機です。なのでパソコンをコントロールするプログラムは計算処理が基本になる…と思いますが、どーですかね?
ジョークはさておきにして、今までに覚えた(理解した)事を整理します。
- ラベルに文字を表示する
- メソッドを呼ぶ(実装済のもの)
- テキストフィールドを追加する
- ラベルを追加する
こんな感じだと思います。※理解度は人によるので。。。
<余談>
何事も「すぐにわかる」とか「すぐ理解できる」というのは「能力」として良いものだと思いますが、それで人の優劣は決まりません。
実際に自分の場合は「なかなか理解できない」タイプの人間ですが今はプログラムを(後輩に)教えることの方が多いです。当時、一緒に学習していた、他の「すぐ理解できる」タイプの人たちは他のプログラム以外の仕事をしています。
Javaでの書き方
作成したプログラムは「myFirst Program()」と言うメソッドです。今度は、メソッドを自作します。メソッドの名前は「mySecondProgram()」です。メソッドの名前は頭文字を小文字にする「キャメルケース」と言う書き方をします。クラスは頭文字が大文字です。
これはJavaでのコーディングルール的なもので、世界の標準(Google、IBMなども採用してる)ものです。
こうすれば、一目でクラスとメソッド名の区別がつきます。ただし、変数名もキャメルケースなので、この部分は間違いやすいかも?
設計をする
プログラムの実装は、小さなサイクルで、設計〜実装〜テストを繰り返して行います。その内の、設計部分をやろうと言うわけです。
やりたい事を明確に
設計をする上でこれが凄く大事です。目的がはっきりしないと、コードもぐちゃぐちゃになります。なので、はじめの方に作成したコードは「リファクタリング」して整理しました。
<2019/02/09追記> しかし順序的にアレなんでリファクタリング前から開始します。(Gitソース)
とりあえずは、やりたい事(実現したい機能)を思い描きます。
やりたい事
今回は2つのテキストフィールドに値(数字)を入力してその計算結果をラベルに表示する。これが、やりたい事になります。
現状では入力後に計算するイベントを起こす物がないので計算ボタンを追加します。
そして、ボタンが押されたら計算処理を行い、結果をラベルに表示します。
やる事
- 計算ボタンを追加する
- ボタンが押されたら計算処理を行う
- 計算結果をラベルに表示する
<手順>
初めに現状の画面を確認します。下のような感じです。
「計算ボタンを追加する」下のような感じです。※イベント処理も追加してます。
イベント処理
ボタンにはsetOnActionと言うメソッドがあります。こいつを使って「ボタンが押されたら」の処理を行います。
とりあえず今回はここで終わります。
イベント処理は「(ボタンが)押下されたら」「ボタンが離されたら」。。。と色々ありますが、今回の使用したイベントは「Action」です、これはまとめた言い方(実装)です。「アクションがあった時」というイベントに反応して起動するものになります。書き方は下のような感じです。
Button keisan = new Button("計算"); keisan.setOnAction(new EventHandler<ActionEvent>() { ... });
後ほど実装などについて追記します。GITソース
今回の中ボス
「中ボス」という表現をしましたが、「目玉」です。イベント処理の実装部分です。今回は工夫をしないで、ストレートにずらずらとコードを書きました。
自分がコード・レビューをすると、言いたいことが「まぁまぁ」あります。そのうちの1つは「コードが汚い!」ということです。
中ボスの正体
- コードが汚いので綺麗で見やすいコードにしたい。
- テキストフィールドに「数字」以外は入っている時に「Hello World」の部分にエラーメッセージを表示しているが、チェックを入れるようにしたい。
- 足し算しかできないので他の計算もしたい。
村人Aの話
「たくのじ村」に住んでいる村人Aの話です。(そういう設定(笑))
『上にあげたような問題(中ボス)がいてほとほと困っておりますこって。だっけなんとかやっつけてもらえねぇでしょうか?奴はGITにコミットされてるすけ〜PULLなりダウンロードするなりして、やっつけておくんなせぇ』
こちらが問題のソースです。
でわでわ。。。