3. oop - metode u javi [compatibility mode]

Upload: psy

Post on 06-Jul-2018

225 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/18/2019 3. OOP - Metode u Javi [Compatibility Mode]

    1/24

    Objektno orjentisanoObjektno orjentisano

    programiranje:programiranje:

     Meto eMeto e uu JaviJavi

    profprof dr Gordanadr Gordana ĐorđevićĐorđević

  • 8/18/2019 3. OOP - Metode u Javi [Compatibility Mode]

    2/24

    MetodeMetode

    Svaka klasa može imati određena ponašanja koja seSvaka klasa može imati određena ponašanja koja semogu iraiti u obliku metodemogu iraiti u obliku metode

    defini!ijdefini!ijaa metodametoda u Javi vrši se u okviru tela klase:u Javi vrši se u okviru tela klase:

    tip_povratne_vrednostitip_povratne_vrednosti nazivMetode (...parametri...)nazivMetode (...parametri...) {{

    // telo metoda// telo metoda

    AUTOMOBIL

    marka

    model

    godinaProizvodnje

    registracija

    upali()

    ugasi()

    kreni()

    stani()

    }} "ip povratne"ip povratne vrednostivrednosti# njen naiv i parametri $ine aglavlje metode## njen naiv i parametri $ine aglavlje metode#

    a kod imeđu viti$asti% agrada telo metodea kod imeđu viti$asti% agrada telo metode &rema nepisanom pravilu# naivi metoda se pišu na isti na$in kao&rema nepisanom pravilu# naivi metoda se pišu na isti na$in kao

    naivi atributa 'prva re$ malim slovom# ostala velikim(naivi atributa 'prva re$ malim slovom# ostala velikim(

    Metode mogu imati ulane vrednostiMetode mogu imati ulane vrednosti ) ) parametre# kaoparametre# kaovrednosti koje je potrebno poslati metodi da bi ona mogla davrednosti koje je potrebno poslati metodi da bi ona mogla dase pravilno ivrši*se pravilno ivrši*

     +ko metoda nema parametre prostor imeđu agrada se +ko metoda nema parametre prostor imeđu agrada seostavlja praanostavlja praan

  • 8/18/2019 3. OOP - Metode u Javi [Compatibility Mode]

    3/24

    MetodeMetode &ored toga što nešto radi# metoda može i&ored toga što nešto radi# metoda može i

    da vraća neku vrednost kao reultatda vraća neku vrednost kao reultatira$unavanja 'povratna vrednost metode(ira$unavanja 'povratna vrednost metode( ,eke metode nemaju povratnu vrednost,eke metode nemaju povratnu vrednost

     

     vrednostvrednost tip_povratne_vrednostitip_povratne_vrednosti je jevoidvoid# a kada vraća# a kada vraćatip_povratne_vrednostitip_povratne_vrednosti može biti bilomože biti bilo

    koji prost ili složen tip podatka 'koji prost ili složen tip podatka 'int,int,double, char, boolean, Stringdouble, char, boolean, String# ***(# ***(

    Metoda može da ima samo jednu povratnuMetoda može da ima samo jednu povratnu

    vrednostvrednost

  • 8/18/2019 3. OOP - Metode u Javi [Compatibility Mode]

    4/24

    .adatak .adatak primer kada metoda ne vraća vrednostiprimer kada metoda ne vraća vrednosti

    ,apraviti klasu,apraviti klasu TelevizorTelevizor* Ova klasa treba da ima:* Ova klasa treba da ima:  +tribut +tribut jacinaTona jacinaTona koji je !eo broj i ona$ava trenutnu ja$inu tona nakoji je !eo broj i ona$ava trenutnu ja$inu tona na

    televioru* &o$etna vrednost ovog atributa je / 'ton je utišan do kraja(televioru* &o$etna vrednost ovog atributa je / 'ton je utišan do kraja(  +tribut +tribut trenutniProgramtrenutniProgram koji ona$ava broj programa koji je trenutokoji ona$ava broj programa koji je trenuto

    na televioru 'npr* uklju$en je program 0(* &o$etna vrednost ovogna televioru 'npr* uklju$en je program 0(* &o$etna vrednost ovogatributa e 1*atributa e 1* 

     +tribut +tribut uključenuključen koji ona$ava da li je televior uklju$en ili nije 'ako jekoji ona$ava da li je televior uklju$en ili nije 'ako jeuklju$en ima vrednost "234# ina$e ima vrednost 5+6S4(* Smatra se dauklju$en ima vrednost "234# ina$e ima vrednost 5+6S4(* Smatra se da je na po$etku televior isklju$en* je na po$etku televior isklju$en*

    -reirajte-reirajte:: MetoduMetodu ukljuciukljuci koja uklju$uje televior 'postavlja vrednost atributakoja uklju$uje televior 'postavlja vrednost atributa

    uklju$en na "234(uklju$en na "234( MetoduMetodu iskljuciiskljuci koja isklju$uje televior 'postavlja vrednost atributakoja isklju$uje televior 'postavlja vrednost atributa

    uklju$en na 5+6S4(uklju$en na 5+6S4(

  • 8/18/2019 3. OOP - Metode u Javi [Compatibility Mode]

    5/24

    ClassClass TelevizorTelevizor {{

    intint jacinaTona = 0;jacinaTona = 0;

    intint trenutniProgram = 1;trenutniProgram = 1;

     boolean boolean ukljucen = false;ukljucen = false;

    void ukljuci ()void ukljuci () {{ukljucen = true;ukljucen = true;

    }}

    void iskljuci ()void iskljuci () {{iskljuci = false;iskljuci = false;

    }}

    }}

  • 8/18/2019 3. OOP - Metode u Javi [Compatibility Mode]

    6/24

    7odaj u klasu7odaj u klasu TelevizorTelevizor sledeće metode:sledeće metode: MetoduMetodu pojacajTonpojacajTon koja povećava vrednost atributakoja povećava vrednost atributa jacinaTona jacinaTona a jedana jedan MetoduMetodu smanjiTonsmanjiTon koja smanjuje vrednost atributakoja smanjuje vrednost atributa jacinaTona jacinaTona a jedana jedan MetoduMetodu iskljuciToniskljuciTon koja potpuno utišava ton 'smanjuje vrednostkoja potpuno utišava ton 'smanjuje vrednost jacinaTona jacinaTona na /(na /(

    ClassClass TelevizorTelevizor {{

    intint jacinaTona = 0;jacinaTona = 0;

    intint trenutniProgram = 1;trenutniProgram = 1;

     boolean boolean ukljucen = false;ukljucen = false;

    void ukljuci ()void ukljuci () {{

    ukljucen = true;ukljucen = true;

    }}

    void iskljuci ()void iskljuci () {{

     ukljuciukljuci = false;= false;

    }}

    void pojacajTon ()void pojacajTon () {{

    jacinaTona = jacinaTona + 1;jacinaTona = jacinaTona + 1;

    }}

    voidvoid smanjismanjiTon ()Ton () {{jacinaTona = jacinaTonajacinaTona = jacinaTona -- 1;1;

    }}

    void iskljuciTon ()void iskljuciTon () {{

    jacinaTona = 0;jacinaTona = 0;

    }}

    }}

  • 8/18/2019 3. OOP - Metode u Javi [Compatibility Mode]

    7/24

    Metode koje vMetode koje vraćaju vrednostiraćaju vrednosti

    ,ekada je neop%odno da metode vrate trenutnu,ekada je neop%odno da metode vrate trenutnuvrednost atributa objekta ili vrati reultat nekevrednost atributa objekta ili vrati reultat nekera$unske opera!ijera$unske opera!ije

    3 tom slu$a u se kao ti ovratne vrednosti iše3 tom slu$a u se kao ti ovratne vrednosti iše

    tip vrednosti podatka koji će biti vraćentip vrednosti podatka koji će biti vraćen 3 okviru tela metode koja vraća vrednost mora3 okviru tela metode koja vraća vrednost mora

    se napisati komandase napisati komanda returnreturn koja će ona$itikoja će ona$itivrednost koju je potrebno vratitivrednost koju je potrebno vratiti

    3 trenutku kada se ivrši komanda3 trenutku kada se ivrši komanda returnreturn##ivršavanje metode se prekidaivršavanje metode se prekida

  • 8/18/2019 3. OOP - Metode u Javi [Compatibility Mode]

    8/24

    .adatak .adatak primer kada metoda vraća vrednostiprimer kada metoda vraća vrednosti 7odati u klasu7odati u klasu TelevizorTelevizor sledeće metode:sledeće metode:

    MetoduMetodu promeniProgramNavisepromeniProgramNavise koja povećava vrednostkoja povećava vrednostatributaatributa trenutniProgramtrenutniProgram a jedana jedan

    MetoduMetodu promeniProgramNanizepromeniProgramNanize koja smanjuje vrednostkoja smanjuje vrednostatributaatributa trenutniProgramtrenutniProgram a jedana jedan

      e o ue o u vra renu n rogramvra renu n rogram o a vra a vre nos a r u ao a vra a vre nos a r u atrenutniProgramtrenutniProgram

    MetoduMetodu vratiJacinuTonavratiJacinuTona koja vraća trenutnu vrednost atributakoja vraća trenutnu vrednost atributa jacinaTona jacinaTona

    MetoduMetodu daLiJeUkljucendaLiJeUkljucen koja vraća trenutnu vrednost atributakoja vraća trenutnu vrednost atributaukljucenukljucen

    MetoduMetodu ispisiParametreispisiParametre koja ispisuje na ekranu trenutnekoja ispisuje na ekranu trenutnevrednosti svi% atributavrednosti svi% atributa TelevizoraTelevizora u odgovarajuću porukuu odgovarajuću poruku

  • 8/18/2019 3. OOP - Metode u Javi [Compatibility Mode]

    9/24

    ClassClass TelevizorTelevizor {{

    intint jacinaTona = 0;jacinaTona = 0;

    intint trenutniProgram = 1;trenutniProgram = 1;

     boolean boolean ukljucen = false;ukljucen = false;

    void ukljuci ()void ukljuci () {{

    ukljucen = true;ukljucen = true;

    }}

    void iskljuci ()void iskljuci () {{

    iskljuci = false;iskljuci = false;

    }}

    void pojacajTon ()void pojacajTon () {{

    jacinaTona = jacinaTona + 1;jacinaTona = jacinaTona + 1;

    }}

     

    void promeniProgramNavise ()void promeniProgramNavise () {{

    trenutniProgram =trenutniProgram =trenutniProgram + 1;trenutniProgram + 1;

    }}

    void promeniProgramNanize ()void promeniProgramNanize () {{

    trenutniProgram =trenutniProgram =trenutniProgramtrenutniProgram -- 1;1;

    }}

    int vratiProgram ()int vratiProgram () {{return trenutniProgram;return trenutniProgram;

    }}

    int vratiJacinuTona ()int vratiJacinuTona () {{

     

    jacinaTona = jacinaTonajacinaTona = jacinaTona -- 1;1;}}

    void iskljuciTon ()void iskljuciTon () {{

    jacinaTona = 0;jacinaTona = 0;

    }}

     

    }}

    boolean daLiJeUkljucen ()boolean daLiJeUkljucen () {{

    return ukljucen;return ukljucen;

    }}

    Void ispisiParametre ()Void ispisiParametre () {{System.out.println (“JacinaSystem.out.println (“Jacina

    tona je: “+jacinaTona);tona je: “+jacinaTona);

    System.out.println (“TrenutniSystem.out.println (“Trenutniprogram je: “+program je: “+trenutniProgram);trenutniProgram);

    System.out.println (“TelevizorSystem.out.println (“Televizor

    je ukljucen: “+ ukljucen);je ukljucen: “+ ukljucen);}}

    }}

  • 8/18/2019 3. OOP - Metode u Javi [Compatibility Mode]

    10/24

    &oivanje metode&oivanje metode

    7a bi metode mogle da se poivaju# potrebno je7a bi metode mogle da se poivaju# potrebno jenapraviti objekat# pa tek onda poivati neku metodunapraviti objekat# pa tek onda poivati neku metodupreko naiva objekta i naiva metode*preko naiva objekta i naiva metode*

    ,akon ispisivanja naiva metode koja se poiva moraju,akon ispisivanja naiva metode koja se poiva morajuse obaveno pisati agrade $ak i ako nema parametarase obaveno pisati agrade $ak i ako nema parametarakoji se predaju metodikoji se predaju metodi

    nazivobjekta.nazivMetode ()nazivobjekta.nazivMetode ()

     +ko metoda ima povratnu vrednost prvo je potrebno +ko metoda ima povratnu vrednost prvo je potrebnodeklarisati promenljivudeklarisati promenljivu koja će primiti povratnu vrednostkoja će primiti povratnu vrednostmetode# pa tek onda poivati metodu* "ip promenljivemetode# pa tek onda poivati metodu* "ip promenljivemora biti isti kao i tip povratne vrednosti metodemora biti isti kao i tip povratne vrednosti metode

    tip_promenljivetip_promenljive naziv_promenljivenaziv_promenljive

    naziv_promenljive = nazivobjekta.nazivMetode ()naziv_promenljive = nazivobjekta.nazivMetode ()

  • 8/18/2019 3. OOP - Metode u Javi [Compatibility Mode]

    11/24

    &romenljive&romenljive

    &romenljive predstavljaju neki identifikator 'ime# slovo# ira i sl(&romenljive predstavljaju neki identifikator 'ime# slovo# ira i sl(koji je povean sa nekom vrednošću# pri $emu se ta vrednost možekoji je povean sa nekom vrednošću# pri $emu se ta vrednost možemenjatimenjati

    "ip promenljive odrediće vrednost koja se može uneti u promenljivu"ip promenljive odrediće vrednost koja se može uneti u promenljivu 3 avisnosti od toga gde se deklariš3 avisnosti od toga gde se deklarišuu u kodu i kako se mou kodu i kako se mogugu

     pova # pos o e s e e e vrs e promen v :pova # pos o e s e e e vrs e promen v : 6okalne promenljive 'ili samo promenljive(6okalne promenljive 'ili samo promenljive( ) ) deklarišu se u okvitu teladeklarišu se u okvitu tela

    metodemetode  +tributi +tributi ) ) promenljive koje direktno pripadaju objektima neke klase8promenljive koje direktno pripadaju objektima neke klase8

    definišu se u okviru tela te klasedefinišu se u okviru tela te klase Globalne promenljiveGlobalne promenljive ) ) promenljive koje ne pripadaju pojedina$nimpromenljive koje ne pripadaju pojedina$nim

    objektima neke klase već se koriste na nivou !elog programa8 deklarišuobjektima neke klase već se koriste na nivou !elog programa8 deklarišuse na sli$an na$in kao i atributise na sli$an na$in kao i atributi &arametri&arametri ) ) suštinski parametri metoda predstavljaju promenljive8suštinski parametri metoda predstavljaju promenljive8

    deklarišu se u aglavlju metodadeklarišu se u aglavlju metoda

  • 8/18/2019 3. OOP - Metode u Javi [Compatibility Mode]

    12/24

    .adatak .adatak poivanje metodapoivanje metoda

    9skoristiti klasu "elevior i pret%odnog primera*9skoristiti klasu "elevior i pret%odnog primera*,apraviti klasu "est"elevior koji kreira jedan objekat,apraviti klasu "est"elevior koji kreira jedan objekatklase "elevior i poiva neke od njegovi% metoda*klase "elevior i poiva neke od njegovi% metoda*

    ,ajpre povati metodu,ajpre povati metodu ispisiParametreispisiParametre i uo$ii uo$i po$etnopo$etno

    stanje objekta* ,akon toga poivaj redom sledećestanje objekta* ,akon toga poivaj redom sledećemetode:metode: ukljuci, pojacajTon,ukljuci, pojacajTon,promeniProgramNavise, daLiJeUkljucenpromeniProgramNavise, daLiJeUkljucen iivratiTrenutniProgram.vratiTrenutniProgram.

    &osle svakog poiva metode# povati metodu&osle svakog poiva metode# povati metoduispisiParametreispisiParametre i uo$i promene u vrednosti atributai uo$i promene u vrednosti atributa

  • 8/18/2019 3. OOP - Metode u Javi [Compatibility Mode]

    13/24

    ClassClass TelevizorTelevizor {{

    intint jacinaTona = 0;jacinaTona = 0;

    intint trenutniProgram = 1;trenutniProgram = 1;

     boolean boolean ukljucen = false;ukljucen = false;

    void ukljuci()void ukljuci() {{

    ukljucen = true;ukljucen = true;

    }}

    void iskljuci()void iskljuci() {{

    iskljuci = false;iskljuci = false;

    }}

    void pojacajTon()void pojacajTon() {{

    jacinaTona = jacinaTona + 1;jacinaTona = jacinaTona + 1;

    }}

    void pojacajTon()void pojacajTon() {{

    jacinaTona = jacinaTonajacinaTona = jacinaTona -- 1;1;

    }}

     

    Void ispisiParametre()Void ispisiParametre() {{

    System.out.println (“Jacina tona je:System.out.println (“Jacina tona je:“+jacinaTona);“+jacinaTona);

    System.out.println (“TrenutniSystem.out.println (“Trenutniprogram je: “+ trenutniProgram);program je: “+ trenutniProgram);

    System.out.println (“Televizor jeSystem.out.println (“Televizor jeukljucen: “+ ukljucen);ukljucen: “+ ukljucen);

    }}

    ClassClass TestTelevizorTestTelevizor {{

     public static void  public static void main (Stringmain (String [ ][ ]args) {args) {

    Televizor t1 =Televizor t1 = newnew Televizor();Televizor(); boolean boolean uklj;uklj;

    intint prog;prog;

    t1.ispisiParametre();t1.ispisiParametre();

    t1.ukl ucit1.ukl ucivoid iskljuciTon()void iskljuciTon() {{

    jacinaTona = 0;jacinaTona = 0;}}

    void promeniProgramNavise()void promeniProgramNavise() {{

    trenutniProgram = trenutniProgram + 1;trenutniProgram = trenutniProgram + 1;

    }}

    void promeniProgramNanize()void promeniProgramNanize() {{

    trenutniProgram = trenutniProgramtrenutniProgram = trenutniProgram -- 1;1;

    }}

    int vratiProgram()int vratiProgram() {{

    return trenutniProgram;return trenutniProgram;

    }}

    int vratiJacinuTona()int vratiJacinuTona() {{

    return jacinaTona;return jacinaTona;

    }}

    boolean daLiJeUkljucen()boolean daLiJeUkljucen() {{

    return ukljucen;return ukljucen;

    }}

    t1.ispisiParametre();t1.ispisiParametre();

    t1.pojacanTon();t1.pojacanTon();

    t1.ispisiParametre();t1.ispisiParametre();

    t1.promeniProgramNavise();t1.promeniProgramNavise();

    t1.ispisiParametre();t1.ispisiParametre();

    uklj = t1.daLiJeUkljucen();uklj = t1.daLiJeUkljucen();System.out.println (“Televizor jeSystem.out.println (“Televizor je

    ukljucen: “+ uklj);ukljucen: “+ uklj);

    prog = t1.vratiTrenutniProgram();prog = t1.vratiTrenutniProgram();

    System.out.println (“Na televizijiSystem.out.println (“Na televizijiide program: “+ prog);ide program: “+ prog);

    }}

    }}

    }}

  • 8/18/2019 3. OOP - Metode u Javi [Compatibility Mode]

    14/24

  • 8/18/2019 3. OOP - Metode u Javi [Compatibility Mode]

    15/24

    .adatak .adatak 

    primer metoda sa parametrimaprimer metoda sa parametrima

    ,apravi klasu +utomat,ov!a* Ova klasa bi trebalo da ima:,apravi klasu +utomat,ov!a* Ova klasa bi trebalo da ima:  +tribut stanje koji predstavlja trenutni inos nov!a u automatu 'realan +tribut stanje koji predstavlja trenutni inos nov!a u automatu 'realan

    broj(* &o$etna vrednost ovog atributa je 0//*/broj(* &o$etna vrednost ovog atributa je 0//*/ -M-M Metodu podigni9nos koja prima kao parametar inos nov!a koji korisnikMetodu podigni9nos koja prima kao parametar inos nov!a koji korisnik

    želi da podigne 'realan broj( i smanjuje vrednost atributa stanje a tajželi da podigne 'realan broj( i smanjuje vrednost atributa stanje a tajinos*inos*

    Metodu uloi9nos koja prima kao parametar inos nov!a koji korisnikMetodu uloi9nos koja prima kao parametar inos nov!a koji korisnikželi da uloži 'realan broj( i povećava vrednost atributa stanje a tajželi da uloži 'realan broj( i povećava vrednost atributa stanje a tajinos*inos*

    Metodu vratiStanje koja vraća trenutni inos stanja u automatuMetodu vratiStanje koja vraća trenutni inos stanja u automatu'vrednost atributa stanje('vrednost atributa stanje(

    Metodu ispisiStanje koja na ekranu ispisuje koja je trenutna koli$inaMetodu ispisiStanje koja na ekranu ispisuje koja je trenutna koli$inanov!a u automatu 'vrednost atributa stanje(nov!a u automatu 'vrednost atributa stanje(

    ,apravi klasu &rovera+utomata,ov!a koja kreira dva objekta klase,apravi klasu &rovera+utomata,ov!a koja kreira dva objekta klase +utomat,ov!a* 3 prvi automat nov!a je potrebno uložiti 1//*/; +utomat,ov!a* 3 prvi automat nov!a je potrebno uložiti 1//*/;-M-M i ispisati stanje pre i posle ulaganja* &otrebno je i podići ;

  • 8/18/2019 3. OOP - Metode u Javi [Compatibility Mode]

    16/24

    ClassClass AutomatNovcaAutomatNovca {{

    doubledouble stanje = 5200.0;stanje = 5200.0;

    void podigniIznos(void podigniIznos(doubledouble iznos)iznos) {{

    stanje = stanjestanje = stanje -- iznos;iznos;}}

    void uloziIznos(void uloziIznos(doubledouble iznos)iznos) {{

    stanje = stanje + iznos;stanje = stanje + iznos;

    }}

    double vratiStanje()double vratiStanje() {{return stanje;return stanje;

    }}

    void ispisiStanje()void ispisiStanje() {{

    System.out.println (“Trenutni iznos u automatu je: “+stanje);System.out.println (“Trenutni iznos u automatu je: “+stanje);

    ClassClass ProveraAutomataNovcaProveraAutomataNovca {{

     public static void  public static void main (Stringmain (String [ ] args) {[ ] args) {

    AutomatNovca a1 =AutomatNovca a1 = newnew AutomatNovca();AutomatNovca();

    AutomatNovca a2 =AutomatNovca a2 = newnew AutomatNovca();AutomatNovca();

    a1. ispisiStanje();a1. ispisiStanje();

    a1. uloziIznos(1002.03);a1. uloziIznos(1002.03);

    a1. ispisiStanje();a1. ispisiStanje();

    a2. ispisiStanje();a2. ispisiStanje();

    a2. podigniIznos(234.55);a2. podigniIznos(234.55);

    a2. ispisiStanje();a2. ispisiStanje();

    }}

    }}

    }}

  • 8/18/2019 3. OOP - Metode u Javi [Compatibility Mode]

    17/24

     =idljivost promenljivi% =idljivost promenljivi% i na$in prenosai na$in prenosaparametara metodeparametara metode

    Svi parametri metode i promenljive koje seSvi parametri metode i promenljive koje sedeklarišu u okviru tela metode 'lokalnedeklarišu u okviru tela metode 'lokalnepromenljive( su vidljivi isklju$ivo u okviru tela tepromenljive( su vidljivi isklju$ivo u okviru tela te

    **

    vidljivi u okviru tela svi% metoda te klase*vidljivi u okviru tela svi% metoda te klase* -onflikt vidljivosti se može javiti ako se u okviru-onflikt vidljivosti se može javiti ako se u okviru

    tela metode koristi parametar ili promenljiva kojitela metode koristi parametar ili promenljiva koji

    imaju isti naiv kao i neki atribut* 3 tom slu$ajuimaju isti naiv kao i neki atribut* 3 tom slu$ajuse koristi reervisana re$se koristi reervisana re$ thisthis da idvoji atribut uda idvoji atribut uodnosu na druge promenljive*odnosu na druge promenljive*

  • 8/18/2019 3. OOP - Metode u Javi [Compatibility Mode]

    18/24

    &rimer v&rimer vidljivostidljivostii promenljivi%promenljivi% i na$ina prenosa parametara metodei na$ina prenosa parametara metode

    ,eka klasa,eka klasa KalkulatorKalkulator ima dve metodeima dve metode ) ) saerisaeri ii oimKrugaoimKruga* &rva* &rvametoda dobija dva !ela broja kao parametre i vraća reultat sabiranja# dokmetoda dobija dva !ela broja kao parametre i vraća reultat sabiranja# dokdruga prima polupre$nik kruga kao parametar i vraća obim kruga kaodruga prima polupre$nik kruga kao parametar i vraća obim kruga kaoreultat* -lasa ima i atributreultat* -lasa ima i atribut pipi koji predstavlja vrednost odgovarajućekoji predstavlja vrednost odgovarajuće

    matemati$ke konstante*matemati$ke konstante*

    ClassClass KalkulatorKalkulator {{

    doubledouble pi = 3.14;pi = 3.14;

    intint saberi(saberi(intint a,a, intint b)b) {{intint rezultatrezultat

    rezultat = a + b;rezultat = a + b;

    returnreturn rezultat;rezultat;

    }}

    doubledouble obimKruga(obimKruga(doubledouble poluprecnik)poluprecnik) {{

    doubledouble rezultatrezultat

    rezultat = 2 * poluprecnik * pi;rezultat = 2 * poluprecnik * pi;

    returnreturn rezultat;rezultat;

    }}}}

  • 8/18/2019 3. OOP - Metode u Javi [Compatibility Mode]

    19/24

    &rimer a konflikt vidljivosti&rimer a konflikt vidljivosti

    ,eka klasa,eka klasa !soa!soa ima atribut ime i metoduima atribut ime i metodu unesi"meunesi"me koja kao parametarkoja kao parametarprima neko ime i atributu dodeljuje tu vrednost* ,eka se parametar oveprima neko ime i atributu dodeljuje tu vrednost* ,eka se parametar ove

    metode takođe ove ime*metode takođe ove ime*

    ClassClass OsobaOsoba {{

    StringString ime;ime;

    void void unesiIme(StringunesiIme(String ime)ime) {{ime = ime;ime = ime;

    }}

    }}

    void void unesiIme(StringunesiIme(String ime)ime) {{

    thisthis.ime = ime;.ime = ime;

    }}

  • 8/18/2019 3. OOP - Metode u Javi [Compatibility Mode]

    20/24

    &reklapanje metoda&reklapanje metoda

    ,aivi atributa u okviru jedne klase moraju,aivi atributa u okviru jedne klase morajuda budu jedinstda budu jedinstvvenieni ) ) ne mogu se pojavitine mogu se pojavitidva atributa sa istim naivomdva atributa sa istim naivom 

    Metode u jednoj klasi mogu imati isteMetode u jednoj klasi mogu imati istenaive# ali moraju imati rali$ite parametrenaive# ali moraju imati rali$ite parametre

    da bi i% Java ralikovala 'druga$iju listuda bi i% Java ralikovala 'druga$iju listuparametaraparametara ) ) broj parametara i>ili nji%ovbroj parametara i>ili nji%ovtip(tip(

  • 8/18/2019 3. OOP - Metode u Javi [Compatibility Mode]

    21/24

    &rimer a preklapanje metoda&rimer a preklapanje metoda

    ,apraviti klasu -alkulator koja ima dve metode sa istim naivom,apraviti klasu -alkulator koja ima dve metode sa istim naivom ) ) saberi* &rva metoda prima dva !ela broja kaosaberi* &rva metoda prima dva !ela broja kaoparametre i vraća nji%ov bir '!eo broj(* 7ruga metoda prima dva realna broja kao parametre i vraća nji%ov birparametre i vraća nji%ov bir '!eo broj(* 7ruga metoda prima dva realna broja kao parametre i vraća nji%ov bir'realan broj(* ,apisati i klasu "est-alkulator koja poiva ove metode*'realan broj(* ,apisati i klasu "est-alkulator koja poiva ove metode*

    ClassClass KalkulatorKalkulator {{

    intint saberi(saberi(intint x,x, intint y)y) {{

    intint rezultatrezultat

    rezultat = x + y;rezultat = x + y;returnreturn rezultat;rezultat;

    }}

    doubledouble saberi (saberi (doubledouble x,x, doubledouble y)y) {{

    doubledouble rezultatrezultat

     

    returnreturn rezultat;rezultat;

    }}

    }}

    ClassClass TestKalkulatorTestKalkulator {{

     public static void  public static void main (Stringmain (String [ ] args) {[ ] args) {

    Kalkulator k =Kalkulator k = newnew Kalkulator();Kalkulator();

    double r1;double r1;

    r1 = k.saberi(12.0, 15.0);r1 = k.saberi(12.0, 15.0);

    System.out.println (r1);System.out.println (r1);

    int r2;int r2;

    r2 = k.saberi(12, 15);r2 = k.saberi(12, 15);

    System.out.println (r2);System.out.println (r2);

    }}}}

    }}

  • 8/18/2019 3. OOP - Metode u Javi [Compatibility Mode]

    22/24

    Globalne promenljive i globalne metodeGlobalne promenljive i globalne metode

    Objekti imaju atribute i metode kojObjekti imaju atribute i metode kojee se mogu poivati i koristiti tek kada se objekat ini!ijaliujese mogu poivati i koristiti tek kada se objekat ini!ijaliuje

    Objekat ima i svoje asebne vrednosti atributaObjekat ima i svoje asebne vrednosti atributa &onekad je neop%odno da više objekata 'i isit% ili rali$iti% klasa( deli jednu promenljivu&onekad je neop%odno da više objekata 'i isit% ili rali$iti% klasa( deli jednu promenljivu "akve promenljive su vidljive na nivou !elog programa i ovu se globalne promenljive"akve promenljive su vidljive na nivou !elog programa i ovu se globalne promenljive 3 Javi se globalne promenljive ona$avaju reervisanom re$i3 Javi se globalne promenljive ona$avaju reervisanom re$i staticstatic i pišu se u okviru tela klasei pišu se u okviru tela klase

    kao atributi klasekao atributi klase

    static tip_vrednostistatic tip_vrednosti nazivPromenljivenazivPromenljive

    &ristup ovoj promenljivoj realiuje se direktno preko klase&ristup ovoj promenljivoj realiuje se direktno preko klase

    NazivKlase.nazivPromenljiveNazivKlase.nazivPromenljive

      &onekad postoji i potreba a metodama koje pružaju neku opštu funk!ioanlanost koja nije&onekad postoji i potreba a metodama koje pružaju neku opštu funk!ioanlanost koja nije

    striktno veana a neku klasu* Ovakve metode u Javi $esto postaju globalne metodestriktno veana a neku klasu* Ovakve metode u Javi $esto postaju globalne metode Globalne metode se u Javi ona$avaju reervisanom re$iGlobalne metode se u Javi ona$avaju reervisanom re$i staticstatic i $esto se naivaju stati$kei $esto se naivaju stati$ke

    metodemetode

    static tip_vrednostistatic tip_vrednosti nazivMetode (... parametri...)nazivMetode (... parametri...) {{

    // telo metode// telo metode

    }}

    2alika u odnosu na obi$nu metodu je ta što se ne mora ini!ijaliovati objekat te klase da bi se2alika u odnosu na obi$nu metodu je ta što se ne mora ini!ijaliovati objekat te klase da bi semetoda koristila# već se poiv vrši preko naiva klasemetoda koristila# već se poiv vrši preko naiva klase

    NazivKlase.nazivMetode (argumenti);NazivKlase.nazivMetode (argumenti);

    & i& i

  • 8/18/2019 3. OOP - Metode u Javi [Compatibility Mode]

    23/24

    &rimer&rimer ,apraviti klasu -alkulator i u njoj definisati dve globalne metode: saberi i odumi* Obe metode,apraviti klasu -alkulator i u njoj definisati dve globalne metode: saberi i odumi* Obe metode

    primaju dva !ela broja kao parametre# a vraćaju reultat opera!ije sabiranja odnosno oduimanja*primaju dva !ela broja kao parametre# a vraćaju reultat opera!ije sabiranja odnosno oduimanja*,apravi klasu test-alkulator koja poiva ove dve metode*,apravi klasu test-alkulator koja poiva ove dve metode*

    ClassClass KalkulatorKalkulator {{

    staticstatic intint saberi(saberi(intint x,x, intint y)y) {{

    intint rezultatrezultat

    rezultat = x + y;rezultat = x + y;

    returnreturn rezultat;rezultat;

    }}

    staticstatic intint oduzmi (oduzmi (intint x,x, intint y)y) {{

    intint rezultatrezultat

    rezultat = xrezultat = x -- y;y;

    returnreturn rezultat;rezultat;

    }}

    }}ClassClass TestKalkulatorTestKalkulator {{

     public static void  public static void main (Stringmain (String [ ] args) {[ ] args) {

    intint x = 10;x = 10;

    intint y = 5;y = 5;

    intint r1;r1;

    r1 = Kalkulator.saberi(x, y);r1 = Kalkulator.saberi(x, y);System.out.println (r1);System.out.println (r1);

    intint r2;r2;

    r2 = Kalkulator.saberi(x, y);r2 = Kalkulator.saberi(x, y);

    System.out.println (r2);System.out.println (r2);

    }}

    }}}}

  • 8/18/2019 3. OOP - Metode u Javi [Compatibility Mode]

    24/24

    -onstante-onstante .a definisanje konstanti u okviru neke klase koristi se reervisana re$.a definisanje konstanti u okviru neke klase koristi se reervisana re$ #inal#inal

    final tip_vrednostifinal tip_vrednosti NAZIV_KONSTANTE = vrednost;NAZIV_KONSTANTE = vrednost;

    &rema nepisanom pravilu naivi konstante se pišu svim velikim slovima8 ako&rema nepisanom pravilu naivi konstante se pišu svim velikim slovima8 ako

    -onstantama se moraju dodeljivati vrednosti odma% prilikom definisanja jer-onstantama se moraju dodeljivati vrednosti odma% prilikom definisanja jer je to kasnije nemoguće je to kasnije nemoguće &oivanje konstante se vrši na isti na$in kao poivanje atributa klase8 jedina&oivanje konstante se vrši na isti na$in kao poivanje atributa klase8 jedina

    ralika je u tome što konstanti nikada ne može da se dodeli nova vrednostralika je u tome što konstanti nikada ne može da se dodeli nova vrednost .a neke konstante je neop%odno da budu globalno vidljive pa se pored re$i.a neke konstante je neop%odno da budu globalno vidljive pa se pored re$i

    #inal#inal stavlja i re$stavlja i re$ staticstatic

    static final tip_vrednostistatic final tip_vrednosti NAZIV_KONSTANTE = vrednost;NAZIV_KONSTANTE = vrednost;