Java/Classi e oggetti: differenze tra le versioni

m
questa parte va un po' tutta risistemata...
m (questa parte va un po' tutta risistemata...)
Per archiviare la classe "HelloWorld". che abbiamo visto prima, in un package di nome "saluti" dobbiamo scrivere:
<source lang=java>package saluti;</source>
 
 
I package hanno un sistema di nomi strutturato.
 
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* è qui che vogliamo conservare il file insieme ad altri dello stesso argomento e crearci la nostra collezione di classi.
I nomi del package devono indicare nomi di cartelle presenti sul disco fisso.
Facciamo un esempio: si vuole archiviare il file helloWorld.class nella cartella “saluti” del file system.
Dovremo quindi creare la cartella "saluti" perchè è quì che vogliamo conservare il file insieme ad altri dello stesso argomento e crearci la nostra collezione di classi.
 
La directory saluti si può creare con l'opzione "-d" di "javac", e sarà creata dallo stesso compilatore, oppure dovremo crearla noi.
E quì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.
 
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 compiliamo, inserendo le classi nelle directory del package, con l'opzione -d di javac oppure "a manoni", e la JVM, per riutilizzarle e ritrovarle, pur conoscendole 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 dobbiamo specificarlo. Ora poniamo che sia /home/giovanni/mieclassi/, e questo dovrà essere settato nel CLASSPATH, ora non serve perchè archiviamo le classi, occorrerà dopo per riutilizzarle e dopo ne parliamo.
 
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.
 
1.#Il file sorgente è nella dir corrente. ConCompilarlo l'opzione normalmente “-d”e metterlo dela comandomanoni javacnella cartella package che deve essere creata. Così:in questo modo; javac -dHelloWorld 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/ Helloworld.java
3.#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.
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.
 
2.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/.
 
3.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.
 
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.
 
 
Con più directory ambia di poco: metteremo un punto “.” tra una directory e l'altra sul codice dopo l'istruzione package. La jvm cambierà automaticamente il punto nel carattere separatore del sistema operativo usato e la classe dovrà essere archiviata nell'ultima sottodirectory.
 
Faremo questi file:
<source lang=java>
 
package saluti.inghilterra;
public class HelloWorld {
public void faisaluto () {
System.out.println("Hello, world!");
}
}
</source>
e
<source lang=java>
package saluti.francia;
public class HelloWorld {
public void faisaluto ()class HelloWorld {
public void faisaluto () {
System.out.println("Bonjour, monde!");
}
}
}
</source>
e
<source lang=java>
package saluti.italia;
public class HelloWorld {
public void faisaluto ()class HelloWorld {
public void faisaluto () {
System.out.println("Ciao, mondo!");
}
}
}
</source>
 
Sul disco preparerò la directory “saluti” con all'interno le cartelle “inghilterra”, “francia”, “italia”, tutte e tre queste cartelle sono allo stesso livello sottodirectory di saluti.
 
Un'altra cartella ancora.
 
Se archivio con un package così “packages saluti.italia.dialetto” allora dovrà esserci la cartella dialetto come sottodirectory della cartella italia. All'interno di dialetto dovranno esserci i file corrispondenti dei saluti italiani in dialetto, ognuno con un diverso nome.
I file con nomi uguali “Helloworld.class” sono stati messi in directory separate e i file dal nome diverso nella medesima directory. Tutti sono comunque individuabili e riprendibili.
 
L' istruzione <source lang=java>package nomedelpackage;</source> è facoltativa, è possibile non metterla: se queste non c'è, il compilatore inserisce la classe in un package di default.
 
Se non vi è l'istruzione, il compilatore inserisce la classe in un package di default.
I files del package di default saranno inseriti dalla JVM nella radice del percorso del CLASSPATH.: da questo stesso posto verranno lette le classi compilate senza l'istruzione package.
Da questo stesso posto verranno lette le classi compilate senza l'istruzione package.
 
Vediamo come riusare le nostre classi.
8 469

contributi