UML-diagrammer av programmene våre. Objekt-diagrammer. Et helt enkelt studentregister med kurs, studenter og registeret

Like dokumenter
INF1000-seminar lørd. 3 nov kl

Holde orden på objekter

Oppramstyper, HashMap og Innstikksortering, litt

Oppramstyper (enum) - motivasjon

Holde orden på objekter - HashMap

Oversikt II. Innhold. INF1000 (Uke 12) Oversikt I. Sortering. Lære å lage proff programvare ved å lage. en generell klasse for sortering

Innhold. INF1000 (Uke 12) Sortering og eksamensoppgaver. Oversikt II. Oversikt I. Om sortering. Litt om dokumentasjon av kode. Deler av eksamen H03

INF Forelesning 10

Oppramstyper, HashMap og Innstikksortering, litt. 6. oktober 2009, Arne Maus Inst. for informatikk, UiO

Uke 8 - Oppramstyper, HashMap og Innstikksortering, litt javadoc. 17. oktober 2013, Arne Maus Inst. for informatikk, UiO

INF1000 Forelesning 9. Hashmap Eksempel: Flyreservasjon

HashMap. INF1000 Forelesning 9. Ulike versjoner i Java 1.4 (gammel) og Java 1.5/1.6 av HashMap. Objekter lagres med en søkenøkkel

INF1000 (Uke 12) Sortering

MED SVARFORSLAG UNIVERSITETET I OSLO

Brøkregning og likninger med teskje

Læringsmål og pensum. Forberdring vha preallokering. Oversikt

INF1000: Forelesning 7

E K S A M E N. Algoritmiske metoder I. EKSAMENSDATO: 13. desember HINDA / 98HINDB / 98HINEA ( 2DA / 2DB / 2EA ) TID:

INF1000: Forelesning 7. Konstruktører Static

Løsningsforslag til ukeoppgaver i INF3110/4110

! " ##$ % 4 2, &/ ( & +, )-. &* &/ ),* 0, 1 1 ( &/ 2& &, & &/ &,, &/" 2 &/ 2 ) *

( & ( &/ 2& , )-. &* &/ ),* 0, &/ 2 ) *

Pensumoversikt - kodegenerering. Maskinen det oversettes til. Kodegenerering del 2: tilleggsnotat, INF5110 v2006

Løsningsforslag til avsluttende eksamen i HUMIT1750 høsten 2003.

Kapittel 4 Tall og algebra Mer øving

Temahefte nr. 1. Hvordan du regner med hele tall

x 1, x 2,..., x n. En lineær funksjon i n variable er en funksjon f(x 1, x 2,..., x n ) = a 1 x 1 + a 2 x a n x n,

Matematikk Øvingsoppgaver i numerikk leksjon 8 Numerisk integrasjon

Faktorisering. 1 Hva er faktorisering? 2 Hvorfor skal vi faktorisere? Per G. Østerlie Senter for IKT i utdanningen 11.

Microsoft PowerPoint MER ENN KULEPUNKTER

Terminprøve Matematikk for 1P 1NA høsten 2014

STATISTIKK, KOMBINATORIKK OG SANNSYNLIGHET

Løsningsforslag til Obligatorisk oppgave 2

2-komplements representasjon. Binær addisjon. 2-komplements representasjon (forts.) Dagens temaer

Eneboerspillet. Håvard Johnsbråten

INF1000: Forelesning 11

IN1010 våren januar. Objektorientering i Java

INF Forelesning 10. Eksempler på Hashmap Oppramstyper Innstikksortering Javadoc

IKT-trapp for Lade skole

Bioberegninger - notat 3: Anvendelser av Newton s metode

! Dekoder: En av 2 n output linjer er høy, avhengig av verdien på n inputlinjer. ! Positive tall: Som før

INF1010 våren januar. Objektorientering i Java

Kapittel 4 Kombinatorikk og sannsynlighet. Løsninger til oppgaver i boka. Løsninger til oppgaver i boka

Sensorveiledning Oppgaveverksted 4, høst 2013 (basert på eksamen vår 2011)

Matematikk Øvingsoppgaver i numerikk leksjon 9 Numerisk integrasjon

Mer øving til kapittel 3

Løsningsforslag til obligatorisk oppgave i ECON 2130

