メンバ変数(フィールド) つづき |
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
じゃあ、
実際にプログラムを
動かしてみよう。
実行してみてくれ。
動作は今までと同じだろ? |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
はいっ!
問題ありませんっ!
バッチリ動きますっ! |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
そ、そう?
答え分かってる
のに?
変わった子
ね。。。 |
 |
|
 |
何度やっても
楽しいねー! |
|
プログラムの動作が変わらないのを実行して確認して下さい
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
今回、メンバ変数を使って
モード別処理を
関数化したわけだけど。
コードの処理の流れは
今までと全く同じ。
変数のスコープを変えて
関数呼出にしただけで
処理の流れはまったく
変わっていない。
だから、結果も前と同じ。
何も変わらないよ。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
メイン関数
で宣言されてた
時と同じー |
|
同じー |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
コードの形が
関数で変わったけど
変数を書き換える
流れは同じね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
そう言えば、ほら、
解答処理の部分を見てみろ。
メイン関数から
解答処理モード関数を呼んで
そこからさらに
正解チェック処理関数
を呼んでる。
関数の中から
関数を呼んでるな。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
あっ!ほんとだ。
モード別の処理を
関数にしたからだね。
普通に使ってたー! |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
複雑じゃない
だろ? |
 |
|
 |
難しく
考えないでも
いいんだね。 |
|
|
|
 |
|
 |
|
クイズゲーム完成 モード処理関数化
(KotoQuizのKQMain.java)12行目~ |
|
・・・ |
|
|
|
012 |
|
public class KQMain
{ |
|
~ |
|
|
|
035 |
|
public static void
main(String[] args) { |
|
~ |
|
|
|
051 |
|
|
|
052 |
|
//解答処理モード |
|
053 |
|
}else
if(execMode == EXEC_MODE_CHECK){ |
|
054 |
|
|
|
055 |
|
//解答処理モード関数呼び出し |
|
056 |
|
execModeCheck(); |
|
057 |
|
|
|
058 |
|
} |
|
~ |
|
|
|
067 |
|
} |
|
~ |
|
|
|
078 |
|
} |
|
~ |
|
|
|
~ |
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
~ |
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
~ |
|
|
|
177 |
|
/** |
|
178 |
|
* 解答処理モード処理 |
|
179 |
|
*/ |
|
180 |
|
private
static void execModeCheck(){ |
|
181 |
|
|
|
182 |
|
//解答をチェックする |
|
183 |
|
switch(nowQuizNum){ |
|
184 |
|
case
0: |
|
185 |
|
//正解番号チェック |
|
186 |
|
correctTotal
= checkAnswerData(3,inputNum,correctTotal); |
|
187 |
|
|
|
188 |
|
break; |
|
189 |
|
case
1: |
|
190 |
|
//正解番号チェック |
|
191 |
|
correctTotal
= checkAnswerData(1,inputNum,correctTotal); |
|
192 |
|
|
|
193 |
|
break; |
|
194 |
|
case
2: |
|
195 |
|
//正解番号チェック |
|
196 |
|
correctTotal
= checkAnswerData(3,inputNum,correctTotal); |
|
197 |
|
|
|
198 |
|
break; |
|
199 |
|
} |
|
~ |
|
|
|
214 |
|
} |
|
215 |
|
|
|
216 |
|
} |
|
・・・ |
|
|
|
|
関数の中から別の関数を呼んでいる
main関数から
execModeCheck関数を呼び
さらにcheckAnswerData関数を呼んでいる
処理の流れは今までと変わらない |
|
|
 |
|
 |
|
|
|
|
|
同じ事
できるよね? |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
うーん・・・
でも、なぽちゃん。
メンバ変数は、
どの関数からも使えるんだから
値を渡したのと同じだよね。
しかも、全部の関数に共通で。
なら、関数に値を渡すのに
引数と戻り値なんて
いらないんじゃないかな?
戻り値は1個しか戻せないし。
戻さないと値消えちゃうし。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
関数に値を渡す
メンバ変数と引数。
それぞれに利点が
あって使い分けが
必要なんだよ。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
うっ・・・
また
嫌なトコ
気づき
やがった。 |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
じゃあ、
引数とメンバ変数は
どう使い分ければ
いいの? |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
実はそれは
プログラムの設計では
すごい重要なところなんだ。
うーん、クラスもやってないし。
今言ってもピンと来ないと思うよ。
これからセッションを続けて
経験を積んでいけば分かるよ。
ゆっくりいこうね。。。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
うーん
分かんない。 |
 |
|
 |
うっ、
まだ突っ込む?
スルーしてくれよ。
難しいとこ
気づくなあ。。。 |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
うーん、じゃあ、
あたしよく分かんないから
これから全部メンバ変数で
書いちゃうね!
引数も戻り値も使わない!
そうすれば、変数名も
全部の関数で同じにできるよ。
その方が簡単で分かりやすいし。
ねっ!いいでしょ? |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
いいこと
だらけ! |
|
|
|
|
|
フエッ |
 |
|
 |
さよなら |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
じゃあ、
引数にした場合の
利点を1つ見ておこう。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
しゅん・・・ |
ひどい・・・
だって
分かんない
んだもん・・・ |
 |
|
 |
冗談
だってば。。。 |
|
|