– Witaj, mój młody przyjacielu. Mam nadzieję, że nie zapomniałeś, że jestem biurokratą 16. generacji. Gdybym nie porządkował całej posiadanej wiedzy, nigdy nie osiągnąłbym tego statusu. Jestem pełen przydatnych informacji. Pomogę Ci w niektórych zadaniach. Na początek opowiem o typowym programie Java.

– Słucham.

– Fakt numer jeden. Program Java składa się z klas. Każda klasa jest przechowywana w osobnym pliku, którego nazwa pokrywa się z nazwą klasy. Rozszerzenie nazwy pliku to java.

– Zatem program składa się z wielu plików o rozszerzeniu „java” i każdy plik zawiera kod tylko jednej klasy, zgadza się?

– Dokładnie, Amigo. Jeżeli plik nazywa się MojKot.java, zawiera on klasę MojKot.

– Fakt numer dwa. Jeśli mamy wiele plików klas, grupujemy je w folderach i podfolderach. Dodatkowo klasy są pogrupowane w pakiety i podpakiety. Nazwy pakietów i podpakietów muszą być wskazane w kodzie klasy i powinny być identyczne z nazwami folderów i podfolderów na dysku.

– Zatem z jednej strony mamy pliki przechowywane w folderach, a z drugiej strony – klasy przechowywane w pakietach. Nazwa klasy musi również pokrywać się z nazwą pliku opisującego klasę. Nazwa pakietu pokrywa się z nazwą folderu, w którym przechowywana jest klasa.

– Czy możesz podać mi więcej szczegółów?

– Nazwy zagnieżdżonych pakietów są podzielone na sekcje, prawie jak adresy URL.

– Innymi słowy: załóżmy, że masz klasę o nazwie Kot, przechowywaną w pakiecie zwierzaki.udomowione. To znaczy:

Na dysku twardym istnieje folder (nazwijmy go src), w którym przechowywane są wszystkie pliki tego projektu.

Zawiera on folder o nazwie zwierzaki, w którym z kolei znajduje się podfolder: udomowione.

Folder udomowione zawiera plik Kot.java, który z kolei zawiera kod klasy Kot.

– Nie jestem pewien, czy rozumiem.

– Spójrz. Struktura klas i pakietów odzwierciedla strukturę folderów i plików na dysku. Jeżeli mamy plik o nazwie Dom.java, przechowywany w folderze src/com/domy, to istnieje klasa o nazwie Dom, przechowywana w pakiecie com.domy.

– Kumam.

– Wydaje mi się, że szybko to łapiesz. Spójrz na ekran. To jest kod małej klasy. Oznaczyłem wszystkie kluczowe części:

NAZWA PAKIETU
package com.futujava.lesson2;
import java.io.IOException;
/**
 * Użytkownik: Ogólny
 * Data: 21/12/12
 * Godzina: 11:59
 */
             NAZWA KLASY
public class Task1
{private static String TEKST = "Pocałuj mój metalowy tylny siłownik";ZMIENNA KLASY
                                                                       ⎦
                                                                ⎤
   public static void main(String[] args) throws IOException{WYŚWIETLANIE NA EKRANIE       JEDNOLINIOWY KOMENTARZSystem.out.println(TEKST); //Wyświetla jeden ciąg         ⎥
        WIELOLINIOWY KOMENTARZ/*                                                        ⎥
        To jest wieloliniowy komentarz.                         ⎥
        Kod poniżej wyświetli trzy identyczne napisy.           ⎥ METODA main()
       */DEKLARACJA ZMIENNEJString s = "Ho-ho-ho!";WYWOŁANIE METODYprintTekstWieleRazy(s, 3);}                                                            ⎥
                                                                ⎦
                                          PARAMETRY METODYpublic static void printTekstWieleRazy(String s, int licznik)SYGNATURA METODY
                                                                 ⎦
                                                                ⎤
   {PĘTLAfor (int i = 0; i < licznik; i++)STRUKTURA PĘTLISTRUKTURA METODY/KOD
      {System.out.println(s);}}                                                            ⎥
                                                                ⎦
}

– Ha, wszystko jest tak zrozumiałe, jak to tylko możliwe... po jednym wyjaśnieniu.

– Dobrze! Na ten moment to wystarczające. Po prostu spróbuj zrozumieć cokolwiek. Pełne zrozumienie przyjdzie z czasem. Teraz idę uciąć sobie drzemkę. Ktoś inny będzie kontynuował Twoje szkolenie.