"Salve, mio giovane amico. Spero che tu non abbia dimenticato che sono un Burocrate di 16a generazione. Se non avessi sistematizzato tutte le mie conoscenze, non avrei mai raggiunto questo traguardo. Ho tantissime informazioni utili. Ti aiuterò a svolgere alcuni compiti. Per cominciare, voglio spiegarti com'è fatto un tipico programma Java."

"Ti ascolto."

"Fatto numero uno. Un programma Java è costituito da classi. Ogni classe è memorizzata in un singolo file, il cui nome coincide con il nome della classe. L'estensione del file è java."

"Quindi un programma è costituito da una serie di file con estensione 'java' e ogni file contiene il codice di una sola classe, giusto?"

"Proprio così, Amigo. Se un file si chiama IlMioGatto.java, contiene la classe IlMioGatto."

"Fatto numero due. Quando abbiamo molti file di classi, li raggruppiamo in cartelle e sottocartelle. Inoltre le classi sono raggruppate in package e sottopackage. I nomi dei package e sottopackage devono essere indicati nel codice della classe e devono essere identici ai nomi delle cartelle e sottocartelle dell'unità."

"Quindi da una parte abbiamo file contenuti in cartelle e dall'altra classi contenute in package. Il nome di una classe deve coincidere con il nome del file che la descrive. Il nome di un package coincide con il nome della cartella in cui è memorizzata la classe."

"Puoi darmi qualche altro dettaglio?"

"I nomi dei package annidati sono separati da punti, quasi come gli URL."

"In altre parole, supponi di avere una classe chiamata Gatto, contenuta in un package animali.domestici. Questo significa che:

Il disco rigido ha una cartella (che chiameremo src) dove sono memorizzati tutti i file dei progetti.

Contiene una cartella denominata animali, che a sua volta contiene una sottocartella domestici.

La cartella domestici contiene un file Gatto.java, che a sua volta contiene il codice della classe Gatto."

"Non sono sicuro di aver capito."

"Ascolta. La struttura delle classi e dei package rispecchia la struttura delle cartelle e dei file sul disco. Se abbiamo un file denominato Casa.java, contenuto nella cartella src/com/case, allora c'è una classe denominata Casa contenuta nel package com.case."

"Ci sono."

"Sembri capire piuttosto in fretta. Guarda lo schermo: Questo è il codice di una piccola classe. Ho etichettato tutte le parti fondamentali:"

        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);                                 
      }                                                         
   }                                                            

}

"Eh, è chiaro quanto può esserlo dopo una sola spiegazione."

"Bene! È sufficiente per ora. Basta che capisci almeno qualcosa. Ti farai un'idea più completa con il tempo. Ora vado a schiacciare un pisolino. Qualcun altro continuerà la tua formazione."