INNHOLDSFORTEGNELSE. 1. HOVEDEMNER... 1-i 1. INNHOLDSFORTEGNELSE... 1-i 1. Datamaskiner og programmeringsspråk...1-1



Like dokumenter
INNHOLDSFORTEGNELSE. 1. HOVEDEMNER... 1-i 1. INNHOLDSFORTEGNELSE... 1-i 1. Datamaskiner og programmeringsspråk...1-1

Kapittel 5: Objektkommunikasjon

Innhold Forst a program

Kapittel 1: Datamaskiner og programmeringsspråk

Kapittel 1: Datamaskiner og programmeringsspråk

Innhold. 3.7 Å lese data fra brukeren Klassen String Å formatere utskrift av desimaltall... 80

Innhold Innledning 1. 5 Løkke som kontrollstruktur Et program med løkke som kontrollstruktur 132. vii

Innhold Forstå program iii

AlgDat 12. Forelesning 2. Gunnar Misund

Forord. Temaer som er vektlagt. Presentasjon av konsepter

Innhold. Forord Det første programmet Variabler, tilordninger og uttrykk Innlesing og utskrift...49

Kapittel 1: Datamaskiner og programmeringsspråk. Java som første programmeringsspråk

Kapittel 8: Sortering og søking

AlgDat 10. Forelesning 2. Gunnar Misund

Kapittel 9: Sortering og søking Kort versjon

Innhold. Innledning 1

Kapittel 5: Objektkommunikasjon

Forord. Hva som er nytt i denne utgaven

Kapittel 2: Grunnleggende programelementer

Kapittel 12: Rekursjon

Kapittel 12: Rekursjon

Kapittel 6: Arv. Redigert av: Khalid Azim Mughal

Definisjon av binært søketre

Kapittel 1: Datamaskiner og programmeringsspråk. Java som første programmeringsspråk

Pensum: fra boken (H-03)+ forelesninger

Kapittel 7: Mer om arv

Pensum: fra boken (H-03)+ forelesninger

Kapittel 9: Sortering og søking Kort versjon

Kapittel 9: Sortering og søking Kort versjon

Kapittel 8: Sortering og søking INF100

Kapittel 8: Sortering og søking INF100

Fra Kap.10 Binære søketre (BS-tre) Sist oppdatert Definere en abstrakt datastruktur binært søketre. Vise hvordan binær søketre kan brukes

Innhold uke 10. Objektorientert programmering i Python. Oblig 7 og 8. IN1000 Seminar! IN1000 Høst 2018 uke 10 Siri Moe Jensen

Plan for dagen. Vprg 4. Dagens tema - filbehandling! Strømmer. Klassen FilLeser.java. Tekstfiler

Kapittel 11: Unntakshåndtering. Java som første programmeringsspråk

Kapittel 11: Unntakshåndtering. Java som første programmeringsspråk

Kapittel 9: Sortering og søking Kort versjon

IN1010 V18, Obligatorisk oppgave 5

Kap3: Klassemodellering

Beskrivelse av programmeringsspråket Compila15 INF Kompilatorteknikk Våren 2015

Definisjon: Et sortert tre

Typer. 1 Type: boolean. 2 Verdimengde: {true, false} 3 Operatorer: NOT, AND, OR... 1/19. Forelesning Forelesning

INF3110 Programmeringsspråk. Dagens tema. Typer (Kapittel 3 frem til ) Innføring i ML (Kapittel & ML-kompendiet.) 1/19

UNIVERSITETET I OSLO

Eksamen. Objektorientert Programmering IGR 1372

Rekursjon. Binærsøk. Hanois tårn.

Obligatorisk oppgave 5: Labyrint

Kapittel 3: Bruk av objekter

Kapittel 3: Bruk av objekter

Rekursjon som programmeringsteknikk

Operativsystemer og grensesnitt

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

TDT4105 Informasjonsteknologi, grunnkurs

UNIVERSITETET I OSLO

Velkommen til. INF våren 2016

Binære søketrær. Et notat for INF1010 Stein Michael Storleer 16. mai 2013

