i
i
i
i
I
Prefazione
Prefazione alla prima edizione
Il volume che il lettore ha in mano è un libro di introduzione alla Programmazione con l’uso del
linguaggio Java. Si tratta di un testo destinato allo studio e non di una semplice raccolta di esempi
di programmi. Proprio da questa sua natura emerge il principale pregio del libro: l’ambizione cioè
di descrivere completamente e rigorosamente il linguaggio Java e il suo uso nella programmazione
di tipo algoritmico e applicativo, fino alla soglia dello sviluppo di sistemi di grandi dimensioni.
La scelta di Java non necessita di particolari commenti, essendo ormai uno dei linguaggi di più
ampia diffusione tanto in ambito accademico che nella pratica industriale. Da un punto di vista
didattico, Java consente di presentare – direttamente all’interno del linguaggio – alcuni concetti
fondamentali della programmazione moderna, quali l’approccio orientato agli oggetti, la gestione
strutturata delle eccezioni, l’analisi statica e i forti controlli sui tipi, la programmazione concorrente,
la verifica di correttezza. Il libro, che trae origine anche da una lunga esperienza “sul campo” degli
autori, presenta questi aspetti con il necessario rigore, senza penalizzare l’esposizione di quelli che
sono i fondamenti della programmazione. Nella prima parte del testo, infatti, è dedicato ampio
spazio ai concetti di grammatica, variabile, tipo, dichiarazione, espressione, comando e flusso di
controllo.
L’approccio che gli autori propongono al lettore prevede, da un lato, una trattazione di tipo
solidamente scientifico: lo studente non troverà in questo testo divagazioni eccessive con vignette o
storielle (benché non manchi l’occasionale concessione allo humor), ma regole e formule, sempre
bene illustrate. Dall’altro, il lettore più attento può contare di ottenere una conoscenza pratica
pressoché completa degli argomenti trattati: non solo saprà quello che funziona e come, ma anche
cosa non funziona e perché. Idealmente, a ogni dubbio riguardante la programmazione lo studente
sarà in grado di rispondere “si” o “no” consultando il testo, lasciando poco spazio al “forse, non ho
mai provato. . . ”.
Il rigore scientifico non va a scapito della pragmatica: le utilissime sezioni su Cosa può andare
male, che accompagnano tutti i capitoli trattando gli errori più comuni osservati nella pratica didattica su migliaia di allievi, e i circa 180 esercizi e mini-progetti proposti favoriscono il consolidamento
delle conoscenze acquisite, e incoraggiano ad applicarle immediatamente.
Con questo testo, gli autori forniscono un significativo contributo allo studio della programmazione, innovando nel solco di una consolidata tradizione di didattica di qualità.
Francesco Romani
Franco Turini
Pisa, Gennaio 2009
i
i
i
i
i
i
i
i
xiv
Prefazione
Nota degli autori
Il testo è organizzato in tre parti: dopo un’introduzione e alcune avvertenze pratiche, i capitoli dal
3 al 6 trattano i concetti di variabili, tipi, espressioni e comandi, e costituiscono quindi la parte basilare della presentazione del linguaggio. Vengono illustrati in questa prima parte tutti gli elementi
necessari per la programmazione di semplici algoritmi non ricorsivi (gli algoritmi ricorsivi sono poi
trattati, insieme ai metodi, nel Capitolo 8). In questi capitoli, gli oggetti sono descritti come dati
strutturati, su cui sono disponibili speciali operazioni.
I concetti di classe e oggetto sono poi approfonditi nei capitoli dal 7 all’11, in cui si discute del
loro ruolo tanto nell’analisi dei problemi, quanto nella progettazione di sistemi complessi. Questa
seconda parte fornisce tutti gli strumenti linguistici per lo sviluppo di classi e per la progettazione
di librerie di classi (in particolare, ereditarietà e interfacce).
Infine, la terza parte (Capitoli 12–15) descrive le ulteriori caratteristiche del linguaggio:
eccezioni, concorrenza, libreria di I/O, accesso alla rete.
Nel suo complesso, il libro descrive completamente il linguaggio Java (di cui l’Appendice
A fornisce l’intera grammatica, raccolta dai capitoli precedenti), ma solo alcune delle moltissime
classi della libreria del linguaggio. Per questo, il lettore è fortemente consigliato a consultare la
documentazione relativa alla libreria (i Javadoc), che in genere è fornita con gli ambienti di sviluppo. Allo studente raccomandiamo inoltre di dedicare un po’ di tempo agli esercizi e mini-progetti
proposti alla fine di ogni capitolo, molti dei quali non sono destinati tanto alla scrittura di codice,
quanto al consolidamento delle nozioni apprese (e, se necessario, forniscono un utile strumento di
auto-valutazione). Nell’uso come libro di testo, sarà opportuno associare allo studio teorico anche
delle esercitazioni condotte in laboratorio, onde garantire che al sapere si aggiunga un saper fare
che è parte integrante della pratica della programmazione.
Note alla seconda edizione
Questa seconda edizione del testo incorpora tutti gli aggiornamenti relativi alla versione 7 del linguaggio Java, nonché numerosi miglioramenti al testo, ulteriori esempi, trattazioni più precise e
approfondimenti di alcuni argomenti di maggiore sofisticazione, e qualche semplificazione della
trattazione sugli argomenti di applicazione più frequente.
Il risultato è un testo che, dopo i positivi riscontri della prima edizione, si propone di ampliare
la platea dei lettori, offrendo un buon servizio sia a chi cerchi nel testo una presentazione rapida
dei concetti più comuni, sia a chi necessiti invece dei dettagli più fini di qualche caratteristica poco
nota del linguaggio. La direzione intrapresa è tanto più rilevante, quanto maggiore è la complessità
delle nuove caratteristiche del linguaggio introdotte in Java 7. Queste nuove caratteristiche non
sono introdotte “a parte”, con una sovrapposizione di strati su strati che avrebbe poco senso (se non
solo in un’ottica storica), ma integrate direttamente e naturalmente nella trattazione principale. Al
lettore non viene presentato Java versione 6 con le estensioni di Java 7, ma il linguaggio Java 7 nella
sua completezza.
La seconda edizione è inoltre arricchita da una presentazione, pur elementare, dei principali
concetti utili per la programmazione di rete. Benché il testo non possa certo sostituire un manuale
specializzato sulle reti, diventa tuttavia possibile al programmatore Java scrivere programmi che
comunicano su rete, sfruttando diversi protocolli, e incorporare nelle proprie applicazioni l’utilizzo
di servizi remoti o il prelievo di pagine web.
Seguiremo le orme di autori di maggior fama, nel ringraziare i lettori della prima edizione per
la simpatia che ci hanno espresso, e i numerosi suggerimenti. È nostra speranza che questa edizione
rinnovata e aggiornata venga accolta, com’è nostra intenzione, come un modo per esprimere loro la
nostra sincera gratitudine.
i
i
i
i
i
i
i
i
xv
Sito web dedicato al libro
Il supporto on-line di questo testo è reperibile all’indirizzo
http://www.apogeonline.com/libri/9788850330690/scheda
dove è possibile scaricare il codice sorgente degli esempi presentati nel testo, e in particolare il
sorgente della classe jbook.util.Input utilizzata per l’input da tastiera.
A Daniela irrinunciabile compagna di vita; a Anita e Laura piccole aiutanti volenterose.
— Roberto Bruni
A Martha, Franca e Claudio, semplicemente... grazie! Per esistere, per avermi scelto, e
per la pazienza mostrata in questi mesi.
— Andrea Corradini
A’ miei maggiori: a quei colleghi che, tanti anni fa, hanno saputo trasmettere a me
giovane studente la passione che ora cerco di trasmettere ad altri. — Vincenzo Gervasi
i
i
i
i