広告
  サイト内検索:
<Let's create a game!> Introduction of programming for absolute beginners English
 

SESSION 11 その25
メンバ変数(フィールド) つづき

nowQuizNumも
correctTotalも・・・

エラーになった変数は、
メイン関数でも、
モード別の処理でも使う。

つまり
複数の関数で使う変数だ。

だったら、
全部の関数に共通の変数
にしちゃえ。
よかった!

そんな方法が
あるんだね。

どうやってやるの?
 
よかったー。


やり方は簡単。

関数のブロックの外に
変数を書けばいい。

これで全関数に共通の
変数のスコープになる。

つまり、KQMainクラスの
ブロックに書けば、関数
共通の変数になるんだよ。
 
スコープを
広げたんだ!
えー!!

関数の外に
変数書いちゃうの!!

そんなこと
できるんだー!?
 

クイズゲーム完成 モード処理関数化
 
・・・      
    public class KQMain {  
       
        //********************************************  
        // 定数  
        //********************************************  
        //入力・表示処理モード  
        private static final int EXEC_MODE_QUIZ = 1;//問題処理モード  
        private static final int EXEC_MODE_CHECK = 2;//解答処理モード  
        private static final int QUIZ_MAX = 3;//問題数  
       
        //********************************************  
        // 変数  
        //********************************************  
        private static boolean loopFlg = true;//ループフラグ  
        private static int inputNum = 0;//入力番号  
        private static int execMode = EXEC_MODE_QUIZ;//処理モード(問題処理モードで開始)  
       
        private static int nowQuizNum = 0;//現在出題番号  
        private static int correctTotal = 0;//正解数  
       
      public static void main(String[] args) {
   
 
 
        }  
       
        private static int checkAnswerData(int seikaiBangou,int kaitouBangou,int seikaiGoukei){  
   
 
 
        }  
       
        private static int scanInputData(){  
   
 
 
        }  
       
        private static void execModeQuiz(){  
   
 
 
        }  
       
        private static void execModeCheck(){  
   
 
 
        }  
       
    }  
・・・    
関数のブロックの外、
つまり、クラスのブロックに書けば共通の変数になる。
 
クラスの変数の有効範囲(クラス内)



じゃあ、
メイン関数の定数と変数を
全部クラスのブロックの直下に
移動してみよう。


コードを変更してくれ。

ただし、定数と変数の宣言には
private static
って追加して書いてね。
はいっ。

また関数と同じ
おまじない・・・

クラスに関係してる
からかな?
おまじないが
必要なのー。

今は気にしないで。
ドキドキ

大丈夫かな・・・。
 

クイズゲーム完成 モード処理関数化
(KotoQuizのKQMain.java)12行目~
 
・・・      
012   public class KQMain {  
013      
014       //********************************************  
015       // 定数  
016       //********************************************  
017       //入力・表示処理モード  
018       private static final int EXEC_MODE_QUIZ = 1;//問題処理モード  
019       private static final int EXEC_MODE_CHECK = 2;//解答処理モード  
020       private static final int QUIZ_MAX = 3;//問題数  
021      
022       //********************************************  
023       // 変数  
024       //********************************************  
025       private static boolean loopFlg = true;//ループフラグ  
026       private static int inputNum = 0;//入力番号  
027       private static int execMode = EXEC_MODE_QUIZ;//処理モード(問題処理モードで開始)  
028      
029       private static int nowQuizNum = 0;//現在出題番号  
030       private static int correctTotal = 0;//正解数  
031      
032     /**
033       * @param args the command line arguments  
034       */  
035     public static void main(String[] args) {
036       // TODO code application logic here  
・・・    
メイン関数の変数をクラスのブロック直下に移動させた。
全ての定数・変数に private static を付けた。
 
まだ書き写さないで下さい


今までと違う!
本当だ!
エラーが消えた!

変数が緑色になったよ!
 
なっ。

これで全部の関数に
共通の変数になった。


どの関数からも
認識できるように
なったんだよ。

これを
メンバ変数(フィールド)

って言うんだ。
  IDEが色を
変えてくれるから
分かりやすいだろ。
 
 
エラーの解消(ローカル変数からフィールドへ変更)
エディタウィンドウ


じゃあ、動作確認と
説明は後にするとして。


取り合えず先に
両方のモード処理を
関数にしちゃおう。

コードを改変してね。
はいっ。

いろいろなやり方が
あるんだねー!
理解するように
読んでね。

ゆっくりねん。
はあー

びっくり。
 
コード8:クイズゲーム完成 モード別処理関数化
コードをリンク先から参照して下さい

     

今回のコードは
移動が多いね。

分かんなく
なっちゃいそう。
先に関数の枠を
全部作っちゃってから
コードを移動すると
いいよ。
そっか。

先に枠
だったね。
臨機応変。

柔軟に考えてね。


・・・えっと・・・。

なぽちゃん、できた!

処理モードを
呼び出すように変更したよ。
メイン関数
また
ちっちゃくなったー!
 
おっけー。

じゃあ、
メンバ変数(フィールド)
について説明していこう。

     

順番から言えば
問題処理が
先でしょ。
ところで、なぽちゃん。

なんで、先に
解答処理モードから
関数にしたの?

なんか
理由があるんでしょ?
 
ああ、それは
解答処理モードの方が
変数や定数が多くて
派手にエラーになる
からね。それだけ。

ケケケ
  真っ赤かー。
 


ケケケ
   
もうー!!

 
 

広告
home もくじ 前のページを読む 次のページを読む
  サイト内検索:
広告
お勧めの姉妹サイト
leafdays - リーフデイズ 超初心者のための園芸入門 - 楽しい趣味のガーデニング -
広告