Indholdsfortegnelse


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

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