Pliki źródłowe i pakiety
Ziomal
Program języka Java może się składać z wielu niezależnie kompilowalnych modułów źródłowych, w których umieszcza się definicje klas oraz interfejsów. Moduły źródłowe są przechowywane w plikach o nazwie Nazwa.java, gdzie Nazwa jest nazwą klasy publicznej; pliki te stanowią jednostki kompilacji. Jeżeli w pliku Nazwa.java zdefiniowano tylko jedną klasę, to w wyniku kompilacji tego pliku powstaje plik wynikowy Nazwa.class. Jeżeli program jest aplikacją, to w zestawie modułów źródłowych musi się znaleźć dokładnie jeden moduł źródłowy (moduł główny aplikacji) z klasą publiczną, która zawiera publiczną i statyczną funkcję main (każdy inny moduł źródłowy może zawierać klasę z funkcją main, jeżeli nie jest to klasa publiczna).
Moduł źródłowy, w którym definicje klas oraz interfejsów poprzedzono deklaracją pakietu o postaci package nazwa_pakietu; staje się pakietem. Deklaracja pakietu rozszerza przestrzeń nazw programu i pozwala na lepsze zarządzanie programem wielomodułowym. Jeżeli moduł źródłowy nie zawiera deklaracji pakietu, to należy on do tzw. pakietu domyślnego (pakietu bez nazwy). Np. zadeklarowana wcześniej klasa Hello, umieszczona w pliku Hello.java należy do pakietu domyślnego.
Pakiety są ściśle powiązane z katalogami, w których umieszcza się moduły źródłowe i pliki wynikowe.
Załóżmy np., że w katalogu mike\myprog\pakiet1 (Win95 DOS) umieszczono główny plik źródłowy aplikacji Student.java o postaci:
package mike.myprog.pakiet1;
import mike.myprog.pakiet1.Grade;
public
class Student {
int i = 10;
public static void main(String args[])
{
System.out.println("Hello, I am here!");
Grade mygrade = new Grade();
mygrade.printgrade();
}
}
Plik zawiera definicję klasy Student, poprzedzoną deklaracją pakietu oraz deklaracją importu klasy Grade. Plik ten może zostać skompilowany (wywołaniem kompilatora javac z katalogu nadrzędnego w stosunku do katalogu mike: javac mike\myprog\pakiet1\Student.java).
Jeżeli np. plik Grade.java ma postać:
package mike.myprog.pakiet1;
class Grade {
int i = 10;
public void printgrade()
{
System.out.println("My grades are higher than " + i);
}
}
class Empty {}
to zostaną utworzone dwa pliki wynikowe: Student.class i Grade.class, a wywołanie interpretatora java mike\myprog\pakiet1\Student spowoduje wyprowadzenie na ekran napisu:
Hello, I am here!
My grades are higher than 10
Uwaga. Deklaracja importu nie oznacza włączania do pliku Student.java tekstu zawartego w pliku Grade.java. Natomiast pozwala ona użytkownikowi klasy Student używać skrótowych nazw: np. zamiast pisać mike\myprog\pakiet1\Grade mygrade = new mike\myprog\pakiet1\Grade(); mogliśmy napisać krótko Grade mygrade = new Grade();. Gdybyśmy chcieli używać również klasy Empty, to deklaracja importu miałaby postać: import mike.myprog.pakiet1.*. W języku Java ważna jest także kolejność deklaracji: najpierw deklaracja pakietu, po niej deklaracje importu, po czym definicje klas.
Autor Dariusz Frankowski
Artykuł pochodzi z magazynu komputerowego @T.
Darmową prenumeratę możesz złożyć na [url]www.at.w.pl[/url]
przecież to jest zerżnięte z http://www.escom.net.pl/support/index632c.html?escom:JAVA
Z pliku źródłowego Grade.java powstaną 2 pliki wynikowe:Grade.class i Empty.class a nie Student.class - tak gwoli ścisłosci:-)
no spox;)