Deo zbornika Učimo Javu

Pravljenje paketa u Javi

Java vas ne ograničava na korištenje samo sistemskih paketa, već vam dozvoljava i pisanje vlastitih.

Dodavanje klase u paket je jednostavno, samo je potrebno dodati package deklaraciju u prvu liniju fajla:

package <ime_paketa>;

Sve klase koje hoćemo da uključimo u paket moraju sadržati istu package deklaraciju na početku, i svi fajlovi koji sadrže definicije klasa moraju se čuvati u direktoriju koji ima isto ime kao paket.

Ako želimo da klasa bude dostupna izvan paketa, potrebno je deklarisati klasu koristeći ključnu riječ public. Ukoliko ispred definicije klase ne stoji public, klasa je dostupna samo unutar istog paketa.

Pravila pisanja paketa

Paketi se pišu jednako kao i bilo koji Java program, no pri tome se treba držati sljedećih pravila:

  • Ne smije biti više od jedne public klase po fajlu.
  • Svi fajlovi u paketu moraju se zvati ImeKlase.java, gdje je imeKlase ime javne klase u fajlu.
  • Na početku svakog fajla u paketu mora ići naredba package ime.paketa;

Pravila imenovanja

Javina konvencija imenovanja jemči jedinstvena imena paketa na svetskom nivou, tako što od autora zahteva da koriste ime domena koji poseduju u imenovanju paketa. Dakle, ako vlasnik domena skolakoda.github.io kreira neki paket, on će imati prefiks org.skolakoda. Na primer:

org.skolakoda.graphic

Putanja klase (CLASSPATH)

Paketi su usko povezani sa strukutrom direktorija. Direktorijum mora imati isto ime kao i paket. Ime paketa može biti složeno, npr: graphic.shapes, što znači da je shapes poddirektorij direktorija graphic. Ime može biti proizvoljne složenosti, ali treba da održava strukturu direktorija u koju je paket smješten.

Putanja do direktorijuma paketa mora biti eksplicitno naznačena kompajleru, pomoću vrijednosti koja se postavlja za varijablu okruženja CLASSPATH. Najjednostavniji način za postavljanje CLASSPATH-a je navođenjem opcije –classpath pri pozivu kompajlera.

Da biste svoj paket koristili u drugim programima, kompilirajte .java fajlove, i premjestite dobivene .class fajlove u odgovarajući poddirektorij direktorija koji je naveden u CLASSPATH. Na primjer, ako je u CLASSPATH naveden direktorij /math/vedris/java/classes/, a puno ime paketa je hr.math.student.vedris.package1, onda bismo kompilirane datoteke stavili u direktorij /math/vedris/java/classes/hr/math/student/vedris/package1/.

package hr.math.student.vedris.package1;

import java.net.*;

public class URLSplitter {

  public static void main(String[] args) {

    for (int i = 0; i < args.length; i++) {
      try {
        URL u = new URL(args[i]);
        System.out.println("Protocol: " + u.getProtocol());
        System.out.println("Host: " + u.getHost());
        System.out.println("Port: " + u.getPort());
        System.out.println("File: " + u.getFile());
        System.out.println("Ref: " + u.getRef());
      }
      catch (MalformedURLException e) {
        System.err.println(args[i] + " is not a valid URL");
      }
    }

  }

}
% javac -d /math/vedris/java/classes URLSplitter.java

Opcija –d kaže kompajleru da kreira potrebne poddirektorije direktorija /math/vedris/java/classes/. U ovom primjeru, datoteka URLSplitter.class bila bi smještena u direktorij /math/vedris/java/classes/hr/math/student/vedris/package1/.

Literatura

  • Elliotte Rusty Harold, Java Lecture Notes, preveo Draško Budin.
  • Programski jezik Java, Bilješke sa predavanja Muzafera Saračevića, Novi Pazar, 2015.