Inf1000 (Uke 10) Oppgaveløsning. Hashmap

Snarveien til. MySQL og. Dreamweaver CS5. Oppgaver

INF1000 HashMap. Marit Nybakken 2. november 2003

M2, vår 2008 Funksjonslære Integrasjon

To måter å programmere på. INF1000 : Forelesning 9. Programmering uten objekter. Programmering med objekter: Eksempel på programmering uten objekter

Læringsmål og pensum. Funksjoner hittil (1) Oversikt. Læringsmål Anonyme og rekursive funksjoner Funksjoner som inn-argumenter Subfunksjoner

5: Algebra. Oppgaver Innhold Dato

Integrasjon Skoleprosjekt MAT4010

Eksempeloppgaver 2014 Løsninger

2 Symboler i matematikken

Sem 1 ECON 1410 Halvor Teslo

Kom i gang med Tett på Smartbok! Vi veileder deg steg for steg!

Get filmleie. Brukerveiledning

INF Uke 10. Løsningsforslag ukesoppgaver oktober 2012

Kom i gang med Panorama Smartbok! Vi veileder deg steg for steg!

Nøtterøy videregående skole

Numerisk derivasjon og integrasjon utledning av feilestimater

Kom i gang med Perspektiver Smartbok! Vi veileder deg steg for steg!

Øvingsforelesning 9: Minimale spenntrær. Daniel Solberg

INF Forelesning oppsummering forts. Et meget enkelt banksystem. Oppsummering om klasser, objekter, pekere og.

3.7 Pythagoras på mange måter

1 Tallregning og algebra

Innhold. INF1000 Høst Unified Modeling Language (UML) Unified Modeling Language (UML)

... JULEPRØVE 9. trinn...

1 Mandag 25. januar 2010

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

Oppgave 1. INF1000 Uke 13. Oppgave 2. Oppgave 3. Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI

1 Geometri KATEGORI Vinkelsummen i mangekanter. 1.2 Vinkler i formlike figurer

MAT 1110: Løsningsforslag til obligatorisk oppgave 2, V-06

Oppgave 1. Oppgave 2. Oppgave 3. Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

addisjon av 2 og 3. Vi skriver da i alt: 2+3= og etter at likhetstegnet er skrevet så gir matcad oss svaret.

Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

Kapittel 8 TUTORIALS-CASES

Numerisk matematikk. Fra Matematikk 3MX (2002) Side

MAT 100a - LAB 4. Før vi gjør dette, skal vi for ordens skyld gjennomgå Maple-kommandoene for integrasjon (cf. GswM kap. 12).

Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO

Kapittel 3. Potensregning

Lenkelister. Lister og køer. Kopi av utvalgte sider fra forelesningen.

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

6 Brøk. Matematisk innhold Brøk i praktiske situasjoner Brøk som del av en mengde. Utstyr Eventuelt ulike konkreter, som brikker og knapper

UNIVERSITETET I OSLO

Numerisk Integrasjon

Introduksjon til objektorientert programmering

Terminprøve Matematikk Påbygging høsten 2014

Fasit. Oppgavebok. Kapittel 5. Bokmål

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

1 Mandag 8. mars 2010

UNIVERSITETET I OSLO

DELPRØVE 2 (35 poeng)

Løsningsforslag ukeoppg. 9: okt (INF Høst 2011)

UNIVERSITETET I OSLO

Løsningsforslag Kollokvium 6

Transkript:

UML-digrmmer v progrmmene våre Uke 10 - UML: (Objekt- og) Klsse-digrmmer, litt jvdoc Hshmp og Innstikksortering 25 oktober 2005, Arne Mus Inst. for informtikk, UiO Hvorfor tegne digrmmer over progrmmene Oversikt Smrbeid med ndre progrmmererer / systemutviklere Arkitekter, ingeniører tegner først, så bygger de! Enklere å endre en tegning enn progrmmet Objektdigrmmer Klssedigrmmer UML digrmmene er litt nnerledes enn det vi hr tegnet hittil (men mye v det smme) (i UML er det c 10 ndre digrmtyper vi ikke skl lære) 2 Objekt-digrmmer Et helt enkelt studentregister med kurs, studenter og registeret Vi tegner en typisk situsjon v objekter i systemet vårt, når vi hr fått dtstrukturen på plss. Vi tegner og nvngir bre de mest sentrle dtene som: pekere peker-rryer noen sentrle vrible i objektene Vi hr Studenter på Ifi som første semester tr tre kurs, smtidig som vi hr behov for å registrere kurs og hvor mnge studenter som tr hvert kurs (men ikke hvilke studenter). Vi tegner først en tenkt dtstruktur et UML objektdigrm så skriver vi progrmmet 3 4

