A partire da questa lezione cominciamo lo studio
del modo in cui Java ci permette di sviluppare applicazioni.
Per chi sviluppa software già da tempo, utilizzando uno dei linguaggi
classici, quali C, C++, Pascal e altri, il concetto
di applicazione non è nuovo.
Per applicazione si intende un programma eseguibile autonomamente.
Tralasciando i dettagli teorici, ci concentreremo sulle possibilità
che ci vengono offerte da Java per creare delle applicazioni che
girino su qualsiasi piattaforma.
Nel caso abbiate dimenticato quanto detto a proposito nella lezione
2, vi consiglio
di rileggerla per rinfrescare tutte quelle nozioni che adesso metteremo
in pratica.
Qualcuno di noi avrà provato, in passato, a
richiamare la macchina virtuale di Java, passandogli direttamente
come parametro il nome di una delle classi create nelle precedenti
lezioni, ottenendo un errore del tipo:
In class Automobile: void
main(String argv[]) is not defined
Ciò avviene perché linterprete Java presuppone che, se il
programma viene lanciato dalla riga di comando, si tratti di unapplicazione.
Unapplicazione, infatti, parte da un metodo particolare, chiamato
main(), e poiché la classe Automobile non possiede
tale metodo, linterprete non sa come comportarsi.
Per utilizzare questa classe possiamo:
1. creare unapplicazione o unapplet che ne faccia uso;
2. aggiungere un metodo main() alla classe stessa.
La segnatura del metodo main() ha sempre questa forma:
public static void main(String
arg[]) {
...
}
Infatti deve:
- essere pubblico, perché deve rendersi disponibile al mondo esterno
(in particolare allinterprete Java);
- essere un metodo di classe, perché deve essere usato senza prima
aver creato un oggetto;
- non restituire alcun valore.
Notiamo inoltre che esso accetta un parametro
particolare, il cui uso e significato vedremo in seguito.
Il corpo del metodo main() contiene il codice di avvio dellapplicazione,
che provvede allinizializzazione di variabili e alla creazione
di istanze delle classi usate.
Essendo inoltre un metodo di classe, la classe che lo contiene non
viene creata automaticamente quando si avvia lesecuzione,
per cui se si vuole trattare la classe come un oggetto, occorre
crearne esplicitamente unistanza allinterno di tale
metodo.
Aggiungiamo alla classe Automobile il seguente metodo
main() (solitamente viene aggiunto come ultimo metodo):
public static void main(String
arg[]) {
Automobile auto = new Automobile("Vera", "Carriola",
70, 15, 8, 70,
true, true);
System.out.println("La mia auto e' una " + auto.getMarcaModello());
}
Ricompiliamo la classe e mandiamola in esecuzione (ormai sappiamo
come fare).
Otterremo a video la seguente riga:
La mia auto e' una Vera
Carriola
Abbiamo così creato unapplicazione molto semplice, ma possiamo
sbizzarrirci ad utilizzare i metodi della classe per creare diverse
applicazioni.
Poiché lo abbiamo già visto diverse volte, è il caso di notare che
per stampare a video una stringa, si utilizza un metodo particolare,
println(), che accetta come parametro la stringa da stampare.
Questo metodo è invocato sulla variabile out, che è un attributo
statico della classe System fornita dal JDK stesso: ciò spiega
perché è possibile utilizzare tale metodo senza aver prima istanziato
un oggetto della classe System.
Unapplicazione Java può avere una sola classe, oppure, come
avviene nella maggior parte dei casi, essere composta da diverse
classi, delle quali vengono create e utilizzate una o più istanze
durante lesecuzione. E possibile creare tutte le classi
di cui si voglia disporre, senza limiti sul numero o la dimensione.
Tra tutte le classi che compongono lapplicazione,
solo quella davvio necessita di avere un metodo main();
tuttavia, se le classi ausiliarie includono dei propri metodi main(),
questi vengono ignorati quando il programma viene eseguito.
Una buona abitudine di programmazione è quella di corredare ogni
nuova classe di un metodo main(), che può essere impiegato
per testare la classe e per dare, a chi vuole usare la classe da
noi creata, un esempio di possibile utilizzo.
Adesso andate a riguardare il codice di esempio della lezione 3 e non
dovreste avere difficoltà a comprenderne il significato.
Alla prossima!
Torna all'indice Generale del corso di Corso di Java di Software Planet