19
Programiranje Metode Vsebina Osnove programskega jezika Java

Osnove programskega jezika Java - scv.si

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Osnove programskega jezika Java - scv.si

Programiranje

Metode

Vsebina

Osnove programskega jezika Java

Page 2: Osnove programskega jezika Java - scv.si

Programiranje

MetodeUvod

Metode omogočajo lažjo modularno zasnovo programa z

ločevanjem aktivnosti v samostojne programske enote.

Vsebina

Page 3: Osnove programskega jezika Java - scv.si

Programiranje

Metode, uvod

Najboljši način razvoja in vzdrževanja večjega programa je, da ga izdelamo iz

manjših delov oz. modulov.

Vsebina

Večji problem razbijemo na manjše dele, ki jih rešimo in jih nato povežemo v

celoto. Takšen pristop imenujemo deli in vladaj.

Metoda predstavlja poimenovano zaporedje stavkov, ki predstavlja rešitev

manjšega problema. S klici metod izvajamo isto zaporedje stavkov nad

različnimi podatki. To imenujemo tudi ponovna uporaba kode (angl. code

reuse).

Metode predstavljajo tudi operacije, ki so na voljo nad posameznim objektom.

Page 4: Osnove programskega jezika Java - scv.si

Programiranje

Metode (void, return)

Ločimo dve vrsti metod:

metode, ki ne vračajo vrednosti (izvršijo aktivnost oz. operacijo brez

vračanja vrednosti),

System.out.println("Metoda println() ne vrača vrednosti");

metode, ki vračajo vrednost (izvršijo aktivnost oz. operacijo in vrnejo

vrednost v kodo na mesto klica).int vecjeStevilo = Math.max(5, 10);

Vsebina

Page 5: Osnove programskega jezika Java - scv.si

Programiranje

Definicija metode

Metodo ustvarimo z deklaracijo metode, ki jo sestavlja glava (prototip) in telo

metode.

Vsebina

Glava metode vsebuje pomembne informacije: ime metode, področje

dostopnosti, podatkovni tip vrednosti rezultata metode, seznam parametrov …

Telo metode so programski stavki, ki se izvršijo ob klicu metode.

public static void izpisPozdrava()

{

System.out.println("Pozdrav");

}

telo metode

glava metode

Page 6: Osnove programskega jezika Java - scv.si

Programiranje

Glava metode

Vsebina

<določila

načina dostopa> <podatkovni tip

rezultata> <ime metode>

( [<podatkovni tip> <ime>]

[, … ] )

public static void izpisPozdrava ( )

{

System.out.println("Pozdrav");

}

Določila načina dostopa:

• public - metoda je dostopna iz vseh razredov,

• static - razredna metoda (pripada razredu).

Podatkovni tip rezultata:

• void - metoda ne vrača vrednosti.

Ime metode - ime ki predstavlja opis operacije (aktivnosti).

Okrogli oklepaji - seznam vhodnih parametrov.

Page 7: Osnove programskega jezika Java - scv.si

Programiranje

Deklaracija metode

Vsebina

public static int vsotaInterval(int odStevila, int doStevila) {

int vsota = 0; /* inicializacija vsote*/

if (odStevila > doStevila) { /* potrebna zamenjava */

int pomozna = odStevila; /* uporabimo pomožno spremenljivko */

odStevila = doStevila;

doStevila = pomozna;

} // if

for (int i = odStevila; i <= doStevila; i++) {

vsota = vsota + i; /* vrednost števca prištejemo vsoti */

} /* for */

return vsota; /* vračanje vrednosti - rezultat (vsota) */

} /* metoda vsotaInterval*/

<ime> parametra<podatkovni tip>

/* glava metode */

<določila načina dostopa> <podatkovni tip rezultata> <ime metode>

( [<podatkovni tip> <ime>] [, <podatkovni tip > <ime>] )

{

/* stavki */

[ return <izraz>; ] /* metode, ki vračajo vrednosti */

} /* konec metode */

telo metode

Page 8: Osnove programskega jezika Java - scv.si

Programiranje

Klic metode

Vsebina

Metodo izvršimo s klicem metode.

Metoda main se samodejno izvrši ob zagonu programa, ostale metode se

izvedejo ob klicu metode.

Klic metode:

izpisPozdrava( );

Klic metode ne vsebuje določil dostopa in podatkovnega tipa rezultata.

Sintaksa klica oz. izvršitve statične metode:

<ImeRazreda>.<imeMetode> (<argumenti>);

