Leksjon 4. Metoder. Program, klasse og metode

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

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

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

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

INF1000: Forelesning 4. Mer om arrayer Metoder

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

Leksjon 2. Setninger og uttrykk

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

Fra Python til Java, del 2

Leksjon 3. Kontrollstrukturer

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

Blokker og metoder INF1000 (Uke 6) Metoder

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

Høgskolen i Telemark EKSAMEN 6108/6108N PROGRAMMERING I JAVA Alt trykt og skriftlig materiale.

Forelesning inf Java 5

Forelesning inf Java 5

Leksjon 3. Kontrollstrukturer

Leksjon 2. Setninger og uttrykk

Leksjon 2. Setninger og uttrykk

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

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

INF1000 Metoder. Marit Nybakken 16. februar 2004

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

2 Om statiske variable/konstanter og statiske metoder.

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

INF Uke 10. Ukesoppgaver oktober 2012

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

2 Om statiske variable/konstanter og statiske metoder.

Leksjon 7. Filer og unntak

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

Programmeringsspråket C

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

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

Kapittel 8: Programutvikling

Kapittel 1 En oversikt over C-språket

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

UNIVERSITETET I OSLO

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

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

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

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon

Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

Løsningsforslag ukeoppg. 2: 31. aug - 6. sep (INF Høst 2011)

UNIVERSITETET I OSLO

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

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

IN Notat om I/O i Java

Innhold Forstå program iii

INF1000 undervisningen INF 1000 høsten 2011 Uke september

Del 1 En oversikt over C-programmering

Programmeringsspråket C

UNIVERSITETET I OSLO

Oblig4 - forklaringer. Arne og Ole Christian

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF1010 våren 2019 Onsdag 30. januar. Mer om unntak i Java (med litt repetisjon av I/O først)

Programmeringsspråket C

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; }

INF Notat om I/O i Java

Klassen javax.swing.joptionpane

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

Leksjon 7. Filer og unntak

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

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I Løsningsforslag

Kom forberedt til tirsdag. INF1000 Tips til obligatorisk oppgave 4. Noen generelle tips. Oblig4: Komme igang

Introduksjon til objektorientert programmering

UNIVERSITETET I OSLO

Eksempel: Body Mass Index (BMI)

Java PRP brukermanual

INF1000 : Forelesning 1 (del 2)

Kapittel 1: Datamaskiner og programmeringsspråk

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm

Seminaroppgaver IN1010, uke 2

Oblig4 - forklaringer. Arne og Ole Christian

Transkript:

