JAVA\Lezione
3 |
Codice della prima applet
Il nostro viaggio nel mondo della sintassi Java comincia con l'analisi di una semplice applet (vedi il listato 1.2) che visualizza la scritta "Ancora Java!":
Listato 1.2 – La nostra prima applet
import java.awt.*;
import java.applet.*;
public class AncoraJava extends Applet {
Font f= new Font("TimesRoman",Font.BOLD,20);
public void paint(Graphics g) {
g.setFont(f);
g.setColor(Color.red);
g.drawString("Ancora Java!",5, 40);
}
}
Figura 3.1– risultato della prima applet
Da questa applet semplicissima possiamo già ricavare molte informazioni sul linguaggio Java e sulla sua sintassi.
Analisi della prima applet
In questa parte si fa riferimento al listato 1.2.
Gli import
Ogni applet è composta da una serie di oggetti: variabili, bottoni, caselle di testo, etichette.
In teoria, noi dovremmo ogni volta definire ciascuna di queste cose (per esempio del pulsante dovremmo dire le dimensioni, il colore, la sua etichetta, etc.). In Java vengono in nostro aiuto le classi e i package, una specie di magazzini pronti all’uso che contengono le informazioni per creare le parti necessarie a strutturare l’applet.
Una certa classe, ad esempio, contiene l'idea generale di Bottone; noi, richiamandola nell’applet e creando un bottone specifico con sue caratteristiche, definiamo un'istanza della classe Bottone (un oggetto), cioè una sua manifestazione concreta.
Attraverso il meccanismo di importazione, lo sviluppatore può avvalersi di un’estesa libreria di classi(o package, cioè un insieme di classi che hanno funzioni affini) progettate dagli sviluppatori di Java. La parola chiave import, seguita dal nome della classe o del package, permette di utilizzare liberamente quella classe (o insieme di classi) all’interno della propria applet. Nel nostro caso, ogni applet inizia con le seguenti righe di codice:
import java.awt.*;
import java.applet.*;
Il package java.awt.* permette di gestire le operazioni con le finestre e con la grafica, il package java.applet.* contiene le classi specifiche per l’applet. L'asterisco alla fine di ognuno dei due import sta a significare che noi importiamo tutto il contenuto di tale package (potremmo importarne solo una parte, ad esempio: import java.awt.Graphics; se fossimo interessati solo ai comandi grafici).
La parola-chiave extends
All'inizio dell’applet si deve specificare il tipo di classe (l’applet è una particolare classe) che stiamo creando (public class) e il nome dell’applet (generalmente con l'iniziale maiuscola). Si deve inoltre specificare che quello che stiamo programmando è effettivamente un’applet e non un'applicazione. Ciò viene fatto utilizzando la sintassi “extends Applet”che permette di specificare al compilatore che la nostra classe è una sottoclasse di java.applet.Applet, estende cioè la classe java.applet.Applet.
Nota 1 : il nome della classe deve corrispondere al nome del file .java. Quindi la nostra applet chiamata AncoraJava proviene dal file sorgente AncoraJava.java.
Nota 2 : Java è case sensitive, cioè riconosce le lettere minuscole dalle maiuscole. Quindi, le parole Java, java, jAva, etc. sono per il compilatore tutte diverse. Di conseguenza, bisogna fare molta attenzione, altrimenti verranno segnalati degli errori apparentemente inspiegabili in fase di compilazione!
Le parentesi {} e i punti e virgola
In Java le parentesi graffe { } delimitano un blocco di istruzioni: la parentesi aperta ‘{‘ si trova all'inizio del blocco e quella chiusa ‘}‘ alla fine. Le parentesi corrispondono al BEGIN-END del pascal o di altri linguaggi di programmazione. Nella nostra applet troviamo due livelli di parentesi a delimitare rispettivamente le istruzioni del programma principale (la classe AncoraJava) e quelle del metodo paint.
I punti e virgola in Java (come nella maggior parte dei linguaggi di programmazione) servono per separare le varie istruzioni da quelle che le seguono e precedono, come esemplificato qui sotto:
...
istruzione 1;
istruzione 2;
istruzione 3;
...
I metodi paint (Graphics g) e init()
I metodi sono blocchi di istruzioni che definiscono i comportamenti di una classe o di un oggetto.
Questi possono essere indipendenti o condizionati da variabili e anche di vario genere in base al loro scopo: possono calcolare un valore, come fa una funzione; oppure eseguire una serie di calcoli e operazioni, come ad esempio disegnare un cerchio in una certa posizione.
Nel nostro semplice esempio il metodo paint(Graphics g) si occupa di ridisegnare l'intero applet o alcune sue parti quando ciò si rende necessario.
Il metodo init() è il metodo di sistema che viene richiamato automaticamente quando l’applet viene lanciata e poi non viene più utilizzato; può esser quindi usato per definire alcune condizioni all’avvio dell’applet e per inizializzare variabili e oggetti. Non è presente nella prima applet che abbiamo appena visto in quanto non c’era bisogno di inizializzare nessuna variabile in particolare, ma vedremo come abbia un ruolo fondamentale in tutte le applet.