Læreboken på 45 minutter

Kapittel 13: Unntakshåndtering

Kapittel 13: Unntakshåndtering

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

Kapittel 9: Dynamiske datastrukturer - del I. Java som første programmeringsspråk

Kapittel 9: Dynamiske datastrukturer - del I. Java som første programmeringsspråk

Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1

Kapittel 8: Programutvikling

UNIVERSITETET I OSLO

Oppsummering. I. HVA VAR DET? I.1 ADTer og Programutvikling I.2 Datastrukturer I.3 Algoritmer II. PENSUM III.EKSAMEN IV. ØNSKER

EKSAMENSOPPGAVE. INF-1101 Datastrukturer og algoritmer. Adm.bygget, rom K1.04 og B154 Ingen

Algoritmer og datastrukturer E Løkker i Java

Java-kurs. Andreas Knudsen Nils Grimsmo 9th October 2003

alternativer til sortering og søking binære trær søketrær Ikke-rekursiv algoritme som løser Hanois tårn med n plater

EKSAMEN. Dato: 18. mai 2017 Eksamenstid: 09:00 13:00

UNIVERSITETET I BERGEN Det matematisk-naturvitenskapelige fakultet

In105 Programmering i Java de første skritt

Kapittel 2: Grunnleggende programelementer

Dagens temaer. Sortering: 4 metoder Søking: binærsøk Rekursjon: Hanois tårn

Strukturering av programmer

Klasser skal lages slik at de i minst mulig grad er avhengig av at klienten gjør bestemte ting STOL ALDRI PÅ KLIENTEN!

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

INF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel )

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum

Kapittel 1. Datamaskiner og programmeringsspråk. 1.1 Programmering

Rekursiv programmering

Innhold. INF1000 Høst Hva skal evalueres? Fra kurssidene. Hvorfor har vi en lærebok? Uke 11: Repetisjon og pensumgjennomgang

Hva er en metode. Hva skjer når vi kaller en metode

Ark 1 av 18. programmeringsspråkenes. Velkommen til IN 211. verden. IN 211 Programmeringsspråk

INF1010 LISTER. Listeelementer og listeoperasjoner. Foran. Bak

1 OM PLS-ER Historikk Utviklingen de senere år Kort om oppbygning Inn- og Utganger... 11

Læreplan i informasjonsteknologi - programfag i studiespesialiserende utdanningsprogram

Repetisjon: Statiske språk uten rekursive metoder (C1 og C2) Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

Innhold. Hva skal evalueres? Fra kurssidene. Kapittel 1: Introduction

Innhold. IN1000 Høst Hva skal evalueres? Fra kurssidene. Uke 12: Pensumgjennomgang og eksamenstips

Feilmeldinger, brukerinput og kontrollflyt

Excited. Hvordan komme i gang med tekstbasert programmering? Centre for Excellent IT Education. Guttorm Sindre

Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

Heap* En heap er et komplett binært tre: En heap er også et monotont binært tre:

Generelt om operativsystemer

Hva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

Dagens tema. Sortering. Fortsettelse om programmering vha tråder.

Transkript:

INNHOLDSFORTEGNELSE 1. HOVEDEMNER... 1-i 1. INNHOLDSFORTEGNELSE... 1-i 1. Datamaskiner og programmeringsspråk...1-1 Emneoversikt... 1-2 Mål med kurset: problemløsing på datamaskin... 1-3 Hva er et program?... 1-4 Syntaks, semantikk, pragmatikk... 1-5 Programmeringsmetodikk: Objektorientert programmering (OOP)... 1-6 Læremåte... 1-7 Datamaskinens virkemåte: analogi... 1-8 Datamaskin og programvare: løk-modellen... 1-10 To utsnitt (views) av et program (som også er et objekt)... 1-11 Programoversettelse... 1-12 Dataspråk... 1-13 Programoversettelse for Java... 1-14 Java modell... 1-15 Java plattformuavhengighet... 1-16 Makinvarekonfigurasjon... 1-17 Nettverk... 1-18 Verktøy: Java Development Kit (JDK 5.0)... 1-19 State-of-the-art kurs i programmering... 1-20 Programmering er tidskrevende!... 1-21 i/xvii

