Java/Package: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m →‎Archiviare le classi: snellisco un pochino
incollo testo da Java/Primo programma. Vedi talk page per la cronologia della pagina originaria.
Riga 1:
{{java/Prima parte}}
__TOC__
 
== Premessa ==
Un programma può essere considerato come un insieme di oggetti software che si scambiano messaggi e si assegnano a vicenda compiti diversi. Il modello che stabilisce la struttura interna e le modalità di utilizzo di questi oggetti software è chiamata ''classe''. La classe non è altro che il modello su cui viene creato un certo oggetto e ha lo scopo di definire quali messaggi tale oggetto rende effettivamente disponibili agli altri oggetti.
 
Il codice sorgente di un programma Java è costituito da un insieme di moduli, ognuno dei quali definisce una classe. Essi sono chiamati "unità di compilazione" (in inglese ''compilation unit''). La definizione esatta di "unità di compilazione" dipende dal sistema di sviluppo in uso. Ad esempio, è possibile salvare le unità di compilazione all'interno di un database.
 
Tuttavia, spesso, le unità di compilazione sono definite come dei comuni file di testo che risiedono in una apposita cartella e che hanno estensione <tt>.java</tt>.
 
Il codice sorgente si scrive in un editor di testo che supporti Unicode, o con degli IDE; ad esempio, rispettivamente, il "Blocco note" di Windows e "NetBeans".
 
== Il sorgente Java ==
=== Unità di compilazione ===
Le unità di compilazione sono organizzate in gruppi, chiamati ''[[Java/Package|packages]]''. Nel caso in cui esse siano dei file, i ''packages'' sono le cartelle. I packages sono organizzati gerarchicamente, e all'interno del codice Java questa gerarchia è stabilita tramite il simbolo punto: ad esempio, <tt>java.lang</tt> è un ''sottopackage'' del package <tt>java</tt>.
 
=== L'albero delle directory ===
Tutti i sorgenti Java che costituiscono un programma vengono tipicamente messi insieme al di sotto di un'unica cartella radice. La struttura delle cartelle deve riflettere la struttura dei ''package'' a cui le varie classi appartengono.
 
La cartella principale va passata al compilatore come parte del ''classpath''. In questo modo, si informa il compilatore che, nel leggere i sorgenti, esso deve calcolare i ''package'' partendo dalla cartella indicata. In particolare, il compilatore ''javac'' fornisce l'opzione <tt>-cp</tt> o <tt>-classpath</tt>.
 
''Esempio''. Si supponga di avere tutti i sorgenti Java nella cartella <tt>C:\Sorgenti\App1</tt>:
<pre>
javac -cp C:\Sorgenti\App1 *.java
</pre>
 
oppure, se ci si è spostati da prompt dei comandi sotto la cartella <tt>C:\Sorgenti\App1</tt>,
<pre>
javac -cp . *.java
</pre>
 
Il classpath andrà passato anche alla macchina virtuale per l'esecuzione; però, in tal caso, si dovrà indicare la cartella radice delle directory che contengono i file <tt>.class</tt> e non la cartella radice dei sorgenti (queste due cartelle possono essere diverse tra loro).
 
== Il formato di una unità di compilazione ==
Un'unità di compilazione è composta dalle seguenti sezioni, in questo ordine:
#indicazione del [[Java/Package|package]] cui appartiene la classe;
#sezione degli ''import'';
#definizione vera e propria della classe.
 
Uno stesso file può contenere più di una definizione di classe, ma in questo caso non più di una di esse può essere [[Java/Modificatori di accesso|public]]. Se ce ne è una <tt>public</tt>, allora questa deve coincidere con il nome del file.
 
== Archiviare le classi==