Prefazione
Benvenuti nel mondo di Java! Alla Deitel & Associates, scriviamo libri di testo per corsi di
programmazione di livello universitario e lavoriamo molto per mantenere i nostri libri aggiornati. Questo libro, Java. Fondamenti di programmazione e il suo complemento, Java.
Tecniche avanzate di programmazione, possiedono tutto quanto è richiesto da professori e
studenti per un’esperienza di apprendimento del linguaggio Java che sia informativa, interessante, stimolante e divertente. Questo libro è aggiornato all’ultima versione di Java, ovvero
Java 2 Platform, Standard Edition (J2SE), versione 1.4.1, e all’ultima versione del linguaggio
UML (Unified Modeling Language) per la progettazione orientata agli oggetti. Rispetto all’edizione precedente, abbiamo aggiornato e messo a punto il testo, la strategia didattica, lo
stile del codice e aggiunto, tra l’altro, una trattazione sostanziosa della metodologia di sviluppo orientata agli oggetti con il linguaggio UML e una presentazione di parecchi design pattern
(ovvero, strategie di progettazione del software) utilizzati dai programmatori esperti. Più
avanti nella prefazione, troverete una panoramica del libro, che aiuta i docenti, gli studenti e
i professionisti a rendersi conto di quanto il testo copra il linguaggio Java e la progettazione
orientata agli oggetti con il linguaggio UML.
Che siate un docente, uno studente, un programmatore professionista o principiante,
questo libro ha molto da offrirvi. Java è un linguaggio di programmazione per sviluppare
applicazioni informatiche industriali per dispositivi che vanno dai telefoni cellulari e dai
PDA fino ai più grandi server aziendali. Abbiamo controllato attentamente il nostro testo
rispetto alla Specifica del linguaggio Java (disponibile sul sito Web java.sun.com/docs/
books/jls/index.html). Quindi, i programmi che creerete studiando questo testo dovrebbero funzionare con ogni piattaforma Java compatibile con J2SE 1.4.1.
Incluso nel testo, troverete un CD che contiene il J2SE 1.4.1 Software Development Kit
(J2SDK) di Sun Microsystems e l’ambiente integrato di sviluppo Sun ONE Studio 4 (Community
Edition). Se avete bisogno di informazioni per iniziare a utilizzare questi prodotti, consultate
per prima cosa la documentazione fornita nel CD-ROM, ed eventualmente il sito Web degli
autori www.deitel.com/.
Oltre ai commenti che ci sono giunti dalle revisioni dell’edizione precedente, abbiamo
integrato nel testo finale i commenti di 44 noti professionisti del mondo accademico e dell’industria, che vengono elencati nei ringraziamenti al termine. Concluderemo questa prefazione con informazioni sugli autori e sulla Deitel & Associates, Inc.
Il nostro approccio didattico
Questo libro contiene un’ampia varietà di esempi, esercizi e progetti che prendono spunto da
molte situazioni, e che offrono agli studenti la possibilità di risolvere problemi reali. Il libro
prende in esame i principi della progettazione del software, insistendo sull’importanza della
chiarezza dei programmi ed evitando l’uso di terminologia complessa a favore di esempi
chiari e diretti, il cui codice è stato testato sulle piattaforme Java più diffuse.
X
PREFAZIONE
Imparare Java usando l’approccio LIVE-CODE™
Il libro presenta una grande quantità di esempi di codice Java. Ogni nuovo argomento viene
presentato nell’ambito di un programma Java completo e funzionante, seguito sempre da una
o più finestre che mostrano l’input/output del programma in questione. Viene quindi usato
il linguaggio di programmazione per insegnare il linguaggio di programmazione, e la lettura di
questi programmi offre un’esperienza molto simile alla loro scrittura ed esecuzione reale su di
un computer. Il codice sorgente di tutti i programmi si trova sia sul CD che accompagna il
libro, che sul sito www.apogeonline.com/libri/02096/allegati/.
Programmazione in Java con applicazioni e Swing dal capitolo due!
A partire dal capitolo due, ci immergiamo da subito nella programmazione di applicazioni
con i componenti GUI Swing. In questo modo, gli studenti possono iniziare presto a vedere
dei risultati concreti, eseguendo programmi di ogni tipo attraverso le librerie per la grafica,
l’animazione, il multimedia, l’audio, le basi di dati, e l’accesso alla rete. Gli studenti possono
così implementare da subito dei progetti, e sono di solito più creativi e produttivi degli
studenti che seguono analoghi corsi di C e C++.
Accesso al World Wide Web
Tutto il codice presente nel libro si trova anche in Internet, all’indirizzo www.apogeonline.com/
Il nostro consiglio è quello di scaricare tutto il codice, eseguendo
poi ogni singolo programma via via che appare nel testo. Potete anche modificare il codice
degli esempi e vedere cosa succede, e imparare così il linguaggio programmando.
libri/02096/allegati/.
Obiettivi
Ogni capitolo inizia con la presentazione degli Obiettivi. Gli studenti possono così sapere in
anticipo ciò che andranno ad apprendere e, alla fine della lettura del capitolo, potranno
verificare se hanno raggiunto o meno questi obiettivi.
Migliaia di righe di codice in oltre cento programmi di esempio
Le funzionalità di Java vengono presentate nell’ambito di programmi Java completi e funzionanti. Ogni programma è seguito dalle immagini degli output che vengono prodotti, così
che gli studenti possano assicurarsi della correttezza dei risultati. I programmi presentati
vanno da poche linee di codice a esempi composti da varie centinaia di righe di codice.
Centinaia di illustrazioni e figure
Il libro offre un’ampia varietà di grafici, immagini e output di programmi. Abbiamo convertito tutti i diagrammi di flusso in diagrammi di attività UML. Usiamo anche diagrammi di
classe UML per modellare le relazioni tra classi che incontriamo nel testo.
Centinaia di suggerimenti per il programmatore
Il libro offre molti suggerimenti riguardanti la programmazione per aiutare gli studenti a
concentrarsi sugli aspetti più importanti dello sviluppo di programmi. Questi consigli vengono forniti attraverso le sezioni chiamate Buona abitudine, Errore tipico, Collaudo e messa a
punto, Look-and-Feel, Obiettivo efficienza, Obiettivo portabilità e Ingegneria del software.
PREFAZIONE
XI
Buona abitudine
All’interno delle sezioni Buona abitudine vengono presentate delle tecniche per la scrittura di programmi chiari, comprensibili e più facilmente documentabili.
Errore tipico
Tutti gli studenti che affrontano per la prima volta un nuovo linguaggio tendono a
commettere frequentemente gli stessi errori. Le sezioni Errore tipico aiutano gli studenti a evitare di commettere questi comuni errori.
Collaudo e messa a punto
Queste sezioni forniscono consigli circa le attività di test e correzione degli errori dei
programmi Java, anche a livello preventivo.
Look-and-Feel
Queste sezioni forniscono consigli circa le convenzioni da usare per le interfacce utente
grafiche, aiutando lo studente a progettare le proprie interfacce utente grafiche in
conformità con le convenzioni usate nell’industria.
Obiettivo efficienza
In base alla nostra esperienza, insegnare agli studenti come scrivere programmi chiari
e comprensibili deve costituire l’obiettivo più importante di qualsiasi corso di programmazione. Gli studenti, però, vogliono normalmente imparare a scrivere programmi che vengano eseguiti in modo veloce, che utilizzino poca memoria, che richiedano
una minima quantità di comandi e che offrano prestazioni eccellenti. Le sezioni
Obiettivo efficienza offrono suggerimenti su come migliorare le prestazioni dei propri programmi.
Obiettivo portabilità
Alcuni programmatori pensano che, implementando un’applicazione Java, questa sia
immediatamente portabile su tutte le piattaforme Java; sfortunatamente, non è sempre
così. Le sezioni Obiettivo portabilità aiutano gli studenti a scrivere codice realmente
portabile, fornendo inoltre informazioni su come Java sia in grado di raggiungere
questo elevato livello di portabilità.
Ingegneria del software
La programmazione orientata agli oggetti implica una totale rivisitazione del modo
in cui vengono costruiti i sistemi software. Java è un linguaggio molto efficace nell’ambito della progettazione del software, e le sezioni Ingegneria del software prendono in esame gli aspetti architetturali e progettuali che influiscono sulla realizzazione
di sistemi software, specialmente nel caso di sistemi su vasta scala. Molte di queste
informazioni saranno utili agli studenti nei corsi più avanzati, oltre che nel mondo
del lavoro.
XII
PREFAZIONE
Centinaia di esercizi di autovalutazione con risposte
Il libro propone molti esercizi corredati di risposte, così che gli studenti possano prepararsi
alle esercitazioni vere e proprie. Gli studenti dovrebbero essere incoraggiati a svolgere tutti
questi esercizi di autovalutazione.
Centinaia di esercizi
Ogni capitolo si conclude con un insieme di esercizi di vario tipo, che permettono agli insegnanti di adattare le proprie lezioni alle esigenze particolari di ogni classe. Gli esercizi verificano l’apprendimento dei concetti e dei termini più importanti, chiedono agli studenti di
scrivere singole istruzioni Java, porzioni di classi e metodi Java, oppure metodi, classi, applet
e applicazioni Java complete.
Software incluso con questo libro
Ci sono parecchi strumenti per lo sviluppo di programmi Java in vendita. Comunque, non
avete bisogno di comprare nulla per iniziare a programmare in Java. Abbiamo scritto questo
libro usando solo il Java 2 Standard Edition Software Development Kit (J2SDK) versione 1.4.1,
che è incluso nel CD che accompagna questo libro. La versione corrente del J2SDK può
essere scaricata dal sito Web di Sun dedicato a Java java.sun.com/j2se. Questo sito vi
permette anche di scaricare la documentazione relativa.
Con la collaborazione di Sun, abbiamo incluso nel CD anche un potente ambiente di
sviluppo integrato, chiamato Sun ONE Studio 4, Community Edition, scritto in Java e comprendente un sistema visuale per la progettazione di interfacce grafiche, un editor di codice,
un compilatore, un debugger visuale, e altro ancora. Il J2SDK deve essere installato prima di
installare Sun ONE Studio 4, Community Edition. Per ulteriori informazioni riguardo all’utilizzo di questi programmi software, vi consigliamo di leggere la documentazione introduttiva
del CD-ROM, oppure di visitare il nostro sito Web www.deitel.com.
Il CD contiene inoltre tutti gli esempi del libro (compresa l’implementazione del caso di
studio sull’ascensore) e una pagina HTML con i collegamenti ai siti Web di Deitel, Inc. Se
avete accesso a Internet, questa pagina Web può essere caricata nel vostro browser per accedere rapidamente a tutti questi siti.
Una panoramica del libro
In questa sezione, vengono presentati i vari capitoli che compongono questo libro.
Capitolo 1: Introduzione ai computer, a Internet e al Web
Il capitolo 1 discute che cosa sono i computer, come funzionano e come vengono programmati. Viene fornita una breve storia dello sviluppo dei linguaggi di programmazione dai
linguaggi macchina, ai linguaggi assembly e ai linguaggi di alto livello, oltre alle origini del
linguaggio Java. Viene inoltre offerta un’introduzione a un tipico ambiente di programmazione Java, alla tecnologia degli oggetti, al linguaggio UML e ai design pattern.
PREFAZIONE
XIII
Capitolo 2: Introduzione alle applicazioni Java
Nel capitolo 2, vengono presentate le prime applicazioni Java. Il capitolo introduce i principianti ai concetti e costrutti di base della programmazione. I programmi in questo capitolo
illustrano come visualizzare delle informazioni sullo schermo e ricevere informazioni da parte
dell’utente attraverso la tastiera, anche attraverso l’uso di interfacce utente grafiche. Il capitolo
2 tratta anche le decisioni e le operazioni aritmetiche.
Capitolo 3: Introduzione alle applet Java
Nel capitolo 3, vengono presentate le applet, che sono programmi Java progettati per essere
trasportati attraverso Internet e eseguiti all’interno di browser Web (come Netscape Navigator
e Microsoft Internet Explorer). Il capitolo mostra molte delle applet di esempio fornite con il
J2SDK. Poi, propone delle applet Java che riprendono alcuni degli esempi del capitolo 2, per
mostrare la differenza tra i due diversi tipi di programmi.
Capitolo 4: Le istruzioni di controllo: Parte 1
Nel capitolo 4, viene preso in esame il processo di sviluppo dei programmi. Il capitolo mostra
come sia possibile, partendo dalla specifica di un problema, sviluppare un programma Java
perfettamente funzionante, compreso lo sviluppo di passi intermedi in pseudocodice. Il capitolo introduce alcuni dei tipi di dati primitivi più importanti e alcune semplici istruzioni di
controllo che permettono al programma di prendere delle decisioni (if e if...else) ed
eseguire delle ripetizioni (while). Esamineremo la ripetizione controllata da un contatore e
la ripetizione controllata da un valore sentinella, e introdurremo gli operatori per l’incremento, il decremento e l’assegnazione. Il capitolo usa dei semplici diagrammi di attività UML per
mostrare il flusso del controllo attraverso ognuna delle istruzioni di controllo.
Capitolo 5: Le istruzioni di controllo: Parte 2
Il capitolo 5 continua la discussione delle istruzioni di controllo in Java con esempi delle
istruzioni for, do...while, switch, break e continue. Il capitolo contiene inoltre una
discussione degli operatori logici in Java.
Capitolo 6: I metodi
Nel capitolo 6, vengono presi in esame più attentamente gli oggetti. Gli oggetti contengono
dei dati (normalmente chiamati campi) e delle unità eseguibili chiamate metodi. Parleremo
dettagliatamente dei metodi e dei metodi ricorsivi (ovvero i metodi che chiamano sé stessi). Le
tecniche presentate nel capitolo 6 sono essenziali per la produzione di programmi strutturati
in modo adeguato. Il sovraccaricamento di metodi (cioè, permettere a più metodi di avere lo
stesso nome ma “firme” diverse) viene motivato e spiegato chiaramente. Inoltre, vengono
introdotti gli eventi e la loro gestione.
Capitolo 7: Gli array
Il capitolo 7 prende in esame l’elaborazione dei dati all’interno di elenchi e tabelle di valori
chiamate array. In Java, gli array sono oggetti. Il capitolo presenta numerosi esempi sia di
array monodimensionali, che multidimensionali. Gli esempi del capitolo prendono in considerazione manipolazioni comuni di array, la stampa di istogrammi, il passaggio di array a
XIV
PREFAZIONE
metodi e un’introduzione all’analisi dei dati (con semplici elaborazioni statistiche). Una delle
caratteristiche del capitolo è la discussione di tecniche elementari per l’ordinamento e la
ricerca, la presentazione della ricerca binaria e dei suoi vantaggi nei confronti della ricerca
lineare.
Capitolo 8: La programmazione basata su oggetti
Il capitolo 8 si concentra sul concetto di classe come implementazione di nuovi tipi di dati
astratti. Il capitolo presenta i concetti e la terminologia delle classi e degli oggetti, discutendo
l’implementazione delle classi, l’accesso ai membri delle classi, l’occultamento delle informazioni mediante modificatori di accesso, la separazione dell’interfaccia dall’implementazione,
l’uso di metodi per l’accesso e l’inizializzazione di oggetti con i costruttori. Inoltre, il capitolo
discute la dichiarazione e l’uso di costanti, la composizione, il riferimento this, i membri
static di classe, e esempi di tipi di dati astratti popolari come le pile e le code. Infine, viene
introdotta la dichiarazione package e viene discusso come creare package riusabili.
Capitolo 9: La programmazione orientata agli oggetti: ereditarietà
Il capitolo 9 introduce una delle caratteristiche fondamentali dei linguaggi orientati agli oggetti, ovvero l’ereditarietà, che è una forma di riutilizzo del software in cui nuove classi vengono sviluppate rapidamente e facilmente assorbendo le caratteristiche di classi esistenti, e
aggiungendo nuove funzionalità appropriate. Il capitolo discute le nozioni di superclasse e
sottoclasse, il modificatore di accesso protected, le superclassi dirette e indirette, l’uso dei
costruttori nelle superclassi e nelle sottoclassi, e l’ingegneria del software con l’ereditarietà.
Capitolo 10: La programmazione orientata agli oggetti: polimorfismo
Il capitolo 10 introduce un’altra caratteristica fondamentali dei linguaggi orientati agli oggetti, ovvero il polimorfismo, uno stile di programmazione che viene tipicamente usato per
implementare i componenti per le interfacce utente, come la libreria Swing di Java. Questo
capitolo distingue tra classi astratte e classi concrete, e introduce le interfacce (ovvero, lo
strumento Java per implementare l’ereditarietà multipla). Viene inoltre presentato il concetto
di classe interna, e viene mostrata la prima applicazione basata su interfaccia utente grafica, in
modo da introdurre la gestione degli eventi. Il capitolo contiene tre casi di studio sul
polimorfismo: un sistema per il calcolo delle paghe e una gerarchia di figure geometriche
implementata usando una superclasse astratta e un’interfaccia.
Capitolo 11: I costruttori della classe String
Il capitolo 11 prende in esame l’elaborazione di parole, frasi, caratteri e gruppi di caratteri.
Vengono presentate le classi String, StringBuffer, Character e StringTokenizer. Inoltre, presentiamo le librerie di classi Java per le espressioni regolari (introdotte nella versione
1.4.1), che permettono ai programmatori di cercare sequenze di caratteri all’interno di stringhe che corrispondono a delle combinazioni precise.
Aspetti più avanzati del linguaggio Java vengono presentati nel volume Tecniche avanzate
di programmazione, naturale complemento al testo introduttivo che state leggendo.
PREFAZIONE
XV
Ringraziamenti
Uno dei momenti più piacevoli, durante la realizzazione di un libro, è il riconoscimento del
lavoro di tutte le persone il cui nome non appare sulla copertina, ma che sono state di importanza fondamentale per la buona riuscita dell’opera.
Parecchie persone alla Deitel & Associates, Inc. hanno dedicato molte ore a questo progetto. Vogliamo ringraziare in particolare gli sforzi dei nostri colleghi Tem Nieto, Sean Santry,
Su Zhang e Jeff Listfield.
•
•
•
•
Tem Nieto si è laureato al Massachusetts Institute of Technology. Tem insegna XML, Java,
Internet e Web, C, C++ e Visual Basic e lavora con noi alla scrittura di libri di testo, allo
sviluppo dei corsi e del materiale multimediale. È coautore di diversi libri di Deitel &
Associates, Inc.
Sean Santry, si è laureato al Boston College (Informatica e Filosofia) ed è coautore di diversi libri di Deitel & Associates, Inc. Tra l’altro, si è occupato del caso di studio facoltativo con UML.
Su Zhang si è laureata in informatica alla McGill University, e si è occupata di modellazione e simulazione, sistemi in tempo reale e tecnologie Java. È coautrice di diversi libri
di Deitel & Associates, Inc.
Jeff Listfield si è laureato in informatica a Harvard, e ha tenuto lezioni di grafica, reti e teoria
della computazione. Conosce i linguaggi C, C++, C#, Java, Perl e Lisp. È coautore di diversi
libri di Deitel & Associates, Inc.
Siamo stati fortunati a poter lavorare a questo progetto con i professionisti di Prentice
Hall, in particolare Petra Recter e il suo dirigente Marcia Horton, Direttore editoriale del
gruppo Prentice-Hall’s Engineering and Computer. Tom Manshrek ha svolto un lavoro prezioso come production manager. Jennifer Cappello ha gestito in maniera ottimale il processo
di revisione.
Dobbiamo anche ringraziare Tamara Newnam ([email protected]) che ha realizzato la grafica delle icone delle osservazioni di programmazione e la copertina della versione inglese.
Infine, vogliamo ricordare lo sforzo dei 70 revisori di questa edizione e della precedente:
Revisori di Sun Microsystems
Dibyendu Baksi (Sun Microsystems)
Konstantin Kladko (Sun Microsystems)
Doug Kohlert (Sun Microsystems)
Peter Jones (Sun Microsystems)
Paul Monday (Sun Microsystems)
Tomas Pavek (Sun Microsystems)
Brandon Taylor (Sun Microsystems)
Revisori accademici
Rekha Bhowmik (St. Cloud State University)
Clint Bickmore (Front Range Community College)
Brian Blake (Georgetown University)
PREFAZIONE
XVI
Ayad Boudiab (Georgia Perimiter College)
Chadi Boudiab (Georgia Perimiter College)
Michael Buckley (State University of New York-Buffalo)
James Chegwidden (Tarrant County College)
Deborah Coleman (Rochester Institute of Technology)
Don Francis Costello (University of Nebraska)
Balazs Csizmazia (University of Klagenfurt)
Tamara Dinev (Florida Atlantic University)
Sarah Fix (The Career Center High School)
Bill Freitas (The Lawrenceville School)
Thomas Graffte (Strayer University)
Balaji Janamanchi (Texas Tech University)
Charles Lake (Faulkner State Community College)
Brian Larson (Modesto Junior College)
Hong Lin (DeVry University)
David McKain (Lakota East High School)
Andy Novobilski (University of Tennessee-Chattanooga)
Richard Ord (University of California, San Diego)
Gavin Osborne (Saskatchewan Institute of Applied Sci.& Tech.)
Merrill Parker (Chattanooga State Technical Community College)
Donna Reese (Mississippi State University)
Craig Slinkman (University of Texas, Arlington)
Gidget Smith (Arkansas State University)
Ron Sones (James Madison University)
Mahendran Velauthapillai (Georgetown University)
Loran Walker (Lawrence Technological University)
Warren Wiltsie (Fairleigh Dickinson University)
Altri revisori dell’industria
Shishir Abhyanker (Accenture)
Sinan Alhir (indipendente)
Richard Bonneau (IONA Technologies)
Columbus Brown (IBM)
Carl Burnham (Southpoint)
Brian Cook (Zurich Insurance)
Jonathan Earl (indipendente)
Ron Felice (Omniware Development)
Karl Frank (TogetherSoft Corporation)
Kyle Gabhart (indipendente)
Johan Galle (E2S)
Mark Grand (ClickBlocks, LLC)
Ajay Gupta (American Airlines, Inc.)
Kevlin Henney (Curbralan, Ltd.)
Ethan Henry (Sitraka)
Anne Horton (AT&T Laboratories)
James Huddleston (indipendente)
Terrell Hull (Sun Certified Java Architect, Rational Qualified Practitioner)
PREFAZIONE
XVII
Sachin Korgaonkar (Idealake Technologies, Pvt. Ltd.)
Don Kostuch (You Can C Clearly Now)
Krishna Kunchithapadam (Oracle Corporation)
Paul McLachlan (Compuware Corporation)
Davyd Norris (Rational)
Bill O’Farrell (IBM)
Praveen Sadhu (Infodat Solutions, Inc.)
Cameron Skinner (Embarcadero Technologies/OMG)
Stephen Tockey (Construx Software/OMG)
Kim Topley (Keyboard Edge, Ltd.)
Sudhir Upadhyay (BEA Systems, Inc.)
John Varghese (UBS Warburg)
Bing Xue (Siemens)
Hadar Ziv (eBuilt, Inc.)
Queste persone hanno revisionato ogni aspetto del testo e fornito innumerevoli suggerimenti per migliorare l’accuratezza e la completezza della presentazione.
Abbiamo lavorato duramente per creare questo libro. Java è un potente linguaggio di
programmazione che vi aiuterà a scrivere programmi velocemente ed efficacemente. Se volete
mandarci dei commenti, critiche, correzioni e suggerimenti, mandateli a:
[email protected]
Vi risponderemo, e inseriremo le correzioni sul sito Web
www.deitel.com
Speriamo che vi divertiate a leggere questo libro quanto noi ci siamo divertiti a scriverlo!
Dr. Harvey M. Deitel
Paul J. Deitel
Gli autori
Harvey M. Deitel – Chief Excecutive Officer della Deitel & Associates, Inc. – si occupa di
informatica da oltre 40 anni e ha maturato una significativa esperienza accademica e aziendale.
È uno dei più affermati istruttori di informatica a livello mondiale. Ha conseguito la laurea in
scienze presso il Massachusetts Institute of Technology (MIT) e la laurea in filosofia presso
l’Università di Boston. Ha partecipato a progetti d’avanguardia dei sistemi operativi con
memoria virtuale presso l’IBM e il MIT, sviluppando quelle tecniche che oggi sono ampiamente implementate nei sistemi UNIX, Linux e Windows NT. Ha insegnato per 20 anni
nelle università ed è stato rettore della facoltà di informatica del Boston College, prima di
fondare la Deitel & Associates, Inc. con Paul J. Deitel. È autore e coautore di numerosi libri
e package multimediali e ne sta scrivendo altri. I testi di Harvey M. Deitel sono stati tradotti
e pubblicati in giapponese, cinese, russo, italiano, francese, spagnolo, coreano, polacco e
portoghese. Ha tenuto vari seminari internazionali per grandi aziende e organizzazioni governative e militari.
Paul J. Deitel – Executive Vice President della Deitel & Associates, Inc. – si è laureato
presso la Sloan School of Management del MIT dove ha studiato tecnologia dell’informazione. Con la Deitel & Associates ha realizzato dei corsi di addestramento su Java, C, C++,
XVIII
PREFAZIONE
Internet e il World Wide Web per clienti di primaria importanza, quali Compaq, Sun
Microsystems, White Sands Missile Range, Rogue Wave Software, Computervision, Stratus,
Fidelity, Cambridge Technology Partners, Boeing, Lucent Technologies, Adra Systems, Entergy,
CableData Systems, NASA (Kennedy Space Center), National Severe Storm Laboratory,
IBM e molte altre organizzazioni. Ha tenuto conferenze sui linguaggi C++ e Java per il Boston
Chapter dell’Association for Computing Machinery; ha insegnato Java via satellite grazie a
un’iniziativa congiunta fra Deitel & Associates, Prentice Hall e Technology Education Network.
Paul e suo padre Harvey M. Deitel sono autori di libri di informatica che hanno riscosso
grande successo in tutto il mondo.
Deitel & Associates, Inc.
Deitel & Associates, Inc. è una società di fama internazionale specializzata nell’addestramento aziendale e nella realizzazione di testi sui linguaggi di programmazione, Internet/World
Wide Web, e-business/e-commerce e tecnologie orientate agli oggetti. Deitel & Associates è
membro del World Wide Web Consortium (W3C). La società ha realizzato corsi introduttivi e
avanzati sui linguaggi Java, C++, Visual Basic .NET, C, C#, Perl, Python e XML, sulla programmazione di Internet e del World Wide Web, sulle applicazioni e-business/e-commerce e
sulle tecnologie orientate agli oggetti. I soci della Deitel & Associates, Inc. sono Harvey M.
Deitel e Paul J. Deitel. Fra i clienti della società figurano molte delle più importanti aziende
mondiali, enti governativi e delle forze armate USA e altre organizzazioni. Grazie alla collaborazione della società editrice Prentice Hall, la Deitel & Associates pubblica testi d’avanguardia sulla programmazione, libri per l’informatica professionale, corsi multimediali interattivi
su CD-ROM e corsi di addestramento sul Web. La Deitel & Associates e gli autori possono
essere contattati via e-mail al seguente indirizzo:
[email protected]
Per avere maggiori informazioni sulla Deitel & Associates e per consultare l’elenco aggiornato delle sue pubblicazioni e dei corsi di addestramento aziendale, visitate il sito Web:
www.deitel.com