.java
.Exista trei elemente de prim rang care pot aparea intr-un fisier. Nici unul nu este obligatoriu, insa daca apar, atunci trebuie scrise in ordinea:
Un pachet este o colectie de clase inrudite si interfete care asigura protejarea accesului si controlul spatiului numelor.
Clasele si interfetele care fac parte din platforma Java sunt membrii
diferitelor pachete care grupeaza clase dupa functiuni: clasele fundamentale se
gasesc java.lang
, clasele pentru citiri si scrieri (intrari si
iesiri) sunt in java.io
, si asa mai departe. Utilizatorul
(dezvoltatorul, programatorul) isi poate si el grupa clasele si interfetele in
pachete.
Clasele si interfetele se grupeaza in pachete din cateva ratiuni:
Pentru a crea un pachet, trebuie introdusa o clasa sau o interfata in el.
Pentru a face acest lucru, se adauga instructiunea package la inceputul
fisierului sursa in care clasa sau interfata este definita. Spre exemplu,
urmatorul cod apare in fisierul sursa Unu.java
si introduce clasa
Unu in pahetul numere:
package numere;
public class Unu {
public Unu(){
System. out .println ("Aici
clasa Unu!");
}
}
Trebuie inclusa instructiunea package la inceputul fiecarui fisier sursa ce
defineste o clasa sau interfata care trebuie sa devina membru al pachetului
numere. Astfel se poate adauga instructiunea package in fisierul Doi.java
ce contine
package numere;
public class Doi {
public Doi(){
System. out .println ("Aici
clasa Doi!");
}
}
Domeniul de influenta al instructiunii package statement este intregul fisier
sursa in care apare, astfel incat cele doua clase Unu si Doi pot fi puse in
acelesi fisier. Daca se pun mai multe clase intr-un singurt fisier sursa, numai
una poate fi publica, si trebuie sa aiba acelasi nume cu numele fisierului (mai
putin extensia). Numai membrii publici ai unui pachet sunt accesibili din
exteriorul pachetului.
Daca nu este folosita instructiunea package, clasele si interfetele dintr-un fisier vor apartine pachetului default, care este un pachet care nu are nume. In general, pachetul default se foloseste numai pentru aplicatii mici sau temporale sau dezvoltarea aplicatiei este abia la inceput. In alte situatii, clasele si interfetele apartin unoar pachete care au nume.
In general este putin prababil ca doi programatori sa aleaga acelasi nume pentru pachete diferite. Totusi aceasta se poate intampla. Cum se rezolva aceasta? Simplu, prin adoptarea unei conventii.
O conventie buna este urmatoarea:
Companiile utilizeaza numele lor de domeniu pe Internet in ordine inversa, astfel:
com.evrika.numere
Pot apare coliziuni de nume chiar in interiorul aceleiasi companii. Pentru evitarea acestui lucru se mai adauga numele departamentului:
com.evrika.vest.numere
se face folosind cuvantul cheie import ca in continuare:
import numere.Unu;
Se face folosind caracterul *
la sfarsitul numelui pachetului.
import numere.*;
Exemplu
Daca dorim sa vedem cum functioneaza clasele Unu si Doi definite mai sus
putem scrie un fisier cu numele Tst.java
care sa contina codul
import numere.*;
public class Tst {
public static void main (String [] args) {
Unu u = new Unu ();
Doi d = new Doi ();
}
}
Pentru ca acest exemplu sa functioneze trebuie ca folderul ce contine sursa Tst.java
sa aiba un subfolder cu numele numere
. Iar in acest subfolder se
gasesc fisierele Unu.java
si Doi.java
. Aceste fisiere
trebuiesc compilate cu comenzile:
javac Unu.java
javac Doi.java
Inainte de a compila fisierul Tst.java
trebuie sa fie declarat
in variabila de mediu CLASSPATH
calea catre fisierul Tst.java
.
Pe langa aceasta cale nu trebuie sa existe o cale catre subfolderul cu numele numere
.
Deoarece atat compilatorul cat si interpretorul Java cauta mai intai in folderul
specificat in CLASSPATH
si mai departe merge pe cale specificata de
numele pachetului, in care punctele sunt inlocuite prin "/
"
in Windows si cu "\
" in UNIX. Spre exemplu daca calea
completa specificata in CLASSPATH
este:
D:\_work\javaco;
atunci in acest folder trebuie sa se gaseasca fisierul Tst.java
,
ar in folderul
D:\_work\javaco\numere
trebuie sa se gaseasca fisierele Unu.java
si Doi.java
.
In concluzie numele pachetului este folosit ca poteca, relativa la directorul
curent, catre folderul care contine sursele si/sau clasele (adica fisierele cu
extensia .class
).
© Cornel Mironel Niculae, 2003-2007
26-Jun-2007