「ハロー、マイフレンド。私が 16 代目の官僚であることを覚えてますか?私は自分が持つすべての知識を体系化していなければ、同じ結果は出せなかったでしょう。私は役に立つ情報をたくさん持っています。きみのタスクをいくつか手伝ってあげますよ。まずは、Java の典型的なプログラムからお教えします。」

「お願いします。」

「事実その 1。Java のプログラムはクラスで構成されています。各クラスは個別のファイルに保管され、その名前はクラスの名前と同じにします。ファイルの拡張子は java とします。」

「プログラムはファイルの拡張子 'java' を付けた一連のファイルで構成され、各ファイルはクラスを 1 つだけ含む、ですね?

「その通りです、アミーゴ。MyCat.java という名前のファイルには、MyCat というクラスが入っています。」

「事実その 2。クラスのファイルがたくさんあるときは、フォルダーやサブフォルダーにグループ分けします。また、クラスはパッケージやサブパッケージにグループ分けされます。パッケージやサブパッケージの名前はクラスのコード内で指定される必要があって、それぞれの名前はドライブにあるフィルダーやサブフォルダーの名前と一致していなければいけません。

「したがって、ファイルはフォルダーに、クラスはパッケージに保管されるということです。クラスの名前は、クラスを説明するファイルの名前と一致している必要もあります。パッケージの名前は、クラスが保管されているフォルダーの名前と一致している必要があります。」

「それ以外にも知っておくべきことはありますか?」

「ネストされたパッケージの名前は、URL のようにピリオドを使って区切ります。」

「つまり、animals.pets パッケージに保管されている Cat というクラスがあれば、それは、

ハードドライブにはいくつかフォルダーがあり (src と呼ぶことにしよう)、そこにはすべてのプロジェクトファイルが保管されている。

そこには animals という名前のフォルダーがあり、さらにその中には a pets というサブフォルダーがある。

The pets フォルダーには、Cat.java というファイルがあり、その中には Cat クラスのコードが格納されている、ということを意味します。」

「よく理解できません。」

「いいですか、クラスやパッケージの構造は、ドライブ上のフォルダーやファイルの構造とよく似ているんです。House.java という名前のファイルが src/com/houses というフォルダーに保管されているとすれば、House という名前のクラスが com.houses というパッケージに保管されていることになります。」

「分かりました。」

「きみは吸収がとても早いようですね。ではちょっと画面に注目しましょう。こちらは小さいクラスのコードです。重要な箇所にはラベルを付けてあります。」

        PACKAGE NAME
package com.futujava.lesson2;
import java.io.IOException;
/**
 * User: General
 * Date: 12/21/12
 * Time: 11:59
 */
             CLASS NAME
public class Task1
{
                                                              
   private static String TEXT = "Kiss my metal rear actuator";⎥ CLASS VARIABLE
                                                              
                                                                
   public static void main(String[] args) throws IOException    
   {                                                            
      SCREEN OUTPUT                    SINGLE-LINE COMMENT      
      System.out.println(TEXT); //Display a single string  
        MULTILINE COMMENT                                       
      /*                                                        
        This is a multiline comment.                            
        The code below will display three identical strings.    ⎥ main() METHOD
       */                                                       
      VARIABLE DECLARATION                                      
      String s = "Ho-ho-ho!";                                   
      METHOD CALL                                               
      printTextMoreTimes(s, 3);                                 
   }                                                            
                                                                
                                          METHOD PARAMETERS   
   public static void printTextMoreTimes(String s, int count) ⎥ METHOD SIGNATURE
                                                            
                                                                
   {                                                            
      LOOP                                                      
      for (int i = 0; i < count; i++)                           
      LOOP BODY                                                 ⎥ METHOD BODY/CODE
      {                                                         
         System.out.println(s);                                 
      }                                                         
   }                                                            

}

「なるほど、1 回で完璧に理解できました。」

「すばらしい!これだけ分かっていれば十分です。とにかく、少なくとも何か 1 つは理解していくようにしましょう。時間と共に全部理解できるようになります。じゃ、私は少し昼寝をしますね。次は他の誰かがトレーニングしてくれるはずですよ。」