Programmeringsspråk: Java...1-22 Java programstruktur og -miljø...1-23 Et enkelt selvstendig program...1-24 Fremgangsmåten for å skrive og kompilere et program...1-28 2. Grunnleggende programelementer...2-1 Emneoversikt...2-2 Et språk = syntaks + semantikk...2-3 Datamaskinens språk : binært tallsystem...2-4 Konvertering mellom tallsystemer...2-5 Identifikatorer og litteraler...2-8 Grunnleggende enheter...2-9 Programdokumentering v.h.a. kommentarer...2-10 Data...2-11 Verdier og objekter i Java...2-12 Primitive datatyper og variabler...2-13 Oppsummering: Primitive datatyper...2-14 Deklarasjon av variabler...2-15 Lager og verdier...2-16 Uttrykk...2-17 Entydighetsregler: presedens og assosiativitet til operatorer...2-19 Aritmetiske uttrykk...2-20 Tilordningsoperator...2-24 Innlesing av tall fra terminalen...2-25 Enkelt valg: Endring av kontrollflyt...2-27 Sannhetsuttrykk...2-28 (Verdi-) Sammenligningsoperatorer...2-29 ii/xvii

Kontrollflyt: if-setning...2-30 Setninger...2-32 "Lokal" blokk... 2-32 Avslutningstegn: ;... 2-32 Kontrollflyt: if-else-setning...2-34 Eksempel: if-else-setning...2-35 Logiske operatorer...2-36 Kortsluttende logiske operatorer...2-37 De Morgans lover...2-41 Programfeil i Java...2-45 Programlesbarhet...2-47 Utdrag: Presedensrangering (i avtagende rekkefølge)...2-48 Programutviklingsprosess...2-49 Programutviklingsprosess...2-50 Oversikt: løkker...2-53 while-løkke...2-54 Inkrement- og dekrementoperatorer...2-55 Problemløsing: topp-ned stegvis forfining...2-56 Algoritmeutforming...2-57 Eksempel: vakt-kontrollert repetisjon...2-58 Fremgangsmåten ved skriving av et program...2-59 Algoritmeutforming (strykprosent)...2-61 Eksempel: teller-kontrollert repetisjon...2-62 do-while-løkke...2-65 Sammenligning: while og do-while... 2-67 Påstander...2-69 Påstander: assert-setning...2-70 iii/xvii

Kjøring med påstander...2-71 Eksempel på påstand den enkle formen...2-72 Eksempel på påstand med tilleggsinformasjon...2-75 Merknader om påstander...2-77 3. Bruk av objekter...3-1 Emneoversikt...3-2 Innføring i objektmodellen...3-3 Hva menes med en abstraksjon?...3-4 Modellering av abstraksjoner v.h.a. klasser...3-6 Klassedeklarasjoner...3-7 Kildekode for klassen Lys...3-9 Objekter som instanser av klasser...3-10 Opprettelse av objekter...3-11 Referanser og referanseverdier...3-13 Kommunikasjon mellom objekter v.h.a. meldinger...3-15 Sekvensdiagram... 3-15 Manipulering av referanser...3-18 Klassen java.lang.string... 3-20 Tegnsett...3-21 Tegn og strenger...3-22 Strenger...3-23 To viktige String-metoder...3-25 Strengsammenslåing: +... 3-26 Strengsammenligning...3-27 String-objekter...3-28 Andre String-metoder (Program 3.3, s. 63)...3-29 iv/xvii

