Sommario
PREFAZIONE ..................................................................................................... IX
Il nostro approccio didattico ............................................................................................. ix
Software incluso con questo libro .................................................................................... xii
Una panoramica del libro ............................................................................................... xiii
Ringraziamenti ................................................................................................................ xv
Gli autori ....................................................................................................................... xvii
Deitel & Associates, Inc. .............................................................................................. xviii
CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB .......................... 1
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
1.10
1.11
1.12
1.13
1.14
1.15
Introduzione .......................................................................................................... 1
Che cos’è un computer? ......................................................................................... 3
La struttura del computer ...................................................................................... 3
L’evoluzione dei sistemi operativi .......................................................................... 4
I personal computer, i sistemi distribuiti e i sistemi client/server ........................... 5
I linguaggi macchina, assembly e di alto livello ...................................................... 5
La storia del linguaggio C++ .................................................................................. 7
La storia di Java ..................................................................................................... 8
Le librerie di classi Java .......................................................................................... 8
FORTRAN, COBOL, Pascal e Ada ...................................................................... 9
BASIC, Visual Basic, Visual C++, C# e .NET ..................................................... 10
Internet e il World Wide Web ............................................................................ 11
Gli elementi fondamentali di un tipico ambiente Java ......................................... 12
Alcune considerazioni generali su Java e su questo libro ...................................... 15
Pensare a oggetti: introduzione alla tecnologia degli oggetti
e a Unified Modeling Language ........................................................................... 17
1.16 Scoprire i design pattern: introduzione ................................................................ 21
Esercizi di autovalutazione ............................................................................................... 23
Risposte agli esercizi di autovalutazione ........................................................................... 24
Esercizi ............................................................................................................................ 24
CAPITOLO 2: INTRODUZIONE ALLE APPLICAZIONI JAVA ........................................... 27
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
Introduzione ........................................................................................................ 27
Il primo programma in Java: scrivere una riga di testo ......................................... 27
Modificare il nostro primo programma Java ........................................................ 34
Visualizzare il testo in una finestra di dialogo ...................................................... 36
Un’altra applicazione Java: somma di interi ......................................................... 40
La memoria ......................................................................................................... 46
Aritmetica ............................................................................................................ 47
Prendere decisioni: operatori di uguaglianza e relazionali .................................... 50
(Caso di studio facoltativo) Pensare a oggetti: esame del problema ...................... 57
IV
SOMMARIO
Esercizi di autovalutazione ............................................................................................... 61
Risposte agli esercizi di autovalutazione ........................................................................... 63
Esercizi ............................................................................................................................ 64
CAPITOLO 3: INTRODUZIONE ALLE APPLET JAVA .................................................... 69
3.1
3.2
3.3
3.4
3.5
3.6
3.7
Introduzione ........................................................................................................ 69
Applet dimostrative dal Java 2 Software Development Kit .................................. 70
Una semplice applet Java: disegnare una stringa .................................................. 76
Disegnare stringhe e linee .................................................................................... 84
Sommare numeri a virgola mobile ....................................................................... 86
Risorse riguardanti le applet disponibili sul Web ................................................. 93
(Caso di studio facoltativo) Pensare a oggetti:
identificare le classi nella specifica del problema .................................................. 94
Esercizi di autovalutazione ............................................................................................... 99
Risposte agli esercizi di autovalutazione ......................................................................... 100
Esercizi .......................................................................................................................... 100
CAPITOLO 4: LE ISTRUZIONI DI CONTROLLO: PARTE 1 ......................................... 103
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
Introduzione ...................................................................................................... 103
Algoritmi ........................................................................................................... 103
Pseudocodice ..................................................................................................... 104
Strutture di controllo ......................................................................................... 104
L’istruzione di selezione singola if ...................................................................... 107
L’istruzione di selezione if...else ......................................................................... 109
L’istruzione iterativa while ................................................................................. 113
Formulare algoritmi: caso di studio 1
(iterazione controllata da un contatore) ............................................................. 115
4.9
Formulare algoritmi con raffinamento top-down
per passi successivi: caso di studio 2
(iterazione controllata da un valore sentinella) ................................................... 119
4.10 Formulare algoritmi con raffinamento top-down
per passi successivi: caso di studio 3 (strutture di controllo annidate) ................ 128
4.11 Operatori di assegnamento composti ................................................................. 133
4.12 Operatori di incremento e decremento .............................................................. 133
4.13 Tipi primitivi ..................................................................................................... 136
4.14 (Caso di studio facoltativo) Pensare a oggetti:
identificare gli attributi delle classi ..................................................................... 138
Esercizi di autovalutazione ............................................................................................. 141
Risposte agli esercizi di autovalutazione ......................................................................... 142
Esercizi .......................................................................................................................... 143
CAPITOLO 5: LE ISTRUZIONI DI CONTROLLO: PARTE 2 ......................................... 151
5.1
5.2
5.3
5.4
5.5
Introduzione ...................................................................................................... 151
Fondamenti dell’iterazione controllata da un contatore ..................................... 151
L’istruzione iterativa for ..................................................................................... 153
Esempi di utilizzo dell’istruzione for .................................................................. 158
L’istruzione iterativa do...while .......................................................................... 163
SOMMARIO
V
5.6
5.7
5.8
5.9
5.10
5.11
L’istruzione di selezione multipla switch ............................................................ 166
Le istruzioni break e continue ............................................................................ 170
Istruzioni break e continue con etichetta ........................................................... 173
Operatori logici ................................................................................................. 176
La programmazione strutturata: riepilogo .......................................................... 182
(Caso di studio facoltativo) Pensare a oggetti:
identificare gli stati e le attività degli oggetti ...................................................... 187
Esercizi di autovalutazione ............................................................................................. 190
Risposte agli esercizi di autovalutazione ......................................................................... 191
Esercizi .......................................................................................................................... 193
CAPITOLO 6: I METODI ................................................................................... 199
6.1
6.2
6.3
6.4
6.5
6.6
6.7
6.8
6.9
6.10
6.11
6.12
6.13
6.14
6.15
Introduzione ...................................................................................................... 199
Moduli del programma in Java .......................................................................... 199
I metodi della classe Math ................................................................................. 201
Dichiarazioni di metodo .................................................................................... 203
Promozione degli argomenti .............................................................................. 210
I package di Java API ......................................................................................... 211
Generazione casuale di numeri .......................................................................... 213
Esempio: un gioco d’azzardo ............................................................................. 217
Visibilità delle dichiarazioni ............................................................................... 226
I metodi della classe JApplet .............................................................................. 229
I metodi sovraccarichi ........................................................................................ 231
La ricorsione ...................................................................................................... 233
Un esempio che usa la ricorsione: la serie di Fibonacci ...................................... 237
Ricorsione e iterazione ....................................................................................... 242
(Caso di studio facoltativo) Pensare a oggetti:
identificare le funzionalità delle classi ................................................................ 244
Esercizi di autovalutazione ............................................................................................. 247
Risposte agli esercizi di autovalutazione ......................................................................... 249
Esercizi .......................................................................................................................... 253
CAPITOLO 7: GLI ARRAY .................................................................................. 263
7.1
Introduzione ...................................................................................................... 263
7.2
Gli array ............................................................................................................ 263
7.3
Dichiarare e creare array .................................................................................... 265
7.4
Esempi che usano array ..................................................................................... 266
7.5
Riferimenti e parametri riferimento ................................................................... 277
7.6
Passare gli array ai metodi .................................................................................. 278
7.7
Ordinare gli array .............................................................................................. 290
7.8
Ricerca negli array: ricerca lineare e ricerca binaria ............................................ 283
7.9
Array multidimensionali .................................................................................... 291
7.10 (Caso di studio facoltativo) Pensare a oggetti: la collaborazione tra oggetti ....... 298
Esercizi di autovalutazione ............................................................................................. 302
Risposte agli esercizi di autovalutazione ......................................................................... 303
Esercizi .......................................................................................................................... 303
Esercizi sulla ricorsione .................................................................................................. 314
Sezione speciale: costruite un vostro computer .............................................................. 317
VI
SOMMARIO
CAPITOLO 8: LA PROGRAMMAZIONE BASATA SU OGGETTI ...................................... 325
8.1
8.2
8.3
8.4
8.5
8.6
8.7
8.8
8.9
8.10
8.11
8.12
8.13
8.14
8.15
8.16
8.17
Introduzione ...................................................................................................... 325
Implementare un tipo di dato astratto “orario” con una classe .......................... 327
Visibilità di una classe ........................................................................................ 334
Il controllo dell’accesso ai membri di una classe ................................................ 335
Riferirsi ai membri dell’oggetto corrente con this .............................................. 336
Inizializzare gli oggetti di una classe: i costruttori .............................................. 338
Uso dei costruttori sovraccarichi ........................................................................ 339
Uso dei metodi set e get ..................................................................................... 344
La composizione ................................................................................................ 352
Garbage collection ............................................................................................. 356
Membri static di una classe ................................................................................ 356
Variabili di istanza final ..................................................................................... 361
Creazione di package ......................................................................................... 364
Accesso al package ............................................................................................. 369
Riusabilità del software ...................................................................................... 371
Astrazione dei dati e incapsulamento ................................................................. 372
(Caso di studio facoltativo) Pensare a oggetti:
iniziare a programmare le classi per il simulatore di ascensore ........................... 374
Esercizi di autovalutazione ............................................................................................. 377
Risposte agli esercizi di autovalutazione ......................................................................... 378
Esercizi .......................................................................................................................... 378
CAPITOLO 9: LA PROGRAMMAZIONE ORIENTATA AGLI OGGETTI: EREDITARIETÀ .......... 383
9.1
Introduzione ...................................................................................................... 383
9.2
Superclassi e sottoclassi ...................................................................................... 384
9.3
I membri protected ............................................................................................ 386
9.4
Relazioni tra superclassi e sottoclassi .................................................................. 387
9.5
Caso di studio: gerarchia di ereditarietà a tre livelli ............................................ 406
9.6
Costruttori e metodi finalize nelle sottoclassi ..................................................... 410
9.7
Ingegneria del software con l’ereditarietà ........................................................... 415
Esercizi di autovalutazione ............................................................................................. 416
Risposte agli esercizi di autovalutazione ......................................................................... 417
Esercizi .......................................................................................................................... 417
CAPITOLO 10: LA PROGRAMMAZIONE ORIENTATA AGLI OGGETTI: POLIMORFISMO ...... 419
10.1
10.2
10.3
10.4
10.5
10.6
Introduzione ...................................................................................................... 419
Relazioni tra oggetti in una gerarchia di ereditarietà .......................................... 420
10.2.1
Invocare metodi di superclasse da oggetti di sottoclasse ..................... 421
10.2.2
Usare riferimenti a superclasse con variabili di tipo sottoclasse .......... 422
10.2.3
Chiamare metodi di sottoclasse usando variabili
di tipo superclasse .............................................................................. 424
Esempi di polimorfismo .................................................................................... 426
Metodi e classi astratti ....................................................................................... 427
Caso di studio: ereditare l’interfaccia e l’implementazione ................................. 429
Classi e metodi final .......................................................................................... 438
SOMMARIO
VII
10.7
10.8
10.9
10.10
10.11
Caso di studio: un sistema di pagamento che usa il polimorfismo ..................... 439
Caso di studio: creare e usare le interfacce ......................................................... 449
Classi annidate................................................................................................... 454
Classi type-wrapper per tipi primitivi ................................................................ 468
(Caso di studio facoltativo) Pensare a oggetti:
incorporare l’ereditarietà nel simulatore di ascensore ......................................... 468
10.12 (Facoltativo) Scoprire i design pattern: introduzione ai design pattern
di creazione, strutturali e comportamentali ........................................................ 475
10.12.1 Design pattern di creazione ............................................................... 475
10.12.2 Design pattern strutturali .................................................................. 478
10.12.3 Design pattern comportamentali ....................................................... 479
10.12.4 Conclusione ...................................................................................... 481
Esercizi di autovalutazione ............................................................................................. 481
Risposte agli esercizi di autovalutazione ......................................................................... 481
Esercizi .......................................................................................................................... 481
CAPITOLO 11: I COSTRUTTORI DELLA CLASSE STRING ........................................... 485
11.1 Introduzione ......................................................................................................... 485
11.2 Concetti fondamentali dei caratteri e delle stringhe ........................................... 485
11.3 La classe String .................................................................................................. 486
11.3.1
I costruttori String ............................................................................ 486
11.3.2
I metodi length, charAt e getChars della classe String ....................... 488
11.3.3
Confrontare degli oggetti String ........................................................ 490
11.3.4
Localizzare caratteri e sottostringhe in stringhe ................................. 494
11.3.5
Estrarre sottostringhe da stringhe ...................................................... 497
11.3.6
Concatenare stringhe ......................................................................... 498
11.3.7
Altri metodi della classe String .......................................................... 499
11.3.8
Il metodo valueOf della classe String ................................................. 501
11.4 La classe StringBuffer ........................................................................................ 502
11.4.1
I costruttori di StringBuffer ............................................................... 503
11.4.2
I metodi di StringBuffer length, capacity, setLength
e ensureCapacity ............................................................................... 504
11.4.3
I metodi di StringBuffer charAt, setCharAt, getChars e reverse ......... 505
11.4.4
Il metodo append di StringBuffer ...................................................... 507
11.4.5
I metodi di inserzione e cancellazione di StringBuffer ....................... 509
11.5 La classe Character ............................................................................................ 510
11.6 Classe StringTokenizer ...................................................................................... 517
11.7 Un programma che mescola e distribuisce delle carte da gioco .......................... 519
11.8 Le espressioni regolari e le classi Pattern e Matcher ........................................... 524
11.9 (Caso di studio facoltativo) Pensare a oggetti: la gestione degli eventi ............... 534
Esercizi di autovalutazione ............................................................................................. 540
Risposte agli esercizi di autovalutazione ......................................................................... 541
Esercizi .......................................................................................................................... 541
Sezione speciale: esercizi avanzati di manipolazione delle stringhe ................................. 543
Sezione speciale: progetti difficili di manipolazione di stringhe ..................................... 546
VIII
SOMMARIO
APPENDICE A: PRIORITÀ E ASSOCIATIVITÀ DEGLI OPERATORI ................................... 547
APPENDICE B: I CARATTERI ASCII .................................................................... 549
APPENDICE C: I SISTEMI NUMERICI .................................................................... 551
C.1
Introduzione ...................................................................................................... 551
C.2
L’abbreviazione dei numeri binari in numeri ottali ed esadecimali .................... 554
C.3
La conversione di numeri ottali ed esadecimali in numeri binari ....................... 556
C.4
La conversione da binario, ottale o esadecimale in decimale .............................. 556
C.5
La conversione da decimale a binario, ottale o esadecimale ............................... 557
C.6
I numeri binari negativi: la notazione con complemento a due ......................... 558
Esercizi di autovalutazione ............................................................................................. 560
Risposte agli esercizi di autovalutazione ......................................................................... 560
Esercizi .......................................................................................................................... 562
APPENDICE D: UNICODE ................................................................................ 563
D.1 Introduzione ...................................................................................................... 563
D.2 I formati di trasformazione di Unicode ............................................................. 564
D.3 Caratteri e glifi................................................................................................... 565
D.4 Vantaggi e svantaggi di Unicode........................................................................ 565
D.5 Uso di Unicode ................................................................................................. 566
D.6 Intervalli di caratteri .......................................................................................... 568
Esercizi di autovalutazione ............................................................................................. 569
Risposte agli esercizi di autovalutazione ......................................................................... 569
Esercizi .......................................................................................................................... 570
BIBLIOGRAFIA ................................................................................................. 571