6108 Programmering i Java Leksjon 4 Metoder Roy M. Istad 2015 Program, klasse og metode public class Kode { main-metode Kode.java import static java.... // ulike klasser Våre program så langt Én fil Én klasse (import?) Én main metode Større program Flere filer, flere klasser og flere metoder. Hvorfor? Kode med bedre oversikt, gir gjenbruk og arbeidsdeling 6108 Programmering i Java Leksjon 4 side 2 1

Oppdeling av program i metoder Store program "krever" oppdeling i mindre biter. Metode navnsatt enhet som inneholder én eller flere setninger. Metode et«delprogram» som utfører en avgrenset oppgave. Java biblioteket (API) har (veldig) mange ferdiglagede metoder Eksempler fra API parseint() round() min(), max() showmessagedialog() 6108 Programmering i Java Leksjon 4 side 3 import static java.lang.system.*; public class MetodeTest { Eksempel MetodeTest.java public static void main(string[] args) { out.println("********************"); skrivstjerner(); out.println("her er en setning."); out.println("********************"); skrivstjerner(); out.println("ferdig!"); private static void skrivstjerner() { out.println("********************"); Skopet (mellom krøllparenteser) void? "Tom", metoden sender ikke ut noen verdi (i en gitt datatype) Programmet gir denne utskriften ******************** Her er en setning. ******************** Ferdig! NB! Metoden skrivstjerner finnes ikke i noe bibliotek, vi må lage den selv... private? Hjelpemetode, deklarert inne i klassen som skal bruke den. 6108 Programmering i Java Leksjon 4 side 4 2

Metodekall og parameterliste Setningene i en metode blir utført ved kall på metoden Et metodekall består i det enkleste tilfellet av navnet på metoden, etterfulgt av ( ) altså en tom parameterliste. Kall på en void metode står som en selvstendig setning i programkoden. Metode med returverdi sender fra seg en verdi, og må som andre verdier stå i en tilordning, som del av et utrykk eller parameter i et nytt metodekall. Eksempel int tall = min(3, 8); double meterlengde = round(yard*cm_i_yard)/100; int allerstørst = max( max(2,tall), max(3,8) ); 6108 Programmering i Java Leksjon 4 side 5 Formelle og aktuelle parametre public static void main(string[] args) { skrivstjerner(2); skrivstjerner(4); skrivstjerner(8); Metodekall private static void skrivstjerner(int antall) { for (int i=1; i<=antall; i++) out.print("*"); out.println(); ******************** ** Lengde 2 **** Lengde 4 ******** Lengde 8 Altså skrivstjerner lengde2 skrivstjerner lengde4 skrivstjerner lengde8 6108 Programmering i Java Leksjon 4 side 6 3

Utførelse av metodekall skrivstjerner blir kalt fra main metoden, og println fra skrivstjerner Ved metodekall «hopper» programutførelsen ut av en metode og inn i en annen metode. Den hopper tilbake igjen når alle setningene i den aktuelle metoden er utført. 6108 Programmering i Java Leksjon 4 side 7 Parameterliste Metodekall skrivtegn('+', 7); + 7 +++++++ ******* Samme metode, men andre aktuelle parametre i kallet skrivtegn('p', 12); PPPPPPPPPPPP 6108 Programmering i Java Leksjon 4 side 8 4

Metode med returverdi public static void main(string[] args) { int svar = areal(3, 3 4); // Som om det sto int svar = 12; out.println("rektangelareal " + svar); 12 Metoder med returverdi kan brukes som uttrykk. Her kan metodekallet like gjerne stå i utskriften out.println("rektangelareal " + areal(3, 4) ); 6108 Programmering i Java Leksjon 4 side 9 «Prosedyre» kontra «funksjon» void metode returverdi metode Metoden står som egen setning Metoden står som del av et utrykk Slå plena! Metoden utfører et oppdrag, men gir ingen kvittering tilbake Hva er klokka? Metoden "beregner" ett resultat (en verdi) som kvitteres til oppdragsgiver 6108 Programmering i Java Leksjon 4 side 10 5

Sammensatte metodekall int allerminst = minst(2, minst(3, 4)); 2 3 4 3 Oppgave Skriv en metode som kan finne det minste av tre heltall. 123 2 Innlesing av heltall via dialogvindu 123 int høyde = parseint( showinputdialog(ledetekst) ); 6108 Programmering i Java Leksjon 4 side 11 Uttrykk som parametre + +++ +++++ +++++++ +++++++++ + t 1 antall Mulige metodekall nå for (int i=1; i<=5; i++) { skrivtegn(' ', 5-i ); skrivtegn('+', 2*i-1 ); out.println(); uttrykk XXXXX XXXXX XXXXX XXXXX int str = // innlest for (int i=1; i<=str; i++) { skrivtegn(' ', i-1 ); skrivtegn('x', str+1 ); out.println(); 6108 Programmering i Java Leksjon 4 side 12 6

Verdioverføring av parameter private static void parametertest(int x) { x = x + 1; int w = x; // Før metodekall int tall = 9; parametertest(tall); // Etter metodekall, // hva er tall nå? 6108 Programmering i Java Leksjon 4 side 13 Oppdeling av problem «Topp ned» Oppdeling av større og mer sammensatte problem i mindre deler. Metoder bidrar naturlig til mer oppdeling. «Dummy metoder» (uferdig kode) Metoder som ikke gjør noe, men kompilerer, og kan altså brukes i løsningsforslaget. Eksempel Sum øyne for tre terningkast (metoden returnerer bare en verdi) private static int sumøyne(int antallterninger) { return 11; // Dummy-metode, kompilerbar... «Bunn opp» Bibliotek, pakke, klasse med metoder utviklet for standard bruk. Byggeklosser som kan settes sammen til store og gjerne kompliserte løsninger Java API Verktøyklasser (Samling statiske metoder som vi muligens har laget selv) 6108 Programmering i Java Leksjon 4 side 14 7

Programbibliotek «Bunn opp» programmering Standard byggeklosser ligger i programbibliotek slik at ulike program kan bruke dem etter behov. Java API Oversikt over biblioteket 6108 Programmering i Java Leksjon 4 side 15 Klassemetoder og verktøyklasser Egen fil! Temperatur.java public class Temperatur { public static double celcius2fahrenheit(double c) { return (c * 9/5) + 32; public static double fahrenheit2celcius(double f) { return (f - 32) * 5/9; OBS! Trykkfeil i læreboka s.155 Fysisk tilgang til metodene? Import, plassert i samme mappe, eller sette opp en filsti? NB! Må sette modifikatorene til public for at andre klasser skal få tilgang til metodene (ikke private altså). Og, klassen har ikke main metode. Kall på klassemetode fra double grc = 20.0; double grf = Temperatur.celsius2Fahrenheit(grC); et brukerprogram grf = Math.round(grF); 6108 Programmering i Java Leksjon 4 side 16 8