Java/Classi e oggetti: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Ramac (discussione | contributi)
m questa parte va un po' tutta risistemata...
Paidos (discussione | contributi)
→‎Archiviare le classi: più semplice ma più scorrevole
Riga 143:
Compilando “a mano” la procedura diventa trasparente, più chiara, almeno per quanto riguarda la formazione di pacchetti di classi del programmatore.
 
I nomi del package devono avere una corrispondenza diretta nel filesystem: ad esempio, se si vuole archiviare il file helloWorld.class nella cartella “saluti” del file system, dovremo creare la cartella "saluti", perch*perchè è qui che vogliamo conservare il file insieme ad altri dello stesso argomento e crearci la nostra collezione di classi.
 
EDovremo quicrearla noi la directory saluti ma si pongono degli interrogativi: dove montare la cartella saluti? A che livello del file System? Ricordiamoci che dopo deve essere anche ritovata e occorre sapere non solo il suo nome ma anche dov'è.
La directory saluti si può creare con l'opzione "-d" di "javac", e sarà creata dallo stesso compilatore, oppure dovremo crearla noi.
E qui si pongono degli interrogativi: dove montare la cartella saluti? A che livello del file System?
 
Entra in gioco un percorso parziale che comincia dalla root e si interrompe al livello superiore più vicino alla directory del package, il percorso a monte della cartella “saluti”: questo percorso è importante se vogliamo ritrovare poi le nostre classi.
 
Noi La compiliamoJVM, inserendoper leriutilizzare classie nelleritrovare directoryle del packageclassi, conpur l'opzioneconoscendone -d di javac oppure "a manoni", e la JVM, per riutilizzarle e ritrovarle, puril conoscendolenome non sa dove sono montate. La JVM sa che la classe HelloWorld è nella cartella “saluti” ma non sa dove è questa, sà mezzo percorso, quello del package, l'ultima parte dell'indirizzo assoluto. La prima parte dell'indirizzo dobbiamodeve specificarlo.essere Oragià poniamoesistente chesul siadisco /home/giovanni/mieclassi/,fisso e questodobbiamo dovràspecificarlo essereal settatocompilatore. nel CLASSPATH, ora non serve perchè archiviamo le classi, occorrerà dopo per riutilizzarle e dopo ne parliamo.
 
Ora poniamo che sia /home/giovanni/mieclassi/, questo indirizzo lo dobbiamo specificare quando compiliamo le classi da archiviare e si fà con l'opzione "-d" di "javac" seguito dall classpath, in questo modo:
Se si compila a riga di comando, per crearsi propri pacchetti di classi, compilare il file sorgente, opzionalmente, in questi modi:
 
#Il file sorgente è nella dir corrente. Con l'opzione “-d” del comando javac. Così: javac -d /home/giovanni/mieclassi/ Helloworld.java.<br/>In questo modo è il compilatore che farà tutto: creerà le directory di storage delle classi, così come indicato nella parola chiave package del file sorgente HelloWorld, nel livello file system indicato dall'opzione “-d”. Il compilatore creerà in automatico /home/giovanni/mieclassi/saluti e lì metterà HelloWorld.class. Non dobbiamo fare altro.
l'indirizzo /home/giovanni/mieclassi/ deve già esistere realmente sul fyle system
#Il file sorgente è nella dir corrente. Compilarlo normalmente e metterlo a manoni nella cartella package che deve essere creata. in questo modo; javac HelloWorld per primo, dopo prendere HelloWorld.class e spostarlo nella cartella saluti che dobbiamo creato appena prima. la cartella saluti sarà a sua volta in /home/giovanni/mieclassi/.
 
#La dir del package è la directory corrente e all'interno vi è anche il file sorgente. Complilarlo con javac e quindi sarà creato il file HelloWorld.class in loco. La directory corrente deve essere la medesima della directory del package.
<source lang=java>
javac -d /home/giovanni/mieclassi/ HelloWorld.java
</source>
 
Il compilatore leggerà nell'istruzione "package" il nome "saluti", creerà la directory e la accoderà. Automaticamente ci sarà /home/giovanni/mieclassi/saluti e lì metterà HelloWorld.class.
Non dobbiamo fare altro.
 
Questo indirizzo dovrà essere specificato anche nel CLASSPATH al momento della lettura delle classi, cosicchè sia quando compiliamo un sorgente archiviando le classi e sia quando lo compiliamo riusando le classi il compilatore si riferirà alla medesima locazione di storage delle classi.
 
Il package può avere anche più directory. Nel caso produciamo molte classi esse infatti andranno stipate in cartelle diverse ed il nome della cartella, chiaramente, indicherà il contenuto.