I package in Java - Dipartimento di Informatica

Cos’e` un package?
I package in Java
• Perche` usiamo le cartelle (direttori, folder) sul
nostro desktop?
– Perche` desideriamo tenere insieme i file che
hanno uno stesso scopo o utilita`
– Per ritrovare i file con maggiore facilita` in un
momento successivo
– Per archiviare i file piu` facilmente e passarli a
qualcun’altro
– Per garantire l’unicita` ai nomi dei file
• Spesso un direttorio e` strutturato in sottodirettori
Master in Web Technology e
Security
Matteo Baldoni
Dipartimento di Informatica - Universita` degli Studi di Torino
C.so Svizzera, 185 - I-10149 Torino (Italy)
e-mail: [email protected] - URL: http://www.di.unito.it/~baldoni
Un package e` una cartella di classi Java
1 settembre 2000 Master in Web Technology e Security - Matteo Baldoni
Package
2
Package
• La cartella dove sviluppiamo un applicativo Java e`
package, il package di default di Java
• I package possono essere strutturati in
sottopackage come le cartelle
• Possono essere archiviati in file compressi (JAR file)
• Definiscono un spazio dei nomi per garantire
unicita` agli identificatori da noi utilizzati
• Le librerie di Java sono tutte organizzate in
package e sottopackage
java
package
util
public
classi
interfacce
awt
event
...
1 settembre 2000 Master in Web Technology e Security - Matteo Baldoni
3
1 settembre 2000 Master in Web Technology e Security - Matteo Baldoni
4
Package
L’istruzione package
• Come fare della nostra semplice cartella di classi un
vero e proprio package?
• Posso definire che un certo file che contiene una
certa classe pubblica e un certo numero di altre
classi (non pubbliche!) fa parte di un certo package
mediante la parola chiave package
• Come utilizzare un package all’interno di un file e
quindi rendere disponibili le utilita` in esso
definite?
package nomedelpackage ;
class nomedellaclasse { . . . }
prima istruzione!
nomedelpackage . nomedellaclasse
1 settembre 2000 Master in Web Technology e Security - Matteo Baldoni
5
1 settembre 2000 Master in Web Technology e Security - Matteo Baldoni
6
1
Un esempio
Dichiarazione di un package
• Voglio definire un package
di nome geometria
contenente a sua volta due
package di nome poligoni e
prismi
• In ogni file .java del sottodirettorio poligoni di
geometria aggiungero` come prima istruzione
package geometria.poligoni;
• In ogni file .java del sottodirettorio prismi di
geometria aggiungero` come prima istruzione
package geometria.prismi;
1 settembre 2000 Master in Web Technology e Security - Matteo Baldoni
7
1 settembre 2000 Master in Web Technology e Security - Matteo Baldoni
Effetto
Package, javac e java
• Effetto della precedente dichiarazione sara` quella
di associare alla classe Poligono e Prisma il nome di
– geometria.poligoni.Poligono
– geometria.prismi.Prisma
1 settembre 2000 Master in Web Technology e Security - Matteo Baldoni
package geometria.poligoni;
public class Rettangolo {
[…]
}
• Nel diretorio esempiPackage:
– Per la compilazione
• Questi sono i veri nomi delle classi ed e` cosi` che
andranno identificate
• Organizzazione e nomi simile a quella dei file nei
direttori
• javac geometria¥poligoni¥Rettangolo.java
– Per l’esecuzione
• java geometria.poligoni.Rettangolo
9
1 settembre 2000 Master in Web Technology e Security - Matteo Baldoni
• Scrivere i nomi delle classi e` diventato meno
agevole e sicuramente piu` tedioso
• L’istruzione import permette di semplificare la
scrittura dei nomi delle classi in package
• include in C/C++ vs import in Java
• Dove andare a cercare i vari package e classi?
• Come rendere accessibili i miei package da un
direttorio qualsiasi?
Importo il nome della
• Java fa uso (sia in compilazione che in esecuzione)
della variabile di ambiente CLASSPATH
in modo definitivo (nel file autoexec.bat)
import geometria.poligoni.Rettangolo; classe Poligono nel
package
geometria.poligoni
Importo tutti i nomi del
package geometria.poligoni
1 settembre 2000 Master in Web Technology e Security - Matteo Baldoni
10
CLASSPATH:
lo spazio dei nomi
L’istruzione import
import geometria.poligoni.*;
8
–
SET CLASSPATH=.;C:¥MWT¥GiornoII¥esempi¥esempiPackage
–
–
javac -classpath .;C:¥MWT¥GiornoII¥esempi¥esempiPackage
java -classpath .;C:¥MWT¥GiornoII¥esempi¥esempiPackage
temporaneamente
11
1 settembre 2000 Master in Web Technology e Security - Matteo Baldoni
12
2
Classpath:
lo spazio dei nomi
javac -classpath
.;C:¥MWT¥GiornoII¥esempi¥pr
ovaclasspath¥directory1;C:¥
MWT¥GiornoII¥esempi¥provacl
asspath¥directory2
ProvaClassPath.java
import javamio.util.*;
import corso.*;
class ProvaClassPath {
A a = new A();
}
1 settembre 2000 Master in Web Technology e Security - Matteo Baldoni
13
3