Leksjon 6. Objekt. Evt. importsetninger. public class Klasse { Konstruktør. Objektmetoder. Innkapsling (private): set-og get-metoder

Like dokumenter
6108 Programmering i Java. Leksjon 5. Tabeller. Roy M. Istad 2015

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

Leksjon 4. Metoder. Program, klasse og metode

6108 Programmering i Java. Leksjon 4. Metoder. Roy M. Istad 2015

LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring. Else Lervik, januar 2012.

Blokker og metoder INF1000 (Uke 6) Metoder

INF1000 (Uke 6) Mer om metoder, tekster

Rep: Metoder. INF1000 (Uke 6) Mer om metoder, tekster. Rep: Metoder. 3 typer variable: Klassevariable. Java-programmene så langt i kurset:

UNIVERSITETET I OSLO

Leksjon 2. Setninger og uttrykk

Leksjon 2. Setninger og uttrykk

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

En klasse er noe - en metode gjør noe (! / # <= (! * +!! ",-' %. "- -/ %.!#) )! " 0'%! * *$! "1-)) '' % '. 22!'( 7/ /! * 2 2! "*"% 8"%% 9 - -!

Forelesning inf Java 5

Forelesning inf Java 5

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

Introduksjon til objektorientert programmering

INF1000 Metoder. Marit Nybakken 16. februar 2004

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

Forelesning inf Java 4

Hva er tabeller? Tabell (array): Sammensetning av verdier av samme datatype, under ett navn i hurtigminnet.

OO-eksempel. Modellen ser slik ut: Studenter + antstudenter : int = 0

INF1000 (Uke 6) Mer om metoder, tekster

Orakeltjeneste på Abel Hjelp til Obligatorisk oppgave 2. INF1000 (Uke 6) Mer om metoder, tekster. Rep: Metoder. Rep: Metoder

Kapittel 9: Sortering og søking Kort versjon

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

Gjennomgang av eksamen H99

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

Gjennomgang prøveeksamen oppgave 1, 2, 4, 5, 7

Kapittel 7: Mer om arv

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

INF 1000 Prøveeksamen. 23. november Ole Christian og Arne. Oppgave 1 (10 poeng) Er disse programsetningene lovlige i Java? Oppgave 2 (10 poeng)

Innhold. INF1000 Høst Klasser og objekter. Uke 7: Mer objektorientert programmering Siri Moe Jensen

Konstruktører. Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver. skjer følgende:

EKSAMEN 6108/6108N PROGRAMMERING I JAVA Alt trykt og skriftlig materiale.

Leksjon 3. Kontrollstrukturer

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

Leksjon 7. Filer og unntak

Kort repetisjon av doble (nestede) løkker Mer om 1D-arrayer Introduksjon til 2D-arrayer Metoder

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 : Forelesning 4

Objekter. Uke 8 - Objekter, klasser og pekere. Verden består av mange objekter, noen ganske like, noen ulike. Klasser og objekter i verden

UNIVERSITETET I OSLO

Innhold Forst a program

INF våren 2017

UNIVERSITETET I OSLO

i=0 i=1 Repetisjon: nesting av løkker INF1000 : Forelesning 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker j=0 j=1 j=2 j=3 j=4

INF1000: Forelesning 7

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

< T extends Comparable<T> > Indre klasser mm. «Det du bør ha hørt om før oblig 4»

INF1000 (Uke 12) Sortering

Seminaroppgaver IN1010, uke 2

Eksamensrelevant repetisjonsstoff. Deklarasjoner og variabeltyper. Konstanter

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

for (int i=0; i<3; i++) { for (int j=0; j<5; j++) { System.out.print(i*j); System.out.println();

UNIVERSITETET I OSLO

Leksjon 3. Kontrollstrukturer

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

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

Hva er en metode? INF1000 Forelesning 8. Hva skjer når vi kaller en metode? Hvorfor bruke metoder?

INF1000: Forelesning 7. Konstruktører Static

Dagens tema Kapittel 8: Objekter og klasser

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

Leksjon 3. Kontrollstrukturer

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

IN1010 våren januar. Objektorientering i Java

Løse reelle problemer

BOKMÅL Side 1 av 7. KONTINUASJONSEKSAMEN I FAG TDT4100 Objektorientert programmering / IT1104 Programmering, videregående kurs

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

OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK

Kapittel 8: Sortering og søking

Klasser, objekter, pekere og UML. INF gruppe 13

Inf1000 uke 5 18.sept. 2007

IN våren 2019 Onsdag 16. januar

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

IN våren 2018 Tirsdag 16. januar

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

programeksempel Et større En større problemstilling Plan for forelesingen Problemstillingen (en tekstfil) inneholdt ordet "TGA"

UNIVERSITETET I OSLO

INF1000: noen avsluttende ord

INF1000: Forelesning 6. Klasser og objekter del 1

Teste om to tekster er like. Inf1000 uke 6 26.sept Alfabetisk ordning. Inneholder en tekst en annen? Litt om tekster Metoder

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

6108 Programmering i Java. Leksjon 8. GUI: Grafisk brukergrensesnitt. Del 2: Roy M. Istad 2015

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

INF Løsning på seminaropppgaver til uke 8

Kapittel 9: Sortering og søking Kort versjon

UNIVERSITETET I OSLO

INF1000 Forelesning 8. Litt repetisjon: Metoder og klasser Innkapsling av variable og metoder Hvordan gripe an et stort problem?

Inf 1000 høst 2005 Løsningsforslag ordinær eksamen

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

INF1010 Sortering. Marit Nybakken 1. mars 2004

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) IN 211 Programmeringsspråk

Kapittel 5: Objektkommunikasjon

Oversikt. INF1000 Forelesning 6. Variable Deklarasjon. Variabel en plass i lageret int radius;

Transkript:

6108 Programmering i Java Leksjon 6 Objekt Del 2: 6.4 6.5 Roy M. Istad 2015 Generelt oppsett av egendefinert klasse Eks: Student Evt. importsetninger public class Klasse { Objektvariabler - instansvariabler Konstruktør Evt. overlasting av konstruktør Objektmetoder Spes. tostring-metode Spes. equals-metode Klasse.java Innkapsling (private): set-og get-metoder 6108 Programmering i Java Leksjon 6 Del 2 side 2 1

Objektsamling Hvordan håndtere mange objekt i et program? Svar: Referansetabell. 6108 Programmering i Java Leksjon 6 Del 2 side 3 Verditabell kontra referansetabell int referansevariabel Verditabeller inneholder faktiske verdier i primitive datatyper Referansetabeller inneholder kun adresser til objekt (også til String) objekt 6108 Programmering i Java Leksjon 6 Del 2 side 4 2

Deklarasjon og oppretting av tabell Vare[] varetab; = new Vare[3]; varetab[0] = new Vare(1, "Spade", 220.50, 23); varetab[1] = new Vare(2, "Hakke", 199.00, 17); varetab[2] = new Vare(3, "Spett", 170.00, 58); varetab[0] varetab[1] varetab[2] varetab[0].pris 6108 Programmering i Java Leksjon 6 Del 2 side 5 Utskrift fra referansetabell for (int i=0; i<varetab.length; i++) { Vare envare = varetab[i]; out.println( envare.tostring() ); // Evt bare: out.println( varetab[i].tostring() ); // Objektmetode i Vare-klassen public String tostring(){ return nr+"; "+navn+"; "+pris+"; "+antall; tostring Det er standard å la klasser ha en parameterløs metode tostringsom returnerer en tekstlig (String-type) versjon av ethvert objekt. 6108 Programmering i Java Leksjon 6 Del 2 side 6 3

Sortering og søk Kan ikke sortere (og da heller ikke søke) vha Arrays-klassen fordi det ikke er en naturlig ordning av objekt fra egendefinerte datatyper (egne klasser). Hvordan sortere sykler? Triks: Lag varianter av tostring-metoder som legger søkekriterium (nøkkelvariabel) først, og så samle tekstversjonen av alle objektene i en egen String-tabell og «vips»... den kan Arrays-klassen sortere! 6108 Programmering i Java Leksjon 6 Del 2 side 7 Sortering etter studentnummer Student[] studtab = new Student[3]; studtab[0] = new Student(123456, "Per", "Karlsen"); studtab[1] = new Student(121212, "Anne", "Jonsen"); studtab[2] = new Student(112233, "Lars", "Modalen"); String[] studnrtab = new String[studTab.length]; // Legger studentene tekstlig i en tabell, som kan sorteres for (int i=0; i<studtab.length; i++) studnrtab[i] = studtab[i].tostring(); Arrays.sort(studNrTab); String uttekst = "Liste etter studentnr."+"\n"; for (int i=0; i<studnrtab.length; i++) uttekst += studnrtab[i] + "\n"; showmessagedialog(null, uttekst); Liste etter studentnr. 112233: Modalen, Lars 121212: Jonsen, Anne 123456: Karlsen, Per 6108 Programmering i Java Leksjon 6 Del 2 side 8 4

Objektmetoder for sortering public String tostring() { return studnr + ": " + etternavn + ", " + fornavn; public String skrivetternavn() { return etternavn + ", " + fornavn + ": " + studnr; public String skrivfornavn() { return fornavn + " " + etternavn + ": " + studnr; 6108 Programmering i Java Leksjon 6 Del 2 side 9 Søk i en referansetabell Student[] studtab = new Student[ ]; // Lengde via verdi // Søk i en referansetabell uten en egen ordning int søkenr = 123456; // For å slippe innlesing int pos = -1; // Antar at stud.nr. ikke er i tabellen for (int i=0; i< studtab.length; i++) if ( studtab[i].studnr == søkenr ) pos = i; uttekst = "Søkeresultat" + "\n" + "Studentnr "; if ( pos < 0 ) uttekst += søkenr + " finnes ikke i listen!"; else uttekst += studtab[pos].tostring(); //? out.println(uttekst); 6108 Programmering i Java Leksjon 6 Del 2 side 10 5

Referansetabeller og metoder 1) Deklarerer tabellen som en klassevariabel. Nyttig når et brukerprogram har flere metoder (ikke bare main) som skal jobbe på en og samme tabell. Sett modifikatoren static i deklarasjonen av tabellen. Gjøres før objektvariablerog metoder. Klassevariabler eksisterer, og kan brukes, uten noe objekt tilstede. Obs! Math-klassen har klassekonstanten PI (låst klassevariabel) Integer-klassen har klassekonstanten MAX_VALUE 6108 Programmering i Java Leksjon 6 Del 2 side 11 Eksempel på tabell som klassevariabel public class Test { static int[] talltab; public static void main(string[] args) { talltab = {4, 7, 2; doblingavtall(); out.println( Arrays.toString(tallTab) ); private static void doblingavtall() { for (int i=0; i<talltab.length; i++) talltab[i] = 2*tallTab[i]; Tabellen eksisterer og er tilgjengelig utenfor begge metodene (utenfor skopet) 6108 Programmering i Java Leksjon 6 Del 2 side 12 6

Referansetabeller og metoder 2) Parameteroverfører tabellen til en hjelpemetode: private static boolean søk(student[] tab, int søkenr) { // søker etter et gitt studentnr i tabellen // og returnerer true/false alt etter funn return søkeresultat; // Kall: boolean funnet = søk(register, nr); Tabellen referanseoverføres (to referanser til samme tabell), dvs. at metoden ikke får en kopi av den aktuelle parameteren (studenttabellen). Metode: søk tab I primitive datatyper (som for søkenr) får metoden en kopi av aktuell parameter. Da sier vi at parameteren er verdioverført. 6108 Programmering i Java Leksjon 6 Del 2 side 13 Eksempel på referanseoverføring public class Test { public static void main(string[] args) { int[] talltab = {4, 7, 2; doblingavtall(talltab); out.println( Arrays.toString(tallTab) ); talltab private static void doblingavtall(int[] tab) { for (int i=0; i<tab.length; i++) tab[i] = 2*tab[i]; tab 6108 Programmering i Java Leksjon 6 Del 2 side 14 7

Levetid/synlighet: Skop for variabler 6108 Programmering i Java Leksjon 6 Del 2 side 15 6108 Programmering i Java Slutt på leksjon 6 Del 2 8