Linux - Friheden til at programmere i Java

Version 0.7.20040516 - 2020-12-31

Christian Damsgaard

Jakob Nordfalk

Jonas Kongslund

og mange andre

Bogen er nu nogenlunde klar - der mangler dog en del korrekturlæsning mht. struktur.


Indholdsfortegnelse
Forord
1. Forord
2. Linux-bøgerne
3. Ophavsret
4. Om forfatterne og bogens historie
5. Vi siger tak for hjælpen
6. Typografi
1. Indledning
1.1. Målgrupper
1.2. Om bogens kilde - http://javabog.dk
1.3. Javas historie
1.4. Hvad er en virtuel maskine
1.5. Programmering
1.5.1. Styresystemet
1.5.2. Hvorfor lære at programmere?
1.5.3. Et simpelt program
1.5.4. Hvordan lærer man at programmere
1.6. Fordele og ulemper ved Java
1.6.1. Enkelt
1.6.2. Objektorienteret
1.6.3. Platformuafhængigt
1.6.4. Netværksorienteret
1.6.5. Fortolket
1.6.6. Højtydende
1.6.7. Flertrådet
1.6.8. Robust
1.6.9. Sikkert
1.6.10. Dynamisk
1.6.11. Stor opbakning
1.6.12. Svagheder ved Java
2. Udviklingsmiljø
2.1. Indledning
2.2. Integrerede udviklingsmiljøer
2.2.1. Sun JDK
2.2.2. Borland JBuilder
2.2.3. Oracle JDeveloper
2.2.4. Sun Forte for Java
2.2.5. IBM VisualAge for Java
2.2.6. Andre
2.3. Opsætningsstyring
2.3.1. Ant
2.4. Debugging
2.5. Logning
2.6. Profilering
2.7. Dokumentation
2.7.1. Javadoc
2.8. Versionsstyring
2.9. Test
2.9.1. JUnit
3. Basal programmering
3.1. Det første javaprogram
3.1.1. Kommentarer
3.1.2. Klassedefinitionen
3.1.3. Oversættelse og kørsel af programmet
3.2. Variable
3.2.1. Heltal
3.2.2. Sammensætte strenge med +
3.2.3. Beregningsudtryk
3.2.4. Kommatal
3.2.5. Matematiske funktioner
3.2.6. Kald af metoder
3.2.7. Logiske variable
3.2.8. Opgaver
3.3. Betinget udførelse
3.3.1. if-else
3.3.2. Opgaver
3.4. Blokke
3.4.1. Indrykning
3.5. Løkker
3.5.1. while-løkken
3.5.2. for-løkken
3.5.3. Indlejrede løkker
3.5.4. Uendelige løkker
3.5.5. Opgaver
3.6. Værditypekonvertering
3.6.1. Eksplicit værdi-typekonvertering
3.6.2. Implicit værdi-typekonvertering
3.6.3. Misforståelser af værdi-typekonvertering
3.7. Fejl
3.7.1. Indholdsmæssige (logiske) fejl
3.7.2. Sproglige fejl
3.7.3. Køretidsfejl
3.8. Opgaver
3.8.1. Befordringsfradrag
3.8.2. Kurveprogram
3.9. Appendiks
3.9.1. Navngivningsregler
3.9.2. De simple typer
3.9.3. Værditypekonvertering
3.9.4. Aritmetiske operatorer
3.9.5. Regning med logiske udtryk
3.9.6. Sammenligningsoperatorer
3.9.7. Gode råd om programmering
4. Objekter
4.1. Objekter og klasser
4.2. Punkter (klassen Point)
4.2.1. Erklæring og oprettelse
4.2.2. Objektvariable
4.2.3. Metodekald
4.2.4. Eksempel
4.2.5. Import af standardklasser
4.3. Rektangler (klassen Rectangle)
4.3.1. Konstruktører
4.3.2. Metoder
4.3.3. Metoders returtype
4.3.4. Metoders parametre
4.4. Tekststrenge (klassen String)
4.4.1. Strenge er uforanderlige
4.4.2. Man behøver ikke bruge new til String-objekter
4.4.3. Navnesammenfald for metoder
4.4.4. At sætte strenge sammen med +
4.4.5. Sammenligning
4.4.6. Opgaver
4.5. Lister (klassen Vector)
4.5.1. Eksempel med Point
4.6. Ekstra eksempler
4.6.1. Blanding af kort med Vector
4.6.2. Datoer (klassen Date)
4.6.3. Opgaver
4.7. Appendiks
4.7.1. Point
4.7.2. Rectangle
4.7.3. String
4.7.4. Specialtegn i strenge
5. Definition af klasser
5.1. En Boks-klasse
5.1.1. Variabler
5.1.2. Brug af klassen
5.1.3. Metodedefinition
5.1.4. Flere objekter
5.2. Indkapsling
5.3. Konstruktører
5.3.1. Standardkonstruktører
5.3.2. Opgaver
5.4. En Terning-klasse
5.4.1. Opgaver
5.5. Relationer mellem objekter
5.5.1. En Raflebæger-klasse
5.5.2. Opgaver
5.6. Nøgleordet this
5.7. Ekstra eksempler
5.7.1. En n-sidet terning
5.7.2. Personer
5.7.3. Bankkonti
5.8. Opgaver
5.8.1. Fejlfinding
6. Nedarvning
6.1. At udbygge eksisterende klasser
6.1.1. Eksempel: En falsk terning
6.1.2. At udbygge med flere metoder og variabler
6.1.3. Nøgleordet super
6.2. Polymorfe variabler
6.2.1. Dispensation fra traditionel typesikkerhed
6.2.2. Polymorfi
6.2.3. Et eksempel på polymorfi: Brug af Raflebaeger
6.2.4. Hvilken vej er en variabel polymorf ?
6.2.5. Reference-typekonvertering
6.3. Eksempel: Et matador-spil
6.3.1. Polymorfi
6.4. Stamklassen Object
6.4.1. Referencer til objekter
6.5. Konstruktører i underklasser
6.6. Matadorspillet version 2
6.7. Opgaver
7. Pakker
7.1. At importere klassedefinitioner
7.2. Standardpakkerne
7.2.1. Pakken java.lang
7.3. Placering på filsystemet
7.4. At definere egne pakker
7.4.1. Eksempel på brugen af egne pakker
7.4.2. Navngive pakker
7.4.3. Pakke klasser i JAR-filer (Java-arkiver)
7.5. Opgaver
8. Lokale, objekt- og klassevariable
8.1. Eksempler i standardpakkerne
8.1.1. Klassevariable
8.1.2. Klassemetoder
8.2. Lokale variabler og parametre
8.2.1. Parametervariable
8.2.2. Rekursion
9. Arrays
9.1. Erklæring og brug
9.1.1. Eksempel: Statistik
9.2. Main-metoden
9.3. Arrays med startværdier
9.4. Gennemløb og manipulering
9.5. Array af objekter
9.5.1. Polymorfi
9.6. Arrays versus vektorer
9.7. Opgaver
10. Appletter og grafik
10.1. HTML-dokumentet
10.2. Javakoden
10.2.1. Metoder i appletter, som du kan kalde
10.2.2. Metoder i appletter, som systemet kalder
10.2.3. Eksempel
10.3. Opgaver
10.4. Appendiks
10.4.1. Metoder i appletter, som du kan kalde
10.4.2. Metoder, som systemet kalder
10.4.3. Klassen Graphics
11. Grafiske brugergrænseflader
11.1. Generering med et værktøj
11.1.1. Interaktive programmer
11.2. 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. FlowLayout
11.6.2. BorderLayout
11.6.3. GridBagLayout
11.7. Opgave: Matadorspillet grafisk
11.7.1. Vink
11.7.2. Flere vink
12. Interfaces - grænseflader til objekter
12.1. Definere et interface
12.2. Implementere et interface
12.2.1. Variabler af type Tegnbar
12.3. Eksempler med interfacet Tegnbar
12.3.1. En applet af Tegnbare objekter
12.4. Polymorfi
12.5. Interfaces i standardbibliotekerne
12.5.1. Sortering med Comparable
12.5.2. Flere tråde med Runnable
12.5.3. Lytte til musen med MouseListener
12.6. Opgaver
13. Hændelser i grafiske brugergrænseflader
13.1. Eksempel - LytTilMusen
13.2. Eksempel - Linjetegning
13.2.1. Linjetegning i én klasse
13.3. Ekstra eksempler
13.3.1. Lytte til musebevægelser
13.3.2. Lytte til en knap
13.4. Lyttere og deres metoder
13.4.1. ActionListener
13.4.2. ComponentListener
13.4.3. FocusListener
13.4.4. ItemListener
13.4.5. KeyListener
13.4.6. MouseListener
13.4.7. MouseMotionListener
13.4.8. TextListener
13.4.9. WindowListener
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. At fange flere slags undtagelser
14.6. Opgaver
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. Opdele inddata (StringTokenizer)
15.4.2. Konvertere til tal
15.4.3. DecimalFormat og DateFormat-klasserne
15.4.4. Samlet eksempel: Statistik
15.5. Appendiks
15.5.1. Navngivning
15.5.2. Binære data ( -OutputStream og -InputStream)
15.5.3. Tekstdata ( -Writer og -Reader)
15.5.4. Fillæsning og -skrivning (File- )
15.5.5. Strenge (String- )
15.5.6. Arrays (ByteArray- og CharArray- )
15.5.7. Læse/skrive objekter (Object- )
15.5.8. Dataopsamling (Buffered- )
15.5.9. Gå fra binære til tegnbaserede datastrømme
15.5.10. Filtreringsklasser til konvertering og databehandling
15.6. Ekstra eksempler
15.7. Opgaver
16. Netværkskommunikation
16.1. At forbinde sig til en port
16.2. At lytte på en port
16.3. Opgaver
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. En flertrådet applet med bolde
17.3. 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
19. RMI - objekter over netværk
19.1. Principper
19.2. Konkret
19.2.1. På serversiden
19.2.2. På klientsiden
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. Samlet eksempel
20.4. Opgaver
21. Avancerede klasser
21.1. public, protected og private
21.1.1. Variabler og metoder
21.1.2. Klasser
21.2. Nøgleordet final
21.2.1. Variabler
21.2.2. Metoder
21.2.3. Klasser
21.3. Nøgleordet abstract
21.3.1. Klasser
21.3.2. Metoder
22. Indre klasser
22.1. Almindelige indre klasser
22.1.1. Eksempel - Linjetegning
22.2. Lokale klasser
22.3. Anonyme klasser
22.3.1. Eksempel - filtrering af filnavne
22.3.2. Eksempel - Linjetegning
22.3.3. Eksempel - tråde
22.4. Opgaver
23. Objektorienteret analyse og design
23.1. Krav til programmet
23.2. Objektorienteret analyse
23.2.1. Skrive vigtige ord op
23.2.2. Brugsmønstre
23.2.3. Aktivitetsdiagrammer
23.2.4. Skærmbilleder
23.3. Objektorienteret design
23.3.1. Kollaborationsdiagrammer
23.3.2. Klassediagrammer
24. Internationale programmer
24.1. Indledning
24.2. Lokalindstillinger
24.2.1. Oprettelse af en lokalindstilling
24.2.2. Tilgængelige lokalindstillinger
24.3. Ressourcebundter
24.3.1. Generelt om ressourcebundter
24.3.2. Lagring af tekst i ressourcefiler
24.3.3. Lagring af ressourcer i klasser
24.4. Parametriserede beskeder
24.5. Formatering af datoer og klokkeslæt
24.5.1. Prædefineret formater
24.5.2. Egne formater
24.6. Formatering af tal og beløb
24.6.1. Prædefineret formater
24.7. Tekster og tegn
24.7.1. Analyse af tegn
24.7.2. Sammenligning af strenge
24.7.3. Analyse af grænser i tekst
A. Revisionshistorie for bogen
Tabelliste
3-1. Simple variabeltyper i Java
3-2. Java
3-3. Java
3-4. Java
3-5. Java
3-6. Java
4-1. Java
11-1. Java
11-2. Java
11-3. Java
11-4. Java
11-5. Java
11-6. Java
11-7. Java
21-1. Adgangsregler
24-1. Dato og klokkeslætmønstre
Figurliste
1. ÅDL
2. Christian Damsgaard
3. Jonas Kongslund
4. Jacob Nordfalk
2-1. Borland JBuilder
2-2. Oracle JDeveloper
2-3. Sun Forte for Java
2-4. IBM VisualAge for Java
2-5. Grafisk JUnit TestRunner
3-1. Oversættelse og udførelse af programmet HejVerden
3-2. Efter 1. tildeling
3-3. Efter 2. tildeling
3-4. Logikken i en if-sætning
3-5. Rutediagram for Alder
3-6. Logikken i en if-else-sætning
3-7. Logikken i en while-løkke
3-8. Rutediagram for noget af Alder4
3-9. Rutediagram for Syvtabel
3-10. Strukturen i en for-løkke
3-11. Rutediagram for Syvtabel2 (samme som for Syvtabel)
4-1. Java
4-2. Java
4-3. Java p refererer til et punktobjekt.Objektet har x=0 og y=0
4-4. Efter tildeling af p.x og p.y
4-5. Efter kald af move(200,300)
4-6. Java
4-7. Java
4-8. Java
4-9. s refererer ikke til noget
4-10. s refererer nu til en streng
4-11. Java
4-12. Java
4-13. Java
5-1. Java
5-2. Java
5-3. Java
5-4. Java
5-5. this virker som en variabel der refererer til objektet selv
5-6. Java
5-7. En Person har to String-objekter. Disse er undtagelsesvist også vist
5-8. Java
6-1. Java
6-2. Java
6-3. Snydespil2MedPolymorfiefter punkt A
6-4. Efter punkt A(programmet vil ikke oversætte)
6-5. Efter punkt A
6-6. Java
6-7. Java
6-8. Boks3medDensitet tillader oprettelse på to måder
6-9. Java
8-1. Java
10-1. Java
10-2. Java
11-1. Java
11-2. Java
11-3. En trykknap. Egenskaben label angiver, hvad der står på knappen.
11-4. Et afkrydsningsfelt. Kan både bruges til flueben og til radioknapper. Hvis man skal have radioknapper (der gensidigt udelukker hinanden), skal objekterne knyttes sammen af et CheckboxGroup-objekt.
11-5. En valgliste. Brug metoden add(String elementnavn) til at tilføje indgange.
11-6. Et indtastningsfelt på en linje. Egenskaben text angiver, hvad der står i feltet.
11-7. Et indtastningsfelt på flere linjer.
11-8. En mærkat der viser en tekst (som brugeren ikke kan redigere i).
11-9. En menu, hvor flere af indgangene kan ses samtidigt, og hvor man kan vælge en eller flere elementer. Brug metoden add(String elementnavn) til at tilføje indgange.
11-10. Java
11-11. Java
11-12. Java
11-13. Java
11-14. Java
11-15. Et grafisk matadorspil
12-1. Java
13-1. Java
14-1. Java
15-1. Java
15-2. Java
15-3. Java
15-4. Java
16-1. Java
17-1. Java
17-2. Java
19-1. Java
19-2. Java
23-1. Java
23-2. Tur
23-3. Java
23-4. Java
23-5. Java
23-6. Java
23-7. Java
23-8. Java
23-9. Java
23-10. Java
23-11. Java