for-løkke...3-31 Definisjonsområde til løkkevariabelen i for-løkke...3-33 Fremgangsmåten ved skriving av et program...3-34 Mer om for-løkke...3-37 Nøstede løkker...3-39 "Baklengs" for-løkke... 3-39 Valg av løkker... 3-42 break-setning i løkker...3-43 continue-setning i løkker...3-44 Mer om vaglsetning: switch-setning...3-45 Tabeller...3-50 Tabeller: grafisk notasjon...3-55 Fler-dimensjonale tabeller: tabeller av tabeller...3-56 Lagring av tabell-elementer...3-57 Programmønstre noen enkle algoritmer...3-58 Mer om initialisering av tabeller...3-59 Histogram...3-60 4. Utforming av egne klasser...4-1 Emneoversikt...4-2 Klassedeklarasjon...4-3 Utforming av klassen Lys...4-4 Deklarasjon av egenskaper: feltvariabler...4-5 Objekter...4-6 Referansedeklarasjon...4-7 Objektopprettelse...4-8 Konstruktørkall...4-9 v/xvii

Den implisitte standardkonstruktøren...4-10 Standardverdier (default values) for feltvariabler...4-11 Deklarasjon av atferd: metoder...4-12 Klassen Lys: metoder...4-13 Adgangsmodifikatorer...4-15 Returverdi... 4-15 Signatur: Metodenavn og formelle parametere...4-16 Metodekropp og return-setning...4-17 Lokale variabler og feltvariabler...4-18 Forskjeller mellom feltvariabler og lokale variabler...4-19 Lokal blokk...4-20 Metodeklassifisering...4-21 Meldinger: Metodekall...4-22 Metoder uten parametere...4-24 Parameterangivelse i metodekall: Aktuelle parametere...4-25 Parameterdeklarasjon: Formelle parametere...4-26 Parameteroverføring: referanserverdi for objekter...4-27 Parameteroverføring: verdier av primitive datatyper (I)...4-28 Parameteroverføring: verdier av primitive datatyper (II)...4-29 Parameteroverføring: referanseverdien til tabeller...4-30 Parameteroverføring: tabellelement av primitiv type...4-31 Parameteroverføring: tabell av tabeller...4-32 Samsvar mellom formelle og aktuelle parametere...4-33 Eksempler med parameteroverføring...4-34 Implisitt konvertering under parameteroverføring...4-35 Oppsummering...4-38 Det aktuelle objektet: this...4-39 vi/xvii

Eksempel: Bruk av this...4-40 Statiske medlemmer i klasser...4-41 Merknader om statiske medlemmer...4-43 Eksempel: statiske medlemmer...4-44 Å referere til medlemmer innad i klassen...4-46 Klassemedlemmer...4-47 Typer...4-48 Definisjonsområde...4-49 Levetid...4-50 Kommandolinjeargumenter...4-52 Konstruktører...4-53 Konstruktørdeklarasjon...4-54 Den eksplisitte standardkonstruktøren...4-56 Ikke-standardkonstruktører...4-57 Konstruktøroverlasting...4-58 En del merknader om konstruktører...4-59 5. Objektkommunikasjon...5-1 Emneoversikt...5-2 Ansvar og roller...5-3 Lage gode abstraksjoner...5-4 Programmeringsmetodologi: strukturert programmering...5-5 Gjentakelse i programkode...5-6 Kode med mindre gjentakelser og bedre abstraksjoner...5-9 Kommunikasjon og samarbeid...5-11 Forbindelser: UML-notasjon...5-12 Eksempel på forbindelser...5-13 vii/xvii

Objekteierskap...5-14 Innkapsling...5-15 Skjuling av informasjon...5-16 Data-abstraksjon vha. skjuling av informasjon...5-17 Klasseutforming...5-18 Metodeoverlasting...5-19 Dokumentering av kildekode...5-20 Hvilken av disse funksjonene er enklest å forstå?...5-21 Javadoc kommentarer...5-22 Eksempel: CD-samling...5-23 Javadoc...5-30 Generert dokumentasjon (javadoc)...5-31 Erfaring...5-32 6. Arv...6-1 Emneoversikt...6-2 Arv: motivasjon og sentrale begreper...6-3 Arv: viktige begreper...6-4 Et første eksempel på bruk av arv...6-5 Utvidelse av egenskaper og atferd...6-6 Superklassen: Lys... 6-7 Superklasse-konstruktører...6-9 Bruk av this() og super() i konstruktører...6-10 Klienters bruk av subklasse-objekter...6-11 Bruk av arvede medlemmer...6-13 Superklassereferanser og subklasseobjekter...6-17 Overkjøring av instansmetoder...6-18 viii/xvii

