|
JSem: 1.4 |
La struttura generale di un'applet (o di un programma) è la seguente: Certo alcune applets molto semplici (cf Hello World) non presentano tutte queste fasi. Variabili: A priori è intuittivamente chiaro cosa sia una variabile; attenzione però perchè le cose non sono così semplici. Una variabile è un spazio di memoria ("una scatola") nel quale si possono registrare dei dati (questi dati sono il valore della variabile). Non confondere la variabile con il suo valore! In Java, una variabile può essere sia un tipo primitivo (int, long, float, byte, short, double, char, boolean) sia un oggetto qualsiasi. Per dichiarare una variabile bisogna precisarne il tipo (o la classe). Per esempio la dichiarazione: n = 10; risulterà in un errore di compilazione ("undefined variable or class"); la dichiarazione giusta è: int n = 10; E' in questo senso che Java, contrariamente a Javascript, è un linguaggio fortemente tipato. La dichiarazione: int n; va bene e dichiara una variabile n di tipo int senza nessun valore assegnato, per default viene assegnato il valore 0 a n. Per dichiarare più variabili si può anche usare la seguente istruzione: int n,m,p,q; che dichiara le variabili n, m, p, q di tipo int . Nello stesso modo si può dichiarare una variabile oggetto: String Str; dichiara una variabile Str di tipo String (abbiamo già visto che le stringhe sono degli oggetti). Attenzione! dichiarare una variabile oggetto NON crea l'oggetto! cioè dopo quella dichiarazione l'oggetto Str non esiste. Una variabile oggetto è solo un riferimento all'oggetto (uno spazio di memoria con un puntatore all'oggetto). Se dopo quella dichiarazione provate ad usare quella variabile (senza avere creato l'oggetto) verrà sollevata un'eccezione; facciamo un esempio semplice: import java.applet.*; import java.awt.*; public class HWo extends Applet{ String Str; public void paint(Graphics g){ g.drawString(Str, 10, 30); } } Se provate ad eseguire questa applet con l'appletviewer vedrete comparire un lungo messaggio la cui parte rilevante è: java.lang.IllegalArgumentException: String pointer is NULL! (se usate un browser, per esempio IE, in "visualizza" aprite la console Java e vedrete un messaggio analogo). Infatti il valore di default di una variabile oggetto è null, come già detto la variabile non è l'oggetto ma una referenza, un puntatore e questo puntatore non può essere null (lo stesso fenomeno è la causa di una NullPointerException). Invece il seguente codice: import java.applet.*; import java.awt.*; public class HWo extends Applet{ String Str = new String(); public void paint(Graphics g){ g.drawString(Str, 10, 30); } } non solleva eccezioni. La differenza tra i due codici è che nel secondo abbiamo creato l'oggetto con l'istruzione new String();. In generale, per creare un oggetto della classe, diciamo, MiaClasse, si usa l'operatore new: MiaClasse mioOggetto = new MiaClasse(); questa istruzione crea un'istanza della classe MiaClasse (un oggetto è un'istanza di una classe), la struttura della dichiarazione è : tipo (primitivo, interfaccia o classe) qui: MiaClasse; nome della variabile, qui: mioOggetto seguito da = e l'operatore new. I tipi primitivi, che non sono oggetti, non hanno bisogno dell'operatore new. L'operatore new alloca dinamicamente (cioè in fase di esecuzione) della memoria per un oggetto e restituisce un riferimento ad esso, mentre la dichiarazione: String Str; dichiara la variabile Str, cioè un riferimento di un oggetto String, ma a questo punto il valore è null, cioè Str non punta a un vero e proprio oggetto. Invece la dichiarazione: Str = new String(); alloca la memoria per un vero e proprio oggetto String e assegna un riferimento ad esso a Str; Str contiene l'indirizzo di memoria dell'oggetto String (cioè dei vari dati che compogono l'oggetto). Adesso che abbiamo visto come dichiarare le variabili, diciamo due parole
su come usare queste variabili. |
next content previous