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