Overskygging av feltvariabler...6-19 Endelige klasser og medlemmer (final)...6-20 Konvertering av referanser...6-22 Sub er-en Sup...6-23 Eksempel: Brus-automater...6-24 OOP (Objektorientert programmering)...6-45 Metoder + data = objekter... 6-45 7. Mer om arv...7-1 Emneoversikt...7-2 Programmering med arv...7-3 Polymorfe referanser...7-4 Dynamisk metodeoppslag...7-5 Bruk av polymorfe referanser...7-6 Konsekvenser av polymorfisme...7-8 Kontrakter i Java...7-9 Arvhierarki...7-13 Bruk av kontrakter for å håndtere objekter av flere typer...7-14 Oppsummering av kontrakter i Java...7-17 Abstrakte klasser...7-18 Arv kontra aggregering...7-24 Innkapsling av primitive datatyper...7-25 Nyttige metoder i klasseinnpakninger...7-28 Synlighet: Pakker...7-30 Synlighet: Pakkehierarki i Java...7-31 Pakkehierarki tilsvarer filhierarki...7-40 Metodebinding...7-49 ix/xvii

Overkjøring kontra Overlasting...7-50 Substitusjonsprinsippet - Liskov...7-53 8. Sortering og søking...8-1 Emneoversikt...8-2 Pseudokode...8-3 Ordnede datamengder...8-4 Boblesortering...8-5 Sortering ved utvalg...8-6 Sortering ved innsetting...8-7 Kontrakten Comparable...8-8 Sortering av objekter...8-9 Linært søk...8-10 Binært søk...8-11 Binært søk for objekter...8-13 Eksempel: sortering og søking med objekter...8-14 Eksempel: sortering og søking med objekter (forts.)...8-16 Eksempel: sortering og søking med objekter (forts.)...8-17 9. Dynamiske datastrukturer - del I...9-1 Emneoversikt...9-2 Dynamiske datastrukturer...9-3 Abstrakte datatyper: ADT = datastruktur + kontrakt... 9-3 Dynamiske strenger: StringBuffer-klassen...9-4 Operasjoner på strengbuffere...9-6 StringBuffer-objekt...9-7 Operasjoner på strengbuffere (forts.)...9-8 x/xvii

Operasjoner på strengbuffere (forts.)...9-9 Samlinger...9-10 Kontrakten Collection<E>...9-11 Mengdelæren...9-13 Traversering av en samling...9-14 Dynamiske tabeller: ArrayList<E>...9-15 Dynamiske tabeller (DynamiskTabKlient.java)...9-16 Mengder: HashSet<E>...9-17 Eksempel: Mengder (MengdeKlient.java)...9-18 Eksempel: Lage en dynamisk tabell uten duplikater (Duplikater.java)...9-19 Nøkkeltabeller: HashMap<K,V>...9-20 Kontrakten Map<K,V>...9-21 Basisoperasjoner i kontrakten Map<K,V>...9-22 Eksempel: Basisoperasjoner i kontrakten Map<K,V>...9-23 Nøkkeltabellutsnitt...9-25 Bruk av nøkkeltabeller (NoekkelTabKlient.java)...9-27 9. Dynamiske datastrukturer - del II...9-1 Emneoversikt...9-2 Kjedete lister...9-3 Klassen Node...9-4 Klassediagram for enkel kjedet liste (Figur 9.4)...9-5 En konkret kjedet liste med strenger... 9-5 Kontrakten IKjedetListe<E>...9-7 Klassen KjedetListe<E>...9-8 Innsetting foran i en kjedet liste (Program 9.7)...9-9 Innsett en node foran i en kjedet liste (Figur 9.6)...9-10 xi/xvii

