Indholdsfortegnelse


0 Forord 15
0.1 Bogens opbygning 15
0.1.1 Veje gennem bogen 15
0.1.2 Kapitlernes opbygning 17
0.2 Til underviseren 17
0.3 Ændringer i tredje udgave 18
0.4 Tak 18
1 Introduktion 19
1.1 Programmering 20
1.1.1 Styresystemet 20
1.1.2 Hvorfor lære at programmere? 20
1.1.3 Et simpelt program 20
1.1.4 Hvordan lærer man at programmere 21
1.2 Fordele og ulemper ved Java 21
1.2.1 Stærke sider 21
1.2.2 Stor opbakning 22
1.2.3 Svagheder 22
1.3 Programmeringsværktøjer til Java 23
1.3.1 Borland JBuilder 23
1.3.2 Oracle JDeveloper 24
1.3.3 NetBeans / Sun Java Studio Creator 25
1.3.4 Eclipse.org og IBM WebSphere Studio 26
1.3.5 BlueJ 27
1.3.6 Andre værktøjer 27
1.3.7 Sun JDK 27
1.4 Hjælp og videre læsning 28
1.4.1 Projekter med åben kildekode 28
2 Basal programmering 29
2.1 Det første javaprogram 30
2.1.1 Kommentarer 30
2.1.2 Klassedefinitionen 31
2.1.3 Oversættelse og kørsel af programmet 31
2.2 Variabler 33
2.2.1 Heltal 33
2.2.2 Sammensætte strenge med + 34
2.2.3 Beregningsudtryk 34
2.2.4 Kommatal 35
2.2.5 Matematiske funktioner 37
2.2.6 Kald af metoder 38
2.2.7 Logiske variabler 38
2.2.8 Opgaver 39
2.3 Betinget udførelse 39
2.3.1 Indlæsning fra tastaturet 40
2.3.2 if-else 41
2.3.3 Opgaver 41
2.4 Blokke 42
2.4.1 Indrykning 42
2.5 Løkker 43
2.5.1 while-løkken 43
2.5.2 for-løkken 45
2.5.3 Indlejrede løkker 46
2.5.4 Uendelige løkker 47
2.5.5 Opgaver 47
2.6 Værditypekonvertering 48
2.6.1 Eksplicit typekonvertering 48
2.6.2 Implicit typekonvertering 49
2.6.3 Misforståelser omkring typekonvertering 49
2.7 Fejl 50
2.7.1 Indholdsmæssige (logiske) fejl 50
2.7.2 Sproglige fejl 50
2.7.3 Køretidsfejl 51
2.8 Test dig selv 52
2.9 Resumé 53
2.9.1 Gode råd om programmering 53
2.10 Opgaver 54
2.10.1 Befordringsfradrag 54
2.10.2 Kurveprogram 54
2.11 Appendiks 55
2.11.1 Navngivningsregler 55
2.11.2 De simple typer 55
2.11.3 Værditypekonvertering 55
2.11.4 Aritmetiske operatorer 56
2.11.5 Regning med logiske udtryk 57
2.11.6 Sammenligningsoperatorer 57
2.12 Avanceret 58
2.12.1 Formatere tal og datoer 58
2.12.2 Indlæsning fra tastaturet før JDK 1.5 59
2.12.3 Grafiske indtastningsvinduer 59
2.12.4 Primtal 60
2.12.5 Klassemetoder 60
2.12.6 Kombination af logiske operatorer 62
2.12.7 Alternativudtryk 63
2.12.8 Brug af ++ og -- (optælling og nedtælling) 63
2.12.9 Brug af += og -= 63
2.12.10 do-while-løkken 63
2.12.11 break 64
2.12.12 continue 64
2.12.13 break og continue med navngivne løkker 64
2.12.14 switch 65
2.12.15 Komma i for-løkker 65
3 Objekter 67
3.1 Objekter og klasser 68
3.2 Punkter (klassen Point) 69
3.2.1 Erklæring og oprettelse 69
3.2.2 Objektvariabler 70
3.2.3 Metodekald 70
3.2.4 Eksempel 71
3.2.5 Import af standardklasser 72
3.3 Rektangler (klassen Rectangle) 72
3.3.1 Konstruktører 72
3.3.2 Metoder 73
3.3.3 Metoders returtype 74
3.3.4 Metoders parametre 75
3.4 Tekststrenge (klassen String) 76
3.4.1 Streng-objekter er uforanderlige 77
3.4.2 Man behøver ikke bruge new til String-objekter 78
3.4.3 Navnesammenfald for metoder 78
3.4.4 At sætte strenge sammen med + 78
3.4.5 Sammenligning 79
3.4.6 Opgaver 80
3.5 Lister (klassen ArrayList) 80
3.5.1 Gennemløb af lister 82
3.5.2 Historisk bemærkning: Lister før JDK 1.5 82
3.5.3 Eksempel: Eventyrfortælling 82
3.5.4 Eksempel: Punkter i en liste 83
3.5.5 Eksempel: Blanding af kort med ArrayList 84
3.6 Datoer (klassen Date) 85
3.6.1 Opgaver 86
3.7 Test dig selv 87
3.8 Resumé 87
3.9 Appendiks 88
3.9.1 Klassen Point 88
3.9.2 Klassen Rectangle 89
3.9.3 Klassen String 90
3.9.4 Specialtegn i strenge 91
3.9.5 Klassen Date 92
3.9.6 Klassen ArrayList 93
3.10 Avanceret 94
3.10.1 Sætte strenge sammen (klassen StringBuilder) 94
3.10.2 Standardmetoder til at arbejde med lister 96
3.10.3 Lister af simple typer (autoboxing) 96
3.10.4 Andre slags lister og mængder 96
3.10.5 Nøgleindekserede tabeller (klassen HashMap) 97
4 Definition af klasser 99
4.1 En Boks-klasse 100
4.1.1 Variabler 100
4.1.2 Brug af klassen 101
4.1.3 Metodedefinition 101
4.1.4 Flere objekter 102
4.2 Indkapsling 103
4.3 Konstruktører 105
4.3.1 Standardkonstruktører 106
4.3.2 Opgaver 106
4.4 En Terning-klasse 107
4.4.1 Opgaver 108
4.5 Relationer mellem objekter 108
4.5.1 En Raflebæger-klasse 108
4.5.2 Opgaver 110
4.6 Nøgleordet this 111
4.7 Ekstra eksempler 112
4.7.1 En n-sidet terning 112
4.7.2 Personer 114
4.7.3 Design af klasser 115
4.8 Test dig selv 116
4.9 Resumé 116
4.9.1 Formen af en klasse 117
4.9.2 Formen af en metode 118
4.10 Opgaver 119
4.10.1 BlueJ 119
4.10.2 Fejlfinding 120
4.11 Avanceret 122
4.11.1 Bankkonti 122
4.11.2 Opgaver 122
5 Nedarvning 123
5.1 At udbygge eksisterende klasser 124
5.1.1 Eksempel: En falsk terning 124
5.1.2 At udbygge med flere metoder og variabler 126
5.1.3 Nøgleordet super 126
5.1.4 Opgaver 127
5.2 Polymorfe variabler 128
5.2.1 Dispensation fra traditionel typesikkerhed 128
5.2.2 Polymorfi 129
5.2.3 Eksempel på polymorfi: Brug af Raflebaeger 129
5.2.4 Hvilken vej er en variabel polymorf ? 130
5.2.5 Reference-typekonvertering 131
5.3 Eksempel: Et matador-spil 132
5.3.1 Polymorfi 138
5.3.2 Opgaver 138
5.4 Stamklassen Object 139
5.4.1 Referencer til objekter 140
5.5 Konstruktører i underklasser 141
5.5.1 Konsekvenser 142
5.6 Ekstra eksempler 143
5.6.1 Matadorspillet version 2 143
5.6.2 Opgaver 145
5.7 Test dig selv 146
5.8 Resumé 146
5.9 Avanceret 147
5.9.1 Initialisering uden for konstruktørerne 147
5.9.2 Kald af en konstruktør fra en anden konstruktør 148
5.9.3 Metoder erklæret final 148
5.9.4 Metoder erklæret protected 148
5.9.5 Variabel-overskygning 148
6 Pakker 149
6.1 At importere klassedefinitioner 150
6.2 Standardpakkerne 150
6.2.1 Pakken java.lang 151
6.3 Pakkers placering på filsystemet 151
6.4 At definere egne pakker 152
6.4.1 Eksempel 152
6.5 Pakke klasser i jar-filer (Java-arkiver) 152
6.5.1 Eksekverbare jar-filer 153
6.6 Test dig selv 153
6.7 Resumé 153
6.8 Opgaver 153
6.9 Avanceret: public, protected og private 154
6.9.1 Variabler og metoder 154
6.9.2 Indkapsling med pakker 154
6.9.3 Klasser 154
7 Lokale, objekt- og klassevariabler 155
7.1 Klassevariabler og -metoder 156
7.1.1 Eksempler på klassevariabler 157
7.1.2 Eksempler på klassemetoder 157
7.2 Lokale variabler og parametre 158
7.2.1 Parametervariabler 158
7.3 Test dig selv 160
7.4 Resumé 160
7.4.1 Tilknytning 160
7.4.2 Adgang til variabler og metoder 160
7.4.3 Adgang fra metoder 160
7.5 Avanceret 161
7.5.1 Introduktion til rekursive algoritmer 161
7.5.2 Rekursion: Beregning af formel 162
7.5.3 Rekursion: Listning af filer 163
7.5.4 Rekursion: Tegning af fraktaler 164
8 Arrays 165
8.1 Erklæring og brug 166
8.1.1 Eksempel: Statistik 167
8.1.2 Initialisere et array med startværdier 167
8.1.3 Arrayet i main()-metoden 168
8.2 Gennemløb og manipulering af array 168
8.3 Array af objekter 169
8.3.1 Polymorfi 169
8.4 Arrays versus lister (ArrayList) 169
8.5 Resumé 170
8.6 Opgaver 170
8.7 Avanceret 171
8.7.1 Flerdimensionale arrays 171
9 Grafiske programmer 173
9.1 Klassen Graphics 175
9.1.1 Eksempel 176
9.2 Metoder i vinduer, som du kan kalde 177
9.2.1 Eksempel: Kurvetegning 178
9.3 Opgaver 179
9.3.1 Opgave: Grafisk Matador-spil 179
9.4 Avanceret 182
9.4.1 Simple animationer 182
9.4.2 Animationer med en separat tråd 182
9.4.3 Undgå blinkeri ved ikke at slette gammel grafik 183
9.4.4 Undgå blinkeri ved kun at slette det nødvendige 183
9.4.5 Grafikbuffer (double buffering) 184
9.4.6 Java2D - avanceret grafiktegning 184
10 Appletter 187
10.1 HTML-dokumentet 188
10.2 Javakoden 188
10.3 Metoder i appletter 189
10.3.1 Metoder i appletter, som du kan kalde 189
10.3.2 Metoder i appletter, som systemet kalder 190
10.3.3 Eksempel 190
10.4 Resumé 191
10.5 Avanceret 192
10.5.1 Sikkerhedsbegrænsninger for appletter 192
10.5.2 Pakker og CODE/CODEBASE i HTML-koden 192
10.5.3 Begrænsninger i ældre netlæsere 192
11 Grafiske standardkomponenter 193
11.1 Generering med et værktøj 194
11.1.1 Interaktive programmer 196
11.2 Grafiske komponenter 198
11.2.1 Button 198
11.2.2 Checkbox 198
11.2.3 Choice 198
11.2.4 TextField 199
11.2.5 TextArea 199
11.2.6 Label 199
11.2.7 List 200
11.2.8 Canvas 200
11.3 Eksempel 200
11.4 Containere 202
11.4.1 Panel 202
11.4.2 Applet 202
11.4.3 Window 202
11.4.4 Frame 202
11.4.5 Dialog 202
11.5 Relationer mellem klasserne 202
11.6 Layout-managere 203
11.6.1 Ingen styring (null-layout) 203
11.6.2 FlowLayout 203
11.6.3 BorderLayout 203
11.6.4 GridBagLayout 204
11.7 Menuer 206
11.8 Test dig selv 206
11.9 Resumé 206
11.10 Avanceret 207
11.10.1 AWT-komponenter på andre platforme 207
11.10.2 Swing-komponenter 207
12 Interfaces - grænseflader til objekter 209
12.1 Definere et interface 210
12.2 Implementere et interface 210
12.2.1 Variabler af type Tegnbar 211
12.2.2 Eksempler med interfacet Tegnbar 211
12.2.3 Visning af nogle Tegnbare objekter 213
12.2.4 Polymorfi 214
12.3 Interfaces i standardbibliotekerne 214
12.3.1 Sortering med en Comparator 214
12.3.2 Flere tråde med Runnable 215
12.3.3 Lytte til musen med MouseListener 215
12.4 Test dig selv 216
12.5 Resumé 216
12.6 Opgaver 216
12.7 Avanceret 217
12.7.1 Implementere flere interfaces 217
12.7.2 At udbygge interfaces 217
12.7.3 Multipel arv 217
12.7.4 Variabler i et interface 218
13 Hændelser i grafiske brugergrænseflader 219
13.1 Eksempel: LytTilMusen 220
13.2 Eksempel: Linjetegning 221
13.2.1 Linjetegning i én klasse 223
13.3 Ekstra eksempler 223
13.3.1 Lytte til musebevægelser 223
13.3.2 Lytte til en knap 224
13.3.3 Lytte efter tastetryk 225
13.4 Appendiks 226
13.4.1 Lyttere og deres metoder 226
13.5 Avanceret 228
13.5.1 Automatisk genereret kode til hændelseshåndtering 228
13.5.2 Adaptere 228
14 Undtagelser og køretidsfejl 229
14.1 Almindelige undtagelser 231
14.2 At fange og håndtere undtagelser 231
14.2.1 Undtagelsesobjekter og deres stakspor 232
14.3 Undtagelser med tvungen håndtering 233
14.3.1 Fange undtagelser eller sende dem videre 233
14.3.2 Konsekvenser af at sende undtagelser videre 234
14.4 Præcis håndtering af undtagelser 236
14.5 Fange flere slags undtagelser 238
14.6 Resumé 238
14.7 Opgaver 238
14.8 Avanceret 239
14.8.1 Fange Throwable 239
14.8.2 Selv kaste undtagelser (throw) 239
14.8.3 try - finally 240
14.8.4 Selv definere undtagelsestyper 240
15 Datastrømme og filhåndtering 241
15.1 Skrive til en tekstfil 242
15.2 Læse fra en tekstfil 243
15.3 Analysering af tekstdata 244
15.3.1 Opdele strenge og konvertere bidderne til tal 244
15.3.2 Indlæsning af tekst med Scanner-klassen 244
15.4 Binær læsning og skrivning 246
15.4.1 Optimering af ydelse 246
15.5 Appendiks 247
15.5.1 Navngivning 247
15.5.2 Binære data ( -OutputStream og -InputStream) 247
15.5.3 Tekstdata ( -Writer og -Reader) 248
15.5.4 Fillæsning og -skrivning (File- ) 248
15.5.5 Strenge (String- ) 248
15.5.6 Arrays (ByteArray- og CharArray- ) 249
15.5.7 Læse og skrive objekter (Object- ) 249
15.5.8 Dataopsamling (Buffered- ) 249
15.5.9 Gå fra binære til tegnbaserede datastrømme 249
15.5.10 Filtreringsklasser til konvertering og databehandling 249
15.5.11 Brug af på filtreringsklasser 250
15.6 Test dig selv 251
15.7 Resumé 251
15.8 Opgaver 251
15.9 Avanceret 252
15.9.1 Klassen RandomAccessFile 252
15.9.2 Filhåndtering (klassen File) 252
15.9.3 Platformuafhængige filnavne 252
16 Netværkskommunikation 253
16.1 At forbinde til en port 254
16.2 At lytte på en port 256
16.3 URL-klassen 257
16.4 Opgaver 258
16.5 Avanceret 259
16.5.1 FTP-kommunikation 259
16.5.2 Brug af FTP fra en applet 261
17 Flertrådet programmering 263
17.1 Princip 264
17.1.1 Eksempel 264
17.2 Ekstra eksempler 266
17.2.1 En flertrådet webserver 266
17.2.2 Et flertrådet program med hoppende bolde 267
17.3 Opgaver 268
17.4 Avanceret 269
17.4.1 Nedarvning fra Thread 269
17.4.2 Synkronisering 269
17.4.3 Synkronisering på objekter og semaforer 270
17.4.4 wait() og notify() 270
17.4.5 Prioritet 270
17.4.6 Opgaver 270
18 Serialisering af objekter 271
18.1 Hente og gemme objekter 272
18.2 Serialisering af egne klasser 273
18.2.1 Interfacet Serializable 273
18.2.2 Nøgleordet transient 273
18.2.3 Eksempel 274
18.3 Opgaver 274
18.4 Avanceret 275
18.4.1 Serialisere det samme objekt flere gange 275
18.4.2 Selv styre serialiseringen af en klasse 276
19 RMI - objekter over netværk 277
19.1 Principper 278
19.2 I praksis 278
19.2.1 På serversiden 279
19.2.2 På klientsiden 280
19.3 Opgaver 281
19.3.1 Server og klient to forskellige steder 281
19.4 Avanceret 282
19.4.1 RMI og pakker 282
20 JDBC - databaseadgang 283
20.1 Kontakt til databasen 284
20.1.1 JDBC-ODBC-broen under Windows 284
20.2 Kommunikere med databasen 284
20.2.1 Kommandoer 284
20.2.2 Forespørgsler 285
20.3 Adskille database- og programlogik 285
20.4 Opgaver 287
20.5 Avanceret 288
20.5.1 Forpligtende eller ej? (commit) 288
20.5.2 Optimering 288
20.5.3 Metadata 290
20.5.4 Opdatering og navigering i ResultSet-objekter 290
21 Avancerede klasser 291
21.1 Nøgleordet abstract 292
21.1.1 Abstrakte klasser 292
21.1.2 Abstrakte metoder 292
21.2 Nøgleordet final 293
21.2.1 Variabler erklæret final 293
21.2.2 Metoder erklæret final 294
21.2.3 Klasser erklæret final 294
21.3 Indre klasser 295
21.4 Almindelige indre klasser 295
21.4.1 Eksempel - Linjetegning 296
21.5 Lokale indre klasser 297
21.6 Anonyme indre klasser 298
21.6.1 Eksempel - filtrering af filnavne 298
21.6.2 Eksempel - Linjetegning 299
21.6.3 Eksempel - tråde 300
21.7 Resumé 301
21.8 Opgaver 301
21.9 Avanceret 302
21.9.1 public, protected og private på en indre klasse 302
21.9.2 static på en indre klasse 302
22 Objektorienteret analyse og design 303
22.1 Krav til programmet 304
22.2 Objektorienteret analyse 305
22.2.1 Skrive vigtige ord op 305
22.2.2 Brugssituationer 305
22.2.3 Aktivitetsdiagrammer 306
22.2.4 Skærmbilleder 306
22.3 Objektorienteret design 308
22.3.1 Design af klasser 308
22.3.2 Kollaborationsdiagrammer 308
22.3.3 Klassediagrammer 309
Engelsk-dansk ordliste 311
Stikordsregister 315
http://javabog.dk/ - af Jacob Nordfalk.
Licens og kopiering under Åben Dokumentlicens (ÅDL) hvor intet andet er nævnt (82% af værket).

Ønsker du at se de sidste 18% af dette værk (199974 tegn) skal du købe bogen. Så får du pæne figurer og layout, stikordsregister og en trykt bog med i købet.