| 
             プログラムCupを見てください。 
            もう一度、クラスとは何かを思いだしてください。クラスとはオブジェクトの設計図でした。 
            クラスは基本的に以下の三つの宣言から成り立っています。 
            
              - クラスの宣言
 
              - 状態(インスタンス変数など)の宣言
 
              - 振る舞い(メソッド)の宣言
 
             
            クラス宣言のブロックで状態の宣言と振る舞いの宣言が行われます。ただし、状態の宣言の順番やメソッドの宣言の順番には意味がありません。 
            つまり、Cupクラス宣言のブロックでは実行が上から下に動作してはいません。 
            では、どの順番で実行されているのでしょうか。以下は一例です。 
            
              - mainメソッドなどによりコンストラクタが呼び出されます。
 
              - オブジェクトの生成と同時に状態の宣言が実行されます。ただし、状態の宣言に依存関係があった場合には適切な順番で宣言が実行されます。これ以降、任意のメソッドのブロックから使用することができます。
 
              - mainメソッドにオブジェクトの参照が返却されます。
 
              - mainメソッドからオブジェクトの任意のメソッドが呼び出されます。ただし、mainメソッドから引数が渡される場合があります。
 
              - オブジェクトのメソッドのブロックを実行します。受け取った引数をオブジェクトのメソッドのブロックでは変数名で使用することができます。この時、当然ですがオブジェクトの状態もthis.変数名で使用することができます。
 
              - メソッドにreturnで返却値がある場合にmainメソッドの呼び出し側に返却されます。
 
             
           |