Innsetting bak i en kjedet liste...9-11 Innsett en node bak i en kjedet liste (Figur 9.7b og c)...9-12 Sletting foran i en kjedet liste...9-13 Slett node foran i en kjedet liste (Figur 9.8b og c)...9-14 Sletting bak i en kjedet liste (Program 9.7)...9-15 Slett en node bak i en kjedet liste (Figur 9.10, stegene 3 og 4)...9-17 Sletting inne i en kjedet liste (Program 9.7)...9-19 Sletting av en node inne i listen (Figur 9.11, steg 1)...9-20 Sletting av en node inne i listen (Figur 9.11, steg 2)...9-22 Data kan deles mellom kjedete lister...9-26 Datastrukturen stabel...9-27 Stabeloperasjoner...9-28 Stabelimplementering ved aggregering...9-29 Klient som bruker en stabel (StabelKlient.java)...9-31 Bruk av stabler...9-33 Rutenett som graf...9-34 Problemstilling...9-35 Steg for å finne byer som kan nås fra bynummer 3...9-36 Eksempel: Graf...9-37 Datastrukturen kø...9-40 Køoperasjoner... 9-40 Køimplementering ved arv...9-41 Klient som bruker en kø (KoeKlient.java)...9-42 10. Rekursjon...10-1 Emneoversikt...10-2 Rekursjon...10-3 xii/xvii

To iterate is human; to recurse, divine... 10-3 Rekursive definisjoner...10-4 Rekursjon som problemløsningsteknikk... 10-5 Utforming av rekursjon...10-6 Fakultet funksjon...10-7 Eksempel: Iterativ utregning av fakultet...10-8 Eksempel: Rekursiv utregning av fakultet...10-9 Nøsting av metodekall...10-10 Rekursive algoritmer...10-11 Metodeaktivisering og rekursjonsdybde...10-12 Huskeregeler for bruk av rekursjon...10-13 Forskjellige typer rekursjon...10-14 Sammenligning av rekursjon og iterasjon...10-15 Binært søk...10-16 Java implementasjon av binærsøkalgoritme...10-19 Søke eksempel...10-20 Tårn i Hanoi...10-21 Tårn i Hanoi (en ring)...10-22 Tårn i Hanoi (to ringer)...10-23 Tårn i Hanoi: rekursiv algoritme...10-24 Programstabel som vokser og krymper...10-27 Rekursiv sorteringsalgoritme: Quicksort...10-28 Eksponentiell økning i antall metodekall...10-35 Fibonacci-serien...10-36 11. Unntakshåndtering...11-1 Emneoversikt...11-2 xiii/xvii

Hva er et unntak?...11-3 Litt om programutføring...11-4 Metodeutføring (Program 11.1)...11-6 Normal utføring (Figur 11.1)"kast og fang"-prinsippet...11-7 Unntakspropagering (ved heltallsdivisjon med 0) (Figur 11.2)...11-9 Unntakspropagering...11-10 Typiske scenarier ved bruk av try-catch-setning...11-12 try-catch-scenarier (Figur 11.4)... 11-13 try-catch-scenario 1...11-14 Unntakshåndtering (Program 11.2)...11-15 Unntakshåndtering (Figur 11.5) (scenario 1)...11-16 try-catch-scenario 2...11-17 Unntakshåndtering (Figur 11.6) (scenario 2)...11-18 try-catch-scenario 3...11-19 Unntakshåndtering (Program 11.3) (scenario 3)...11-20 Unntakshåndtering (Figur 11.7) (scenario 3)...11-22 Utdrag av unntaksklasser (Figur 11.8)...11-23 Utdrag av metoder fra Throwable-klassen (Tabell 11.1)...11-24 Unntaksklassen Exception og kontrollerte unntak...11-25 Unntaksklassen RuntimeException og ikke-kontrollerte unntak... 11-25 Unntaksklassen Error... 11-25 Eksplisitt kast av unntak (Program 11.4)...11-27 Definere egne unntakstyper...11-29 try-blokk med flere catch-blokker (Progam 11.5)...11-31 Typiske programmeringsfeil ved unntakshåndtering...11-34 Håndtering av kontrollerte unntak (Program 11.6)...11-38 Utføring av finally-blokk...11-41 xiv/xvii

