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

Like dokumenter
Leksjon 4. Metoder. Program, klasse og metode

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

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

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

INF1000: Forelesning 4. Mer om arrayer Metoder

Leksjon 2. Setninger og uttrykk

Leksjon 2. Setninger og uttrykk

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

EKSAMENSFORSIDE. Emnenavn: Programmering i Java Tid fra / til: 10:00-14:00. Fakultet: Handelshøyskolen Antall vedlegg: 1

Leksjon 3. Kontrollstrukturer

Leksjon 3. Kontrollstrukturer

MER OM ARRAYER. INF1000: Forelesning 4. Anta at vi ønsker å lagre en liste med navnene på alle INF1000-studentene:

INF1000 : Forelesning 4

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

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

Fra Python til Java, del 2

Praktisk informasjon. Repetisjon: While-løkker. I dag. INF1000 (Uke 5) Mer om løkker, arrayer og metoder. Oblig 2 er lagt ut

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

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

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

Blokker og metoder INF1000 (Uke 6) Metoder

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

Praktisk informasjon. I dag. Repetisjon: While-løkker. INF1000 (Uke 5) Mer om løkker, arrayer og metoder

Forelesning inf Java 5

Forelesning inf Java 5

Leksjon 3. Kontrollstrukturer

Leksjon 2. Setninger og uttrykk

Leksjon 2. Setninger og uttrykk

Inf1000 uke 5 18.sept. 2007

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

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)

Innhold Forst a program

INF1000: noen avsluttende ord

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

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.

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

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

Innhold Forstå program iii

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

Endret litt som ukeoppgave i INF1010 våren 2004

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

INF 1000 høsten 2011 Uke september

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

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

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

UNIVERSITETET I OSLO

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

Oversikt. INF1000 Uke 5. Hva er for-løkker - repetisjon. Spørsmål forrige uke. Svar på spm. fra forrige uke. Litt mer om arrayer.

Programmeringsspråket C

INF1010 våren 2017 Onsdag 25. januar. Litt om unntak i Java

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

INF1010 våren 2018 tirsdag 23. januar

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

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

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

Kapittel 5: Objektkommunikasjon

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

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

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(); Konsoll ******************** ** Lengde: 2 **** Lengde: 4 ******** Lengde: 8 Altså: skrivstjerner lengde:2 skrivstjerner lengde:4 skrivstjerner lengde:8 6108 Programmering i Java Leksjon 4 side 6

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 +++++++ ******* Konsoll Samme metode, men andre aktuelle parametre i kallet: skrivtegn('p', 12); PPPPPPPPPPPP Konsoll 6108 Programmering i Java Leksjon 4 side 8

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

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 Konsoll + +++ +++++ +++++++ +++++++++ + t 1 antall Mulige metodekall nå: : for (int i=1; i<=5; i++) { skrivtegn(' ', 5-i ); skrivtegn('+', 2*i-1 ); out.println(); : uttrykk Konsoll 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

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

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 NB! Må sette modifikatorene til public for at andre klasser skal få tilgang til metodene (ikke private altså). Og, klassen har ikke main metode. Fysisk tilgang til metodene? Import, plassert i samme mappe, eller sette opp en filsti? : double grc = 20.0; Kall på klassemetode fra double grf = Temperatur.celsius2Fahrenheit(grC); et brukerprogram : grf = Math.round(grF); : 6108 Programmering i Java Leksjon 4 side 16