En metode er i programmering en navngitt samling av instruksjoner som til sammen skal utføre en bestemt oppgave. Navnet er gjerne beskrivende for oppgaven som skal utføres. Ved å bruke metodens navn kan vi få utført dens instruksjoner når og hvor vi måtte ønske det, uten å måtte skrive dem på nytt.

Faktaboks

Også kjent som

prosedyre, funksjon, rutine og subrutine

Begrepet metode er synonymt med det som i ulike programmeringsspråk kalles for funksjon, prosedyre, subrutine eller rett og slett rutine. Innen objektorientert programmering er imidlertid ordet metode den mest utbredte betegnelsen.

Definering av metoder er helt sentralt i oppbygningen av et dataprogram, enten metodene hentes fra tilgjengelige biblioteker og rammeverk, eller defineres av programutvikleren selv til eget bruk.

Definisjon av en metode

I et dataprogram kreves det normalt flere instruksjoner for å utføre én enkelt oppgave. Er dette en oppgave som skal utføres mange ganger i løpet av programmet, er det gunstig å samle instruksjonene som kreves i en navngitt metode. Metodens navn bør være beskrivende for oppgaven som skal utføres, slik at programmereren, og andre som skal sette seg inn i programmet, forstår hva koden har til hensikt å utføre.

En metodedefinisjon er kun en samling av instruksjoner, og utfører ingen ting i seg selv. Det er først når vi, ved hjelp av navnet, «kaller» metoden, at instruksjonene som er samlet i den blir utført. Har vi først definert en metode, kan vi «kalle» den så mange ganger vi måtte ønske. Dermed kan vi gjenbruke koden om og om igjen, uten å måtte skrive den på nytt.

Når vi skal definere en metode, må vi følge de syntaktiske (grammatikalske) reglene som gjelder for programmeringsspråket vi bruker. Selv om syntaksen i de ulike språkene kan være forskjellig, har de fleste mange likhetstrekk.

Metodens navn er i seg selv vanligvis ikke nok til å identifisere den, da det ikke er uvanlig at mange metoder heter det samme. Metoden lar seg imidlertid unikt identifisere ut fra dens signatur, bestående av datatypen til returverdien, metodenavnet og metodens parameterliste. Signaturen utgjør første linje i metodedefinisjonen, mens metodens instruksjoner samles i en påfølgende blokk.

< returverditype > < metodens navn > ( < parameterliste > )

{

< instruksjoner >

}

Returverdi

Definisjon og kall på en metode i programmeringsspråket Java

Figuren viser først definisjonen av metoden sum. Senere i programmet blir metoden kalt fra en utskriftsetning. I det metoden kalles går programkontrollen direkte til metodedefinisjonen, der tallene i tabellen, som er sent med i kallet, summeres. Deretter returnerer programkontrollen til kall-stedet (utskriftssetningen), der summen (returverdien) blir en del av teksten i utskriften.

Definisjon og kall på en metode i programmeringsspråket Java
Lisens: CC BY SA 3.0

Hvis en metodes oppgave er å beregne en konkret verdi, må metoden defineres til å ha en returverdi av samme datatype som verdien som skal beregnes. I mange språk gjøres dette ved å skrive datatypen til returverdien før metodenavnet i metodedefinisjonen. Metodens siste instruksjon må videre være en instruksjon som returnerer den beregnede verdien. Etter at et metodekall er utført, vil denne verdien bli plassert på samme sted i programmet som metodekallet sto. Hvis, for eksempel, metodekallet sto inne i en annen instruksjon, vil returverdien bli plassert nøyaktig der kallet sto i den andre instruksjonen.

Det er imidlertid mange metoder som kun skal utføre en oppgave uten at de skal returnere en verdi til kallstedet. I programmeringsspråket Java, samt i mange andre språk, brukes nøkkelordet void til å angi at metoden ikke har noen returverdi. Nøkkelordet void vil da erstatte angivelsen av returverditypen i metodens signatur.

void < metodens navn > ( < parameterliste > )

Parameterliste

For å få utført sin oppgave vil en metode ofte trenge data den selv ikke har. Dette kan være data fra andre deler av programmet, eller data som brukeren av programmet skriver inn under kjøringen av det. For at metoden skal kunne bruke verdiene den mottar, må det opprettes lagerenheter (variabler) til dem, dvs. metoden må utstyres med en parameterliste. Parameterlisten kan betraktes som en liste av variabel-deklarasjoner, der både datatype og variabelnavn til hver eneste verdi den skal motta, må angis.

< datatype > < variabelnavn >

Parameterlisten står gjerne mellom to parenteser som følger umiddelbart etter metodenavnet i metodedefinisjonen. Hvis en metode ikke trenger noen informasjon utenfra for å utføre sin oppgave, vil metoden ha en tom parameterliste, dvs. den vil kun bestå av to parenteser uten noen variabeldeklarasjoner imellom. Selv om parameterlisten er tom, er parentesene nødvendige å ta med. De informerer datamaskinen om at det foregående brukerdefinerte navnet er et metodenavn, og ikke navnet på en variabel eller noe annet.

Når metoden kalles, og programkontrollen går fra kallstedet til metoden, opprettes det lagerenheter i minnet på maskinen for alle variablene som er deklarert i parameterlisten. Hver variabel blir så tilordnet den tilhørende verdien som er sendt med i metodekallet. Alle metodens variabler, både variablene fra parameterlisten og de som blir opprettet senere i metoden, er lokale variabler som kun er tilgjengelige fra metoden selv. Så snart programkontrollen forlater metoden, opphører de lokale variablene å eksistere.

Utførelse av et metodekall

Det er viktig å skille mellom en metodedefinisjon og et metodekall. Metodedefinisjonen er kun en beskrivelse av instruksjonene som kan utføres, men som ikke blir det med mindre metoden kalles. Når programkontrollen kommer til et metodekall, går kontrollen direkte fra kallstedet til metodedefinisjonen, der eventuelle verdier som er sendt med i kallet blir lagret i metodens parametervariabler. Når metodens instruksjoner er utført, returnerer programkontrollen til kallstedet. Hvis metoden har en returverdi, blir denne plassert på nøyaktig samme sted i koden som der metodekallet sto.

Les mer i Store norske leksikon

Kommentarer

Kommentarer til artikkelen blir synlig for alle. Ikke skriv inn sensitive opplysninger, for eksempel helseopplysninger. Fagansvarlig eller redaktør svarer når de kan. Det kan ta tid før du får svar.

Du må være logget inn for å kommentere.

eller registrer deg