Objektdigrmmet er en forenkling v progrmmet. Det tr bre med den essensielle dtstrukturen (mest pekere og peker-rryer) som holder dtstrukturen smmen Klssedigrmmer En mer kompkt måte enn objektdigrmmer å tegne smmenhengen i progrmmet Skiller seg fr objektdigrmmer ved t vi ikke direkte tegner dtstrukturen (pekere og pekerrryer), men bre forhold (ssosisjoner, forbindelser) mellom klssene. I klssedigrmmer dokumenterer vi også sentrle metoder. Forholdene er linjer med et logisk nvn og ntll objekter i hver ende Ant t vi hr lget en clss Konto med tre objektvrible: sldo, eier og dresse og en metode: settinn(). 6 Tre (fire) mulig felter i tegning v en klsse UML Klssedigrmmet kn nyttes til Symboler for synlighet (fr resten v progrmmet) + public - privte # protected ~ pckge Nvnefeltet (lltid) klssenvnet Kn uteltes: Vribelfeltet (ttributtene) vribelnvn evt. med type Metode-feltet Evt med prmetere og returverdi (Unntks-feltet) Modell v problemområdet (domenemodell) Modell v klssene i progrmmet (+ modell v dtbsen,...) Men siden vi skl modellere virkeligheten en-tilen i progrmmet vårt, så blir de like i utgngspunktet 7 8

Forhold mellom klsser Nvnet på forbindelsen En student hr null eller flere eksmener Vi tegner et forhold mellom to klsser som hr med hverndre å gjøre logisk sett, og: hvor vi i progrmmet vil kunne følge pekere for å få dgng til vrible eller metoder Vi skriver hvor mnge objekter det mksimlt på ett tidspunkt kn være på hver side v et slikt forhold Siden vi med: Eksmen mener en vlgt enkelt-eksmen vil en Eksmen bre være tilknyttet en bestemt student ntll Student Forbindelsen leses fr venstre: En student hr ttt null, en eller flere Eksmener Antllet objekter ngis slik: ntll Eksmen 9 Studentregister2 med tillegg: klssen Kurs vet hvilke Studenter som tr kurset Smmenligning: Objektdigrm og Klssedigrm Et studentregister holder orden på studentene og kursene, og en student tr 3 kurs hvert semester 11

Regler for å plssere riktige ntll på et forhold Hvilke forhold skl vi h med i klssedigrmmet 1. Ant t du står i ett objekt v en klsse og ser over til (lngs en forbindelse) til en nnen klsse: 2. Hvor mnge objekter ser du d mksimlt på et gitt tidspunkt v den ndre klssen 3. Det ntllet noteres (jfr. tbellen) på den ndre siden 4. Du går så over forbindelsen til den ndre klssen og ntr t du nå står i ett objekt v denne klssen og gjenntr pkt. 1-3 Slike forhold hvor ett objekt v den ene klssen: inneholder består v eier,.. en eller flere objekter v den ndre klssen Det vi i progrmmet vil følge en peker for å få tk i verdien på visse vrible i den ndre klssen eller klle en metode. Det er d ikke nturgitt hvilke forhold vi hr i et klssedigrm, det vhenger v hvilke spørsmål vi vil være interessert i å svre på. 13 14 HshMp = lgre objekter med en søkenøkkel Ulike versjoner i Jv 1.4 (gmmel) og Jv 1.5 Brukes til å holde orden på en smling objekter Alterntiv til rryer Akkurt som for rryer kn mn: I en rry legger vi inn objekter i en bestemt posisjon, og vi må gå tilbke til denne posisjonen/indeksen når vi senere skl se på objektet. Indeksen er et heltll mellom 0 og length-1. Vi gjennomgår begge måtene, men nbefler klrt t 1.5-måten nyttes, d den hjelper deg mot visse feil (som ellers er lett å gjøre). 1.4 måten gjennomgås (bre) fordi mnge gmle progrmmer inneholder slik kode. Viktig forskjell mellom rryer og HshMp: I en HshMp oppgir vi en bestemt nøkkel (vnligvis en tekststreng) når vi legger vi inn et nytt objekt (klt verdien), og vi oppgir denne nøkkelen når vi senere skl se på objektet. Dvs. indeksen er en tekststreng. 15 16

