Indholdsfortegnelse


0 Forord
0.1 Bogens opbygning
0.1.1 Veje gennem bogen
0.1.2 Kapitlernes opbygning
0.2 Til underviseren
0.3 Forord til anden udgave
0.4 Ændringer i tredje udgave
0.5 Tak
1 Introduktion
1.1 Programmering
1.1.1 Styresystemet
1.1.2 Hvorfor lære at programmere?
1.1.3 Et simpelt program
1.1.4 Hvordan lærer man at programmere
1.2 Fordele og ulemper ved Java
1.2.1 Stærke sider
1.2.2 Stor opbakning
1.2.3 Svagheder
1.3 Programmeringsværktøjer til Java
1.3.1 Sun JDK
1.3.2 Borland JBuilder
1.3.3 Oracle JDeveloper
1.3.4 Sun Forte/NetBeans
1.3.5 IBM VisualAge for Java
1.3.6 Andre
1.4 Hjælp og videre læsning
1.4.1 Projekter med åben kildekode
2 Basal programmering
2.1 Det første javaprogram
2.1.1 Kommentarer
2.1.2 Klassedefinitionen
2.1.3 Oversættelse og kørsel af programmet
2.2 Variabler
2.2.1 Heltal
2.2.2 Sammensætte strenge med +
2.2.3 Beregningsudtryk
2.2.4 Kommatal
2.2.5 Matematiske funktioner
2.2.6 Kald af metoder
2.2.7 Logiske variabler
2.2.8 Opgaver
2.3 Betinget udførelse
2.3.1 if-else
2.3.2 Opgaver
2.4 Blokke
2.4.1 Indrykning
2.5 Løkker
2.5.1 while-løkken
2.5.2 for-løkken
2.5.3 Indlejrede løkker
2.5.4 Uendelige løkker
2.5.5 Opgaver
2.6 Værditypekonvertering
2.6.1 Eksplicit typekonvertering
2.6.2 Implicit typekonvertering
2.6.3 Misforståelser omkring typekonvertering
2.7 Fejl
2.7.1 Indholdsmæssige (logiske) fejl
2.7.2 Sproglige fejl
2.7.3 Køretidsfejl
2.8 Test dig selv
2.9 Resumé
2.9.1 Gode råd om programmering
2.10 Opgaver
2.10.1 Befordringsfradrag
2.10.2 Kurveprogram
2.11 Appendiks
2.11.1 Navngivningsregler
2.11.2 De simple typer
2.11.3 Værditypekonvertering
2.11.4 Aritmetiske operatorer
2.11.5 Regning med logiske udtryk
2.11.6 Sammenligningsoperatorer
2.12 Avanceret
2.12.1 Indlæsning fra tastaturet
2.12.2 Grafiske indtastningsvinduer
2.12.3 Primtal
2.12.4 Klassemetoder
2.12.5 Kombination af logiske operatorer
2.12.6 Alternativudtryk
2.12.7 Brug af ++ og -- (optælling og nedtælling)
2.12.8 Brug af += og -=
2.12.9 do-while-løkken
2.12.10 break
2.12.11 continue
2.12.12 break og continue med navngivne løkker
2.12.13 switch
2.12.14 Komma i for-løkker
3 Objekter
3.1 Objekter og klasser
3.2 Punkter (klassen Point)
3.2.1 Erklæring og oprettelse
3.2.2 Objektvariabler
3.2.3 Metodekald
3.2.4 Eksempel
3.2.5 Import af standardklasser
3.3 Rektangler (klassen Rectangle)
3.3.1 Konstruktører
3.3.2 Metoder
3.3.3 Metoders returtype
3.3.4 Metoders parametre
3.4 Tekststrenge (klassen String)
3.4.1 Strenge er uforanderlige
3.4.2 Man behøver ikke bruge new til String-objekter
3.4.3 Navnesammenfald for metoder
3.4.4 At sætte strenge sammen med +
3.4.5 Sammenligning
3.4.6 Opgaver
3.5 Lister (klassen ArrayList)
3.5.1 Eksempel: Punkter i en liste
3.6 Ekstra eksempler
3.6.1 Blanding af kort med ArrayList
3.6.2 Opdeling af strenge (klassen StringTokenizer)
3.6.3 Datoer (klassen Date)
3.6.4 Opgaver
3.7 Test dig selv
3.8 Resumé
3.9 Appendiks
3.9.1 Klassen Point
3.9.2 Klassen Rectangle
3.9.3 Klassen String
3.9.4 Specialtegn i strenge
3.9.5 Klassen StringTokenizer
3.9.6 Klassen Date
3.9.7 Klassen ArrayList
3.10 Avanceret
3.10.1 Sætte strenge sammen (klassen StringBuffer)
3.10.2 Nøgleindekserede tabeller (klassen HashMap)
3.10.3 Talformatering (klassen DecimalFormat)
3.10.4 Datoformatering (klassen SimpleDateFormat)
3.10.5 Foruddefinerede datoformater (DateFormat)
4 Definition af klasser
4.1 En Boks-klasse
4.1.1 Variabler
4.1.2 Brug af klassen
4.1.3 Metodedefinition
4.1.4 Flere objekter
4.2 Indkapsling
4.3 Konstruktører
4.3.1 Standardkonstruktører
4.3.2 Opgaver
4.4 En Terning-klasse
4.4.1 Opgaver
4.5 Relationer mellem objekter
4.5.1 En Raflebæger-klasse
4.5.2 Opgaver
4.6 Nøgleordet this
4.7 Ekstra eksempler
4.7.1 En n-sidet terning
4.7.2 Personer
4.7.3 Design af klasser
4.8 Test dig selv
4.9 Resumé
4.9.1 Formen af en klasse
4.9.2 Formen af en metode
4.10 Opgaver
4.10.1 Fejlfinding
4.11 Avanceret
4.11.1 Bankkonti
4.11.2 Opgaver
5 Nedarvning
5.1 At udbygge eksisterende klasser
5.1.1 Eksempel: En falsk terning
5.1.2 At udbygge med flere metoder og variabler
5.1.3 Nøgleordet super
5.1.4 Opgaver
5.2 Polymorfe variabler
5.2.1 Dispensation fra traditionel typesikkerhed
5.2.2 Polymorfi
5.2.3 Eksempel på polymorfi: Brug af Raflebaeger
5.2.4 Hvilken vej er en variabel polymorf ?
5.2.5 Reference-typekonvertering
5.3 Eksempel: Et matador-spil
5.3.1 Polymorfi
5.3.2 Opgaver
5.4 Stamklassen Object
5.4.1 Referencer til objekter
5.5 Konstruktører i underklasser
5.5.1 Konsekvenser
5.6 Ekstra eksempler
5.6.1 Matadorspillet version 2
5.6.2 Opgaver
5.7 Test dig selv
5.8 Resumé
5.9 Avanceret
5.9.1 Initialisering uden for konstruktørerne
5.9.2 Kald af en konstruktør fra en anden konstruktør
5.9.3 Metoder erklæret final
5.9.4 Metoder erklæret protected
5.9.5 Variabel-overskygning
6 Pakker
6.1 At importere klassedefinitioner
6.2 Standardpakkerne
6.2.1 Pakken java.lang
6.3 Placering på filsystemet
6.4 At definere egne pakker
6.4.1 Eksempel
6.5 Pakke klasser i jar-filer (Java-arkiver)
6.5.1 Eksekverbare jar-filer
6.6 Test dig selv
6.7 Resumé
6.8 Opgaver
6.9 Avanceret - public, protected og private
6.9.1 Variabler og metoder
6.9.2 Klasser
7 Lokale, objekt- og klassevariabler
7.1 Klassevariabler og -metoder
7.1.1 Eksempler på klassevariabler
7.1.2 Eksempler på klassemetoder
7.2 Lokale variabler og parametre
7.2.1 Parametervariabler
7.3 Test dig selv
7.4 Resumé
7.4.1 Tilknytning
7.4.2 Adgang til variabler og metoder
7.4.3 Adgang fra metoder
7.5 Avanceret
7.5.1 Introduktion til rekursive algoritmer
7.5.2 Rekursion: Beregning af formel
7.5.3 Rekursion: Listning af filer
7.5.4 Rekursion: Tegning af fraktaler
8 Arrays
8.1 Erklæring og brug
8.1.1 Eksempel: Statistik
8.1.2 Initialisere et array med startværdier
8.1.3 Arrayet i main()-metoden
8.2 Gennemløb og manipulering af array
8.3 Array af objekter
8.3.1 Polymorfi
8.4 Array versus lister (ArrayList)
8.5 Resumé
8.6 Opgaver
8.7 Avanceret
8.7.1 Flerdimensionale arrays
9 Grafiske programmer
9.1 Klassen Graphics
9.1.1 Eksempel
9.2 Metoder i vinduer, som du kan kalde
9.2.1 Eksempel: Kurvetegning
9.3 Opgaver
9.3.1 Opgave: Grafisk Matador-spil
9.4 Avanceret
9.4.1 Simple animationer
9.4.2 Animationer med en separat tråd
9.4.3 Undgå blinkeri
9.4.4 Grafikbuffer (double buffering)
9.4.5 Java2D - avanceret grafiktegning
10 Appletter
10.1 HTML-dokumentet
10.2 Javakoden
10.3 Metoder i appletter
10.3.1 Metoder i appletter, som du kan kalde
10.3.2 Metoder i appletter, som systemet kalder
10.3.3 Eksempel
10.4 Resumé
10.5 Avanceret
10.5.1 Sikkerhedsbegrænsninger for appletter
10.5.2 Pakker og CODE/CODEBASE i HTML-koden
10.5.3 Begrænsninger i ældre netlæsere
10.5.4 Ændring af applet til at virke i ældre netlæsere
10.5.5 Java Plug-in
11 Grafiske standardkomponenter
11.1 Generering med et værktøj
11.1.1 Interaktive programmer
11.2 Grafiske komponenter
11.2.1 Button
11.2.2 Checkbox
11.2.3 Choice
11.2.4 TextField
11.2.5 TextArea
11.2.6 Label
11.2.7 List
11.2.8 Canvas
11.3 Eksempel
11.4 Containere
11.4.1 Panel
11.4.2 Applet
11.4.3 Window
11.4.4 Frame
11.4.5 Dialog
11.5 Relationer mellem klasserne
11.6 Layout-managere
11.6.1 Ingen styring (null-layout)
11.6.2 FlowLayout
11.6.3 BorderLayout
11.6.4 GridBagLayout
11.7 Menuer
11.8 Test dig selv
11.9 Resumé
11.10 Avanceret
11.10.1 AWT-komponenter på andre platforme
11.10.2 Swing-komponenter
12 Interfaces - grænseflader til objekter
12.1 Definere et interface
12.2 Implementere et interface
12.2.1 Variabler af type Tegnbar
12.2.2 Eksempler med interfacet Tegnbar
12.2.3 Visning af nogle Tegnbare objekter
12.2.4 Polymorfi
12.3 Interfaces i standardbibliotekerne
12.3.1 Sortering med en Comparator
12.3.2 Flere tråde med Runnable
12.3.3 Lytte til musen med MouseListener
12.4 Test dig selv
12.5 Resumé
12.6 Opgaver
12.7 Avanceret
12.7.1 Implementere flere interfaces
12.7.2 At udbygge interfaces
12.7.3 Multipel arv
12.7.4 Variabler i et interface
13 Hændelser i grafiske brugergrænseflader
13.1 Eksempel: LytTilMusen
13.2 Eksempel: Linietegning
13.2.1 Linietegning i én klasse
13.3 Ekstra eksempler
13.3.1 Lytte til musebevægelser
13.3.2 Lytte til en knap
13.3.3 Lytte efter tastetryk
13.4 Appendiks
13.4.1 Lyttere og deres metoder
13.5 Avanceret
13.5.1 Autogenereret kode til hændelseshåndtering
13.5.2 Adaptere
14 Undtagelser og køretidsfejl
14.1 Almindelige undtagelser
14.2 At fange og håndtere undtagelser
14.2.1 Undtagelsesobjekter og deres stakspor
14.3 Undtagelser med tvungen håndtering
14.3.1 Fange undtagelser eller sende dem videre
14.3.2 Konsekvenser af at sende undtagelser videre
14.4 Præcis håndtering af undtagelser
14.5 Fange flere slags undtagelser
14.6 Resumé
14.7 Opgaver
14.8 Avanceret
14.8.1 Fange Throwable
14.8.2 Selv kaste undtagelser (throw)
14.8.3 try - finally
14.8.4 Selv definere undtagelsestyper
15 Datastrømme og filhåndtering
15.1 Skrive til en tekstfil
15.2 Læse fra en tekstfil
15.3 Indlæsning fra tastatur
15.4 Analysering af tekstdata
15.4.1 Konvertere strenge til tal
15.4.2 Samlet eksempel: Statistik
15.5 Binær læsning og skrivning
15.5.1 Optimering af ydelse
15.6 Appendiks
15.6.1 Navngivning
15.6.2 Binære data ( -OutputStream og -InputStream)
15.6.3 Tekstdata ( -Writer og -Reader)
15.6.4 Fillæsning og -skrivning (File- )
15.6.5 Strenge (String- )
15.6.6 Arrays (ByteArray- og CharArray- )
15.6.7 Læse og skrive objekter (Object- )
15.6.8 Dataopsamling (Buffered- )
15.6.9 Gå fra binære til tegnbaserede datastrømme
15.6.10 Filtreringsklasser til konvertering og databehandling
15.6.11 Brug af på filtreringsklasser
15.7 Test dig selv
15.8 Resumé
15.9 Opgaver
15.10 Avanceret
15.10.1 Klassen RandomAccessFile
15.10.2 Filhåndtering (klassen File)
15.10.3 Platformuafhængige filnavne
16 Netværkskommunikation
16.1 At forbinde til en port
16.2 At lytte på en port
16.3 URL-klassen
16.4 Opgaver
16.5 Avanceret
16.5.1 FTP-kommunikation
16.5.2 Brug af FTP fra en applet
17 Flertrådet programmering
17.1 Princip
17.1.1 Eksempel
17.2 Ekstra eksempler
17.2.1 En flertrådet webserver
17.2.2 Et flertrådet program med hoppende bolde
17.3 Opgaver
17.4 Avanceret
17.4.1 Nedarvning fra Thread
17.4.2 Synkronisering
17.4.3 Synkronisering på objekter og semaforer
17.4.4 wait() og notify()
17.4.5 prioritet
17.4.6 Opgaver
18 Serialisering af objekter
18.1 Hente og gemme objekter
18.2 Serialisering af egne klasser
18.2.1 Interfacet Serializable
18.2.2 Nøgleordet transient
18.2.3 Eksempel
18.3 Opgaver
18.4 Avanceret
18.4.1 Serialisere det samme objekt flere gange
18.4.2 Selv styre serialiseringen af en klasse
19 RMI - objekter over netværk
19.1 Principper
19.2 I praksis
19.2.1 På serversiden
19.2.2 På klientsiden
19.3 Opgaver
19.3.1 Server og klient to forskellige steder
19.4 Avanceret
19.4.1 RMI og pakker
20 JDBC - databaseadgang
20.1 Kontakt til databasen
20.1.1 JDBC-ODBC-broen under Windows
20.2 Kommunikere med databasen
20.2.1 Kommandoer
20.2.2 Forespørgsler
20.3 Adskille database- og programlogik
20.4 Opgaver
20.5 Avanceret
20.5.1 Forpligtende eller ej? (commit)
20.5.2 Optimering
20.5.3 Metadata
20.5.4 Opdatering og navigering i ResultSet-objekter
21 Avancerede klasser
21.1 Nøgleordet abstract
21.1.1 Abstrakte klasser
21.1.2 Abstrakte metoder
21.2 Nøgleordet final
21.2.1 Variabler erklæret final
21.2.2 Metoder erklæret final
21.2.3 Klasser erklæret final
21.3 Indre klasser
21.4 Almindelige indre klasser
21.4.1 Eksempel - Linietegning
21.5 Lokale indre klasser
21.6 Anonyme indre klasser
21.6.1 Eksempel - filtrering af filnavne
21.6.2 Eksempel - Linietegning
21.6.3 Eksempel - tråde
21.7 Resumé
21.8 Opgaver
21.9 Avanceret
21.9.1 public, protected og private på en indre klasse
21.9.2 static på en indre klasse
22 Objektorienteret analyse og design
22.1 Krav til programmet
22.2 Objektorienteret analyse
22.2.1 Skrive vigtige ord op
22.2.2 Brugsmønstre
22.2.3 Aktivitetsdiagrammer
22.2.4 Skærmbilleder
22.3 Objektorienteret design
22.3.1 Design af klasser
22.3.2 Kollaborationsdiagrammer
22.3.3 Klassediagrammer
23 Engelsk-dansk ordliste
24 Stikordsregister
http://javabog.dk/ - af Jacob Nordfalk.
Licens og kopiering under Åben Dokumentlicens (ÅDL) hvor intet andet er nævnt (80% af værket).

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