| Forord |
1 | Datamaskiner og programmeringsspråk |
| 1.1 | Programmering |
| 1.2 | Oppbygningen av programmer |
| 1.3 | Programmeringsspråket Java |
| 1.4 | Redigering av kildekode |
| 1.5 | Utviklingsverktøy for Java |
| 1.6 | Kompilering av Java-programmer |
| 1.7 | Kjøring |
| 1.8 | Den virtuelle Java-maskinen |
| 1.9 | Kontrollspørsmål |
| 1.10 | Oppgaver |
2 | Grunnleggende språkkonstruksjoner |
| 2.1 | Utskrift til terminalvindu |
| 2.2 | Lokale variabler |
| 2.3 | Heltall og flyttall |
| 2.4 | Aritmetiske uttrykk og operatorer |
| 2.5 | Formatert utskrift |
| 2.6 | Innlesing av numeriske verdier fra tastaturet |
| 2.7 | Sannhetsuttrykk |
| 2.8 | Kontrollflyt |
| 2.9 | Valgsetninger |
| 2.10 | Sammensatte sannhetsuttrykk |
| 2.11 | Løkker |
| 2.12 | Påstander |
| 2.13 | Kontrollspørsmål |
| 2.14 | Oppgaver |
3 | Bruk av objekter |
| 3.1 | Innføring i objektmodellen |
| 3.2 | Strenger |
| 3.3 | Manipulering av referanser |
| 3.4 | Håndtering av primitive verdier som objekter |
| 3.5 | Mer om kontrollflyt |
| 3.6 | Tabeller |
| 3.7 | Mer om iterering over samlinger: den forenklete for-løkken |
| 3.8 | Pseudo-slumptallsgenerator |
| 3.9 | Kontrollspørsmål |
| 3.10 | Oppgaver |
4 | Utforming av egne klasser |
| 4.1 | Klassedeklarasjoner |
| 4.2 | Definisjon av egenskaper: feltvariabler |
| 4.3 | Definisjon av atferd: instansmetoder |
| 4.4 | Statiske medlemmer i en klasse |
| 4.5 | Initialisering av objekttilstand |
| 4.6 | Oppramstyper |
| 4.7 | Kontrollspørsmål |
| 4.8 | Oppgaver |
5 | Objektkommunikasjon |
| 5.1 | Ansvar og roller |
| 5.2 | Kommunikasjon og samarbeid |
| 5.3 | Forbindelser mellom objekter |
| 5.4 | Overlasting av metodenavn |
| 5.5 | Dokumentering av kildekode |
| 5.6 | Kontrollspørsmål |
| 5.7 | Oppgaver |
6 | Arv |
| 6.1 | Sentrale begreper ved arv |
| 6.2 | Utvidelse av egenskaper og atferd |
| 6.3 | Bruk av arvede medlemmer |
| 6.4 | Utvidelse at atferd i subklassen |
| 6.5 | Klasser og metoder som ikke kan utvides |
| 6.6 | Kontrollspørsmål |
| 6.7 | Oppgaver |
7 | Polymorfisme og kontrakter |
| 7.1 | Programmering med arv |
| 7.2 | Kontrakter i Java |
| 7.3 | Abstrakte klasser |
| 7.4 | Javas bruk av abstrakte og endelige klasser |
| 7.5 | Kontrollspørsmål |
| 7.6 | Oppgaver |
8 | Programutvikling |
| 8.1 | Utvikling av større programmer |
| 8.2 | Enkel testing med assert |
| 8.3 | Testrammeverk |
| 8.4 | Utskrift av spillebrett |
| 8.5 | Refaktorering av programkode |
| 8.6 | Interaktivt fire-på-rad spill |
| 8.7 | Avslutting av spill |
| 8.8 | Maskinstyrt spiller |
| 8.9 | Klassebibliotek |
| 8.10 | Innkapsling og informasjonsskjuling |
| 8.11 | Basisklasser |
| 8.12 | Kompilering og kjøring av kode i pakker |
| 8.13 | Kontrollspørsmål |
| 8.14 | Oppgaver |
9 | Enkle algoritmer for sortering og søking |
| 9.1 | Ordnede datamengder |
| 9.2 | Sortering ved utvalg |
| 9.3 | Sortering ved innsetting |
| 9.4 | Boblesortering |
| 9.5 | Sortering av tabeller med strenger |
| 9.6 | Lineært søk |
| 9.7 | Binært søk |
| 9.8 | Programutvikling: en enkel CD-samling |
| 9.9 | Sortering og søking i Javas standardbibliotek |
| 9.10 | Kontrollspørsmål |
| 9.11 | Oppgaver |
10 | Bruk av dynamiske datastrukturer |
| 10.1 | Oversikt |
| 10.2 | Dynamiske strenger: StringBuilder |
| 10.3 | Innføring i generiske typer |
| 10.4 | Samlinger |
| 10.5 | Dynamiske tabller: ArrayList<E> |
| 10.6 | Mengder: HashSet<E> |
| 10.7 | Nøkkeltabeller: HashMap<E> |
| 10.8 | Mer om generiske typer |
| 10.9 | Utvalgte sorterings- og søkemetoder i standardbiblioteket |
| 10.10 | Kontrollspørsmål |
| 10.11 | Oppgaver |
11 | Implementering av dynamiske datastrukturer |
| 11.1 | Kjedete lister |
| 11.2 | Andre abstrakte datatyper: stabler og køer |
| 11.3 | Kontrollspørsmål |
| 11.4 | Oppgaver |
12 | Rekursjon |
| 12.1 | Rekursjon og iterasjon |
| 12.2 | Rekursive algoritmer |
| 12.3 | Uendelig rekursjon |
| 12.4 | Rekursivt binært søk |
| 12.5 | Tårn i Hanoi |
| 12.6 | Rekursiv sorteringsalgoritme |
| 12.7 | Tilfeller hvor iterative løsninger er bedre |
| 12.8 | Kontrollspørsmål |
| 12.9 | Oppgaver |
13 | Unntakshåndtering |
| 13.1 | Hva er et unntak? |
| 13.2 | Metodeutføring og unntakspropagering |
| 13.3 | Unntakshåndtering |
| 13.4 | Unntaksklasser |
| 13.5 | Eksplisitt kasting av et unntak |
| 13.6 | Håndtering av flere unntak |
| 13.7 | Håndtering av kontrollerte unntak |
| 13.8 | Definere egne unntak |
| 13.9 | Bruk av finally-blokk |
| 13.10 | Kontrollspørsmål |
| 13.11 | Oppgaver |
14 | Filer og strømmer |
| 14.1 | Strømmer |
| 14.2 | Filbehandling |
| 14.3 | Tekstfiler |
| 14.4 | Terminalvindu I/O |
| 14.5 | Binære filer |
| 14.6 | Objektserialisering |
| 14.7 | Direkte filtilgang |
| 14.8 | Kontrollspørsmål |
| 14.9 | Oppgaver |
15 | Grafiske brukergrensesnitt |
| 15.1 | Enkel dialogutforming med klassen JOptionPane |
| 15.2 | Oversikt over GUI-utvikling |
| 15.3 | Komponenter og containere |
| 15.4 | GUI-kontrollkomponenter |
| 15.5 | Utforming av layout |
| 15.6 | Hendelsesdrevet programmering |
| 15.7 | Anonymklasser som lyttere |
| 15.8 | Programmeringsmodellen for GUI-applikasjoner |
| 15.9 | GUI for fire-på-rad-spill |
| 15.10 | Kontrollspørsmål |
| 15.11 | Oppgaver |
A | Fasit til kontrollspørsmål |
| A.1 | Datamaskiner og programmeringsspråk |
| A.2 | Grunnleggende språkkonstruksjoner |
| A.3 | Bruk av objekter |
| A.4 | Utforming av egne klasser |
| A.5 | Objektkommunikasjon |
| A.6 | Arv |
| A.7 | Polymorfisme og kontrakter |
| A.8 | Programutvikling |
| A.9 | Enkle algoritmer for sortering og søking |
| A.10 | Bruk av dynamiske datastrukturer |
| A.11 | Implementering av dynamiske datastrukturer |
| A.12 | Rekursjon |
| A.13 | Unntakshåndtering |
| A.14 | Filer og strømmer |
| A.15 | Grafiske brukergrensesnitt |
B | Reserverte ord i Java |
C | Oversikt over Java-operatorer |
D | Utdrag av Unicode-tegnsett |
E | Tallsystemer og tallrepresentasjon |
| E.1 | Tallsystemer |
| E.2 | Konvertering mellom 2-, 8- og 16-tallsystemene |
| E.3 | Konvertering fra 10-tallsystemet |
| E.4 | Heltallsrepresentasjon |
| E.5 | Tekstrepresentasjon av heltall |
F | Java-programutviklingsverktøy |
| F.1 | Programutviklingsverktøy |
| F.2 | Kommandoer |
| F.3 | Sette klassesti |
G | Innføring i UML |
| G.1 | Klassediagram |
| G.2 | Objektdiagram |
| G.3 | Sekvensdiagram |
| G.3 | Aktivitetsdiagram |
H | Innføring i snutter |
| H.1 | Klasser og metoder for snutter |
| H.2 | Kjøring av snutter |
| H.3 | En snutt med hendelseshåndtering og parametere |
| H.4 | Sammenligning av snutter og applikasjoner |
I | Formatering av utskrift |
| I.1 | Syntaks for formatstrenger |
| I.2 | Konverteringskoder og konverteringsflagg |
| I.3 | Eksempler |
| Engelsk stikkordliste |
| Stikkordsliste |