import jv.util.*; clss BrukAvHshMp { public sttic void min (String[] rgs) { HshMp<String,Person> h = new HshMp <String,Person>(); String fnr1 = 30128812344"; Person per1 = new Person(fnr1, "Hrld Olsen"); h.put(fnr1, per1); Legg inn Person-objekt i HshMp en String fnr2 = 14109522547"; Person per2 = new Person(fnr2, Len Torsen"); h.put(fnr2, per2); Legg inn Person-objekt i HshMp en Person p = h.get( 30128812344 ); clss Person { String fnr; String nvn; Person(String fnr, String nvn) { this.fnr = fnr; Eksempel på bruk v HshMp (1.5) Importer pkken jv.util Opprett en HshMp og forteller this.nvn = nvn; hvilke klsser nøkkelen og verdier hr. Hent Person-objekt fr HshMp en 17 Opprette en HshMp, Jv1.4 (gmmel) og Jv 1.5 I strten v progrmmet: import jv.util.*; Dette importerer pkken jv.util hvor bl.. klssen HshMp ligger. I klssen eller metoden som skl bruke HshMp'en Jv 1.4: HshMp h = new HshMp(); I klssen eller metoden som skl bruke HshMp'en Jv 1.5 (best): HshMp <String,Person> h = new HshMp <String,Person>(); I Jv 1.5 forteller vi hvilke klsser nøkkel- og verdi-objektene kommer fr. Vi sier t vi d låser objektene til både nøkkelen og verdi-objektene til å være v disse typene. NB: Hvis tbellen skl brukes v flere metoder i en klsse, deklreres vribelen ovenfor i strten v klssen (som en objektvribel). Hvis tbellen kun skl brukes v en enkelt metode, er det nturlig å deklrere vribelen ovenfor inni den ktuelle metoden. 18 Legge inn objekt i HshMp (smme i 1.4 og 1.5) Et hvilket som helst objekt i Jv kn legges inn i en HshMp Når vi legger et objekt inn i HshMp'en, må vi smtidig oppgi en nøkkel, dvs en tekststreng som entydig identifiserer objektet. Vi trenger denne nøkkelen dersom vi senere skl finne eller fjerne objektet i HshMp'en. Eksempel: String fnr = 30126512345 ; Person p = new Person(fnr, Kri Olsen ); h.put(fnr, p); Her lger vi først et Person-objekt (med pssende rgumenter) og legger det deretter inn i tbellen med fødselsnummeret som nøkkel. Dersom vi legger inn flere objekter med smme nøkkel, er det bre det sist innlgte objektet som blir liggende i tbellen (de ndre overskrives): Person p1 = new Person(...); Person p2 = new Person(...); Person p3 = new Person(...); String nvn = "Jens"; h.put(nvn, p1); // p1 legges inn h.put(nvn, p2); // p2 legges inn og p1 overskrives h.put(nvn, p3); // p3 legges inn og p2 overskrives Noen gnger må vi konstruere en nøkkel ut fr flere vrible for å få entydighet: String lengdegrd = "67.3"; String breddegrd = "53.3"; String posisjon = lengdegrd + ";" + breddegrd; Fjelltopp fjell = new Fjelltopp(posisjon, Bjørnefjell ); h.put(posisjon, fjell); 19

Hente objekt fr HshMp Jv 1.4 og 1.5 Fjerne objekt fr HshMp Jv 1.4: For å hente et objekt med utgngspunkt i nøkkelen: // 1.4: Vi vil finne en person ut fr fødselsnummeret: Person p = (Person) h.get(fnr); Legg merke til t vi i 1.4 i strten må skrive i prentes nvnet på klssen som objektet tilhører - i dette tilfellet klssen Person. Årsken er t i 1.4 HshMp'en ikke holder rede på hvilken klsse objektene som legges inn hr - bre t det er objekter. Når objektene hentes ut må vi derfor "minne Jv på" hvilken klsse objektet vr v (dette er egentlig et møte med en vnsert og svært nyttig meknisme i objektorienterte språk som klles rv og som blir ttt opp i vårens INF1010). Jv 1.5: For å hente et objekt med utgngspunkt i nøkkelen, nå trenger vi ikke si hvilken klsse objektet hr (det hr vi jo sgt i deklrsjonen v HshMpen h): // 1.5: Vi vil finne en person ut fr fødselsnummeret: Person p = h.get(fnr) Merk: å hente et objekt fr en HshMp slik som over medfører ikke t objektet fjernes fr HshMp'en (vi får bre en kopi v peker til objektet). 21 For å fjerne et objekt med gitt fødselsnummer som nøkkel: h.remove(fnr); Dersom det ligger et objekt i HshMp'en med den gitte nøkkelen, blir objektet fjernet og setningen ovenfor returnerer med en peker til objektet som fjernes. Dersom det ikke ligger et objekt i HshMp'en med den gitte nøkkelen, returnerer setningen ovenfor verdien null. 22 Løp gjennom lle objekter i HshMp Jv 1.4 Løp gjennom lle objekter i HshMp Jv 1.5 For å løpe gjennom lle objektene i en HshMp, lger vi en opprmsing: Itertor it = h.vlues().itertor(); Deretter kn vi se på hvert enkelt objekt i HshMp'en ved å gå i løkke: while (it.hsnext()) { Person p = (Person) it.next(); System.out.println( Nvn: + p.fånvn()); 23 For å løpe gjennom lle objektene i en HshMp, lger vi en opprmsing og låser smtidig det vi skl hente til en bestemt klsse: Itertor <Person> it = h.vlues().itertor(); Deretter kn vi se på hvert enkelt objekt i HshMp'en ved å gå i løkke: while (it.hsnext()) { Person p = it.next(); System.out.println( Nvn: + p.fånvn()); Vi kn også i 1.5 nytte den nye for-løkk som utomtisk lger en itertor for (Person p: h.vlues()) { System.out.println( Nvn: + p.fånvn()); 24

To måter å løpe gjennom en HshMp 1.5 Metoder i HshMp Løpe gjennom objektene (som på forrige foil): Itertor <Person>it = h.vlues().itertor(); while (it.hsnext()) { Person p = it.next(); <gjør noe med objektet> Løpe gjennom nøklene: Itertor <String> it = h.keyset().itertor(); while (it.hsnext()) { String nøkkel = it.next(); <gjør noe med nøkkelen> Metode put get -1.4 get -1.5 remove continskey vlues keyset Eksempel h.put(nøkkel, objekt); Person p = (Person) h.get(nøkkel); Person p = h.get(nøkkel); h.remove(nøkkel); if (h.continskey(nøkkel)) { // gjør et eller nnet Itertor it = h.vlues().itertor(); Itertor it = h.keyset().itertor(); Beskrivelse Legg inn objekt med gitt nøkkel Finn objekt Fjern objekt Sjekk om nøkkel finnes i tbell Lg opprmsing v objektene Lg opprmsing v nøklene 25 26 Metoder i Itertor (opprmsing) Metode hsnext() next() 1.5 next() 1.4 remove() Eksempel while (it.hsnext()) { < les neste og gjør noe>; Person p = it.next(); Person p = (Person) it.next(); Person p = it.next(); if (p.nvn.equls( Arne )) it.remove(); Beskrivelse returnerer true hvis flere objekter i opprmsingen Finn neste objekt Fjern siste objekt som ble returnet med next() 27 import jv.util.*; import esyio.*; clss Hsheksempel { public sttic void min(string[] rgv) { In tsttur = new In(); HshMp <String,Person> personregister = new HshMp <String,Person>(); System.out.print("Antll personer som registreres : "); int nt = tsttur.inint(); for (int i = 0; i < nt; i++) { System.out.println("Antll gjenværende personer " +(nt - i)); Person p = new Person(tsttur); personregister.put(p.telefonnr, p); // Skriv ut lle personobjektene System.out.println("Viser lle personer" + "(ukjent rekkefølge):"); for (Person p: personregister.vlues()){ p.skrivdt(); Eksempel fr bok s.186 clss Person { String nvn, dresse, telefonnr; Person (In tsttur) { System.out.print("Oppgi nvn : "); nvn = tsttur.inline(); System.out.print("Oppgi dresse : "); dresse = tsttur.inline(); System.out.print("Oppgi telefonnummer : "); telefonnr = tsttur.inline(); void skrivdt() { System.out.println("Nvn : " + nvn); System.out.println("Adresse : " + dresse); System.out.println("Telefonnummer : " + telefonnr);

Sortering Lære å løse et vnskelig problem Sortering mnge metoder, her Innstikksortering Sortere hv: Heltll Tekster Lære bstrksjon Når vi hr løst ett problem, kn lignende problemer løses tilsvrende Lære å lge proff progrmvre ved å lge en generell klsse (en vektøyboks) for sortering Hvordn deklrere en slik klsse Jvdoc lge dokumentsjon Testing Hvordn utvikle progrmmet Sortering Mnge dttyper kn sorteres Tll Tekster (leksikogrfisk =i smme rekkefølge de ville stått i et leksikon) Tbeller v tekster eller tll Vi må h en lgoritme (fremgngsmåte) for sortering Det finns mnge titlls (hundretlls) metoder for sortering Dere skl lær den som er rskest når vi skl sortere få elementer, si < 50 elementer 29 30 Hvorfor sorterer vi Vi skl først lære å sortere heltll For å få noen tll i sortert rekkefølge eks: lotto-tllene Sortere tekster (nvnelister) Sortere noen opplysninger som hører smmen. Sorterer d på en v opplysningene. Eks. Telefonktlogen: nvn, dresse, telefonnummer sortert på nvn Dette skl vi så med minimle endringer bruke til åsortere: String-rryer (tekster) 31 32

Vi ønsker en klsse med to vrinter v sortering: Heltll og tekster clss TestInnstikkSortering { public sttic void min ( String[] rgs) { Test-progrm for sortering int [] = {3,1,7,14,2,156,77; String [] nvn = {"Ol", "Kri", "Arne", "Jo"; public clss ISort { public sttic void sorter(int [] ) { public sttic void sorter(string [] ) { // end clss ISort // sorter heltll - skriv ut ISort.sorter(); for (int i = 0; i <.length; i++) System.out.println( [" + i +"]= " + [i]); System.out.println("\n Test tekst-sortering:"); // sorter Stringer - skriv ut ISort.sorter(nvn); for (int i = 0; i < nvn.length; i++) System.out.println("nvn[" + i +"]= " + nvn[i]); System.out.println("\n Test 2dim tekst-sortering:"); 33 heltlls-rry 3 1 7 14 2 156 77 >jv InnstikkSortering [0]= 3 [1]= 1 [2]= 7 [3]= 14 [4]= 2 [5]= 156 [6]= 77 Test v test-progrmmet med tomme sortering-metoder en-dimensjonl String-rry "Ol "Kri "Arne "Jo" Test tekst-sortering: nvn[0]= Ol nvn[1]= Kri nvn[2]= Arne nvn[3]= Jo nvn 36

En lgoritme for å sortere heltll innstikksmetoden steg 1 Sorter 1 på plss i forhold til 3 3 1 7 14 2 156 77 3 1 7 14 2 156 77 t 1 Se på rryen ett for ett element fr venstre Sorterer det vi hittil hr sett på ved : Hvis det nye elementet vi ser på ikke er sortert i forhold til de vi llerede hr sett på: T ut dette elementet (gjem verdien i en vribel t) Skyv på de ndre elementene vi her sett på en-etter-en, ett hkk høyreover til elemetet i t kn settes ned på sortert plss. D er den delen vi hr sortert ett element til lenger (fr venstre) Når vi hr sett på lle elementene, er hele rryen sortert Observsjon : Det første elementet, er det sortert i forhold til seg selv 37 steg 2 3 3 7 14 2 156 77 t 1 steg 3 1 3 7 14 2 156 77 t 1 7 og 14 står riktig, Sorter 2 på plss i forhold til : 1,3,7,14 i k+1 Kode for å flytte ett element på plss : steg 4 1 3 7 14 2 156 77 steg 5 1 3 7 14 2 156 77 1 3 7 14 2 156 77 t 2 // [k +1] står muligens på // feil plss, t den ut int t = [k + 1], i = k; steg 6 steg 7 1 3 7 14 2 156 77 t 2 flytt: 3,7,14 ett hkk til høyre 1 3 3 7 14 156 77 i 1 3 7 14 156 77 3 t 2 k+1 // skyv [i] mot høyre ett hkk til // vi finner riktig plss til t while (i >= 0 && [i] > t) { [i + 1] = [i]; i--; t 2 steg 8 1 2 3 7 14 156 77 1 2 3 7 14 156 77 t 2 // sett t inn på riktig plss [i + 1] = t; t 2

public clss ISort { public sttic void sorter(int [] ) { for (int k = 0 ; k <.length-1; k++) { // [k +1 ] står muligens på feil plss, t den ut int t = [k + 1], i = k; // skyv [i] mot høyre ett hkk til // vi finner riktig plss til t while (i >= 0 && [i] > t) { [i + 1] = [i]; i--; // sett t inn på riktig plss [i + 1] = t; // end heltll-sortering >jv InnstikkSortering [0]= 1 Resultt v sortering med heltlls-metoden kodet, den ndre uten kode [1]= 2 [2]= 3 [3]= 7 [4]= 14 [5]= 77 [6]= 156 Test tekst-sortering: nvn[0]= Ol nvn[1]= Kri nvn[2]= Arne nvn[3]= Jo Sortering v tekster (String) Sortere de to første elementene ved å bytte om pekere t "Ol "Kri "Arne "Jo" t = [1]; "Ol "Kri "Arne "Jo" "Ol "Kri "Arne "Jo" t [1]= [0]; Vi skl sortere denne ved å bytte om på pekerne (l [0] peker på Arne,..osv) med innstikkmetoden "Ol "Kri "Arne "Jo" t [0]= t; 43

public sttic void sorter(int [] ) { // Sorterer heltllsrryen ''. for (int k = 0 ; k <.length-1; k++) { int t = [k + 1], i = k; while (i >= 0 && [i] > t) { [i + 1] = [i]; i--; [i + 1] = t; // end heltll-sortering public sttic void sorter(string [] ) { // Sorterer String-rryen ''. for (int k = 0 ; k <.length-1; k++) { String t = [k + 1]; int i = k; while (i >= 0 && ( [i].compreto(t) > 0) ){ [i + 1] = [i]; i--; [i + 1] = t; // end String-sortering >jv InnstikkSortering [0]= 1 [1]= 2 Test med heltll og enkel String-sortering kodet [2]= 3 [3]= 7 [4]= 14 [5]= 77 [6]= 156 Test tekst-sortering: nvn[0]= Arne nvn[1]= Jo nvn[2]= Kri nvn[3]= Ol Jvdoc proff dokumentsjon v klssene Legg inn spesielle kommentrer i progrmmet ditt (over hver metode og klsse) Kjør progrmmet jvdoc, og utomtisk hr du en fin dokumentsjon /** * Klsse for sortering etter 'innstikk-metoden', se * Rett på Jv - kp.5.7. * Sortering v heltllsrry, tekster og en to-dimensjonl * tekst-rry sortert etter verdiene i første kolonne.<br> * * N.B. Bre velegnet for mindre enn 100 elementer. * * Copyright : A.Mus, Univ. i Oslo, 2003 **********************************************************/ public clss ISort { /** * Sorterer heltll i stigende rekkefølge * @prm heltllsrryen som sorteres * Endrer prmeter-rryen. ********************************************/ public sttic void sorter(int [] ) { /** * Sorterer String-rryer i stigende leksikogrfisk orden. * @prm rryen som sorteres * Endrer prmeter-rryen ********************************************/ public sttic void sorter(string [] ) { 47 // end clss ISort

Dokumentsjon v klssen og metodene -jvdoc >jvdoc ISort.jv Loding source file ISort.jv... Constructing Jvdoc informtion... Stndrd Doclet version 1.5.0_02 Building tree for ll the pckges nd clsses... Generting ISort.html... Generting pckge-frme.html... Generting pckge-summry.html... Generting pckge-tree.html... Generting constnt-vlues.html... Building index for ll the pckges nd clsses... Generting overview-tree.html... Generting index-ll.html... Generting deprected-list.html... Building index for ll clsses... Generting llclsses-frme.html... Generting llclsses-nofrme.html... Generting index.html... Generting help-doc.html... Generting stylesheet.css... 49