ali klic metode v razredu, v katerem je metoda definirana

<imeMetode> (<argumenti>);

Page 9: Osnove programskega jezika Java - scv.si

Programiranje

Klic metode

Vsebina

public static int vsotaInterval(int odStevila, int doStevila) {

int vsota = 0; /* inicializacija vsote*/

if (odStevila > doStevila) { /* potrebna zamenjava */

int pomozna = odStevila; /* uporabimo pomožno spremenljivko */

odStevila = doStevila;

doStevila = pomozna;

} // if

for (int i = odStevila; i <= doStevila; i++) {

vsota = vsota + i; /* vrednost števca prištejemo vsoti */

} /* for */

return vsota; /* vrnemo vrednost vsote */

} /* metoda vsotaInterval*/

public static void main(String[] args) {

int intervalOd, intervalDo; /* interval števil */

/* koda */

/* klic metode za izračun vsote */

int vsota = vsotaInterval(intervalOd, intervalDo) ;

/* oblika izpisa */

System.out.printf("Vsota števil iz intervala od %d do %d je %d.", intervalOd, intervalDo, vsota);

} /* main */

klic metode

1

2

23

4

5

6

7

8

Page 10: Osnove programskega jezika Java - scv.si

Programiranje

Prenos argumentov v metodo

Vsebina

Vrednoti, ki jih posredujemo metodi ob klicu imenujemo argumenti.

System.out.println("Pozdrav");

nizStevilo = "25";

stevilo = Integer.parseInt(nizStevilo);

Podatkovni tip argumenta v klicu metode mora ustrezati deklaraciji

spremenljivke v oklepajih definicije metode (parametrom).

argument

Parameter je spremenljivka, ki je deklarirana v glavi metode in vsebuje

vrednost, ki se prenesejo v metodo.

public static int vsotaInterval(int odStevila, int doStevila)

{ /*…*/ }

Preko parametrov metode prejmejo vrednosti.

parametri

Page 11: Osnove programskega jezika Java - scv.si

Programiranje

Prenos argumentov v metodo

Vsebina

public class P4_ArgumentiP1 {

public static void izpisStevila(int stevilo) {

System.out.printf("\nVrednost števila: %d", stevilo);

} // izpisStevila

public static void main(String[] args) {

izpisStevila(25);

int stevilo1 = 50;

izpisStevila(stevilo1);

} // main

} // P4_ArgumentiP1

Klic metode izpisStevila(stevilo1); posreduje vrednost argumenta 50 v parameter stevilo.

Vrednost spremenljivke stevilo1 (50) se kopira v vrednost parametra stevilo.

stevilo1

stevilo

50

50

kopija

Page 12: Osnove programskega jezika Java - scv.si

Programiranje

Kompatibilnost pod. tipov argumentov in parametrov

Vsebina

Ko posredujemo argument metodi, se prepričamo, da je podatkovni tip argumenta

združljiv s podatkovnim tipom parametra.

Ob klicu metode navedemo ime metode in argumente metode.int stevilo1 = 50;

izpisStevila(stevilo1); // <ime metode> - izpisStevila (<argument> - stevilo1)

Argumenti in parametri klicane metode se morajo ujemati v številu in podatkovnem tipu

glede na vrstni red.

public static void izpisStevila(int stevilo)

Argument je lahko vrednost spremenljivke, izraza …

Če argument ni kompatibilen s parametrom, prevajalnik javi napako.double stevilo1 = 50.0;

izpisStevila(stevilo1); // napaka, double vrednosti ne moremo prenesti v int vrednost

Page 13: Osnove programskega jezika Java - scv.si

Programiranje

Posredovanje več argumentov

Vsebina

V klicu metode posredujemo toliko argumentov, kot ima metoda parametrov.

public static int vsotaInterval(int odStevila, int doStevila) {

int vsota = 0; /* inicializacija vsote*/

if (odStevila > doStevila) { /* potrebna zamenjava */

int pomozna = odStevila; /* uporabimo pomožno spremenljivko */

odStevila = doStevila;

doStevila = pomozna;

} // if

for (int i = odStevila; i <= doStevila; i++) {

vsota = vsota + i; /* vrednost števca prištejemo vsoti */

} /* for */

return vsota; /* vračanje vrednosti - rezultat (vsota) */

} /* metoda vsotaInterval*/

int vsota = vsotaInterval( 1 , 5 ) ;

Vrednost prvega

argumenta (1) se kopira

v parameter odStevila.

Vrednost drugega

argumenta (5) se kopira v

parameter doStevila.