Unntakskasting og arv...11-44 Oppsummering av unntakshåndtering...11-45 12. Filer og strømmer...12-1 Emneoversikt...12-2 Inn- og ut-data...12-3 Strømmer...12-4 Bytestrømmer og tegnstrømmer...12-5 Bytestrømmer (Figur 12.1)...12-6 Tegnstrømmer (Figur 12.2)...12-7 Filbehandling...12-8 Standard lengde for predefinerte datatyper (Tabell 12.1)...12-9 Filsti...12-10 Dataposter (Figur 12.3)...12-11 Binære filer...12-12 Utskriving av binære verdier (Figur 12.4)...12-13 Saksgangen for å skrive binære verdier på en fil (Figur 12.4, Program 12.2)...12-14 Eksempel: Skriving av binære verdier (Program 12.2)...12-15 Innlesing av binære verdier (Figur 12.5)...12-16 Innlesing av binære verdier...12-17 Eksempel: Lesing av binære verdier (Program 12.2)...12-18 Håndtering av slutt på inndata for binær innlesing (Program 12.3)...12-20 Tekstfiler...12-23 Utskrift til en tekstfil (Figur 12.6)...12-24 Utskrift til tekstfiler (Figur 12.6 og Program 12.4)...12-25 Innlesing fra en tekstfil (Figur 12.7)...12-26 Innlesing fra tekstfiler (Figur 12.7, Figur 12.8 og Program 12.4):...12-27 xv/xvii

Innlesing og konvertering av tekst til primitive verdier (Figur 12.8)...12-28 Terminal I/O...12-29 Utskrift til terminalen...12-30 Innlesing fra terminalen...12-32 Eksempel: Innlesing fra terminalen...12-33 Klassen Terminal...12-36 Objektserialisering...12-37 Utskriving av objekter og binære verdier (Figur 12.11)...12-38 Utskriving av objekter...12-39 Saksgangen for å serialisere objekter til en fil (Figur 12.11 og Program 12.6):...12-40 Innlesing av objekter og binære verdier (Figur 12.12)...12-41 Innlesing av objekter...12-42 Saksgangen for å deserialisere objekter fra en fil (Figur 12.12 og Program 12.6)...12-43 Mer om serialisering...12-44 Direkte filtilgang (Figur 12.13)...12-45 Direkte filtilgang (Tabell 12.2)...12-46 Bruk av klassen RandomAccessFile...12-48 Eksempel: Bruk av direkte filtilgang (Program 12.8)...12-50 13. Grafiske brukergrensesnitt...13-1 Emneoversikt...13-2 GUI-baserte applikasjoner...13-4 Komponenter...13-7 Etiketter: JLabel...13-8 Farge: Color...13-9 Containere...13-10 Vinduer og rammer...13-12 xvi/xvii

Innholdruten til en rot-comtainer...13-13 Merknader om GUI-utvikling (Program 13.1)...13-19 Paneler: JPanel...13-22 GUI-kontrollkomponenter...13-23 FlowLayout...13-30 BorderLayout...13-32 GridLayout...13-38 Teknikk for å unngå at komponentene blir strukket (Program 13.5)...13-41 Hendelsesdelegeringsmodell...13-45 Ekstern lytter: Implementering (Program 13.6)...13-53 Bruk av dialogvinduer (Program 13.11 og 13.12)...13-74 Oppførsel til Progam 13.11 og 13.12...13-75 Implementering av klassen EkkoMedDialogvindu (Program 13.11)...13-79 Implementering av klassen HeltallsDialogvindu (Program 13.12)...13-82 Eksempel på anonymklasser (Program 13.13)...13-89 Merknader om anonymklasser...13-93 Presentasjon av utdata til brukeren...13-100 Lesing av inndata fra brukeren...13-102 Bekreftelse av opplysninger fra brukeren...13-105 Programmeringsmodellen for GUI-applikasjoner...13-110 xvii/xvii