Vrstni red je pomemben.

Page 14: Osnove programskega jezika Java - scv.si

Programiranje

Argumenti metode se posredujejo po vrednosti

Vsebina

V Javi se vsi parametri osnovnih podatkovnih tipov posredujejo po vrednosti (v

parameter metode se prenese kopija vrednosti argumenta).

Spremenljivke parametrov metode so druge spremenljivke (pomnilniško ločene) od

spremenljivk argumentov v klicu metode.

Če spremenljivko parametra spremenimo znotraj metode, to ne vpliva na posredovani

argument.

Kopija vrednosti argumenta se posreduje v parameter.

public static int vsotaInterval(int odStevila, int doStevila) {

/* … */

int a = 10, b = 20;

int vsota = vsotaInterval( a , b ) ;

10 se kopira v

parameter odStevila.

20 se kopira v

parameter doStevila.

Page 15: Osnove programskega jezika Java - scv.si

Programiranje

Posredovanje referenc objektov v metodo

Vsebina

Spremenljivka tipa razreda vsebuje naslov na katerem je shranjen objekt v pomnilniku.

Spremenljivko povezano z objektom imenujemo referenčna spremenljivka.

Če je argument objekt razreda (npr. String), se v parameter metode posreduje

referenca (naslov) objekta v pomnilniku. Obe spremenljivki (argument in parameter) se

nanašata na isti objekt.

public static void izpisPozdrava (String besedilo) {

/* … */

String pozdrav = "Zdravo";

izpisPozdrava( pozdrav) ;

Referenca (naslov)

se posreduje v

parameter

Page 16: Osnove programskega jezika Java - scv.si

Programiranje

Objekti razreda String so nespremenljivi (Immutable)

Vsebina

Objekt razreda String ne moremo spremeniti. Stavek:

imePriimek = "Bojan Sovič";

ne more spremeniti vrednosti objekta, zato ustvari nov objekt.

naslov

naslov

" Marko"

"Bojan Sovič"

Spremenljivka ime vsebuje

naslov objekta String

Spremenljivka imePriimek

vsebuje naslov objekta String

Page 17: Osnove programskega jezika Java - scv.si

Programiranje

Objekti razreda String so nespremenljivi (Immutable)

Vsebina

Metoda main => ime in priimek: Ana Bor

Metoda spremeniImePriimek => ime in priimek: Bojan Kot

Metoda main po klicu metode spremeniImePriimek => ime in priimek: Ana Bor

public class P4_StringP2 {

public static void spremeniImePriimek(String imePriimek) {

imePriimek = "Bojan Kot";

System.out.printf("\nMetoda spremeniImePriimek => ime in priimek: %s ", imePriimek);

} // spremeniImePriimek

public static void main(String[] args) {

String imePrimekM = "Ana Bor";

System.out.printf("Metoda main => ime in priimek: %s ", imePrimekM);

spremeniImePriimek(imePrimekM);System.out.printf("\nMetoda main po klicu spremeniImePriimek => ime in priimek: %s ", imePrimekM);

} // main

} // P4_StringP2

Pazi: ustvari nov objekt

v pomnilniku

Page 18: Osnove programskega jezika Java - scv.si

Programiranje

Metode, vračanje vrednosti

Vsebina

Metoda lahko vrne vrednost metode v stavek klica metode.

int stevilo1 = 12;

int stevilo2 = 15;

int vecje = Math.max(stevilo1, stevilo2);

System.out.printf("Večje število (%d, %d): %d.",stevilo1, stevilo2, vecje);

Večje število (12, 15): 15.

Klic metode Math.max(stevilo1, stevilo2) vrne int vrednost 15, ki se shrani v

spremenljivko vecje.

public static int max(int a, int b) {

int result;

/* … */

return result ;

}

podatkovni tip

rezultata

Izraz mora biti istega tipa kot je v glavi

metode podatkovni tip rezultata.

Return stavek konča izvajanje metode

in vrne vrednost v stavek klica metode.

Page 19: Osnove programskega jezika Java - scv.si

Programiranje

Metode, klic statične metode

Vsebina

Klic metode znotraj razreda v katerem se nahaja metoda:

<imeMetode> (<argumenti>)

Klic metode drugega razreda:

<imeRazreda>.<imeMetode> (<argumenti>)

int stevilo1 = 12;

int stevilo2 = 15;

int vsotaStevil = vsota(stevilo1, stevilo2);

public static int vsota(int a, int b) {

int rezultat = a + b;

return rezultat;

}

12 1527