You are on page 1of 24

Objektno orjentisano

programiranje:
Metode u Javi

prof dr Gordana orevi

AUTOMOBIL

Metode
Svaka klasa moe imati odreena ponaanja koja se
mogu izraziti u obliku metode
definicija
definicij
a metoda u Javi vri se u okviru tela klase:

marka
model
godinaProizvodnje
registracija

upali()
ugasi()
kreni()
stani()

tip_povratne_vrednosti nazivMetode (...parametri...) {


// telo metoda
}

Tip povratne vrednosti,


vrednosti, njen naziv i parametri ine zaglavlje metode,
a kod izmeu vitiastih zagrada telo metode
Prema nepisanom pravilu, nazivi metoda se piu na isti nain kao
nazivi atributa (prva re malim slovom, ostala velikim)

Metode mogu imati ulazne vrednosti parametre, kao


vrednosti koje je potrebno poslati metodi da bi ona mogla da
se pravilno izvri.
Ako metoda nema parametre prostor izmeu zagrada se
ostavlja prazan

Metode
Pored toga to neto radi, metoda moe i
da vraa neku vrednost kao rezultat
izraunavanja (povratna vrednost metode)
Neke metode nemaju povratnu vrednost
Kada metoda ne vraa nikakvu povratnu
vrednost tip_povratne_vrednosti je
void,, a kada vraa
void
tip_povratne_vrednosti moe biti bilo
koji prost ili sloen tip podatka (int,
(int,
double, char, boolean, String,
String, ...)
Metoda moe da ima samo jednu povratnu
vrednost

Zadatak
primer kada metoda ne vraa vrednosti

Napraviti klasu Televizor


Televizor.. Ova klasa treba da ima:
Atribut jacinaTona koji je ceo broj i oznaava trenutnu jainu tona na
televizoru. Poetna vrednost ovog atributa je 0 (ton je utian do kraja)
Atribut trenutniProgram koji oznaava broj programa koji je trenuto
na televizoru (npr. ukljuen je program 5). Poetna vrednost ovog
atributa je 1.
Atribut ukljuen koji oznaava da li je televizor ukljuen ili nije (ako je
ukljuen ima vrednost TRUE, inae ima vrednost FALSE). Smatra se da
je na poetku televizor iskljuen.

Kreirajte::
Kreirajte
Metodu ukljuci koja ukljuuje televizor (postavlja vrednost atributa
ukljuen na TRUE)
Metodu iskljuci koja iskljuuje televizor (postavlja vrednost atributa
ukljuen na FALSE)

Class Televizor {
int jacinaTona = 0;
int trenutniProgram = 1;
boolean ukljucen = false;
void ukljuci () {
ukljucen = true;
}
void iskljuci () {
iskljuci = false;
}
}

Dodaj u klasu Televizor sledee metode:


Metodu pojacajTon koja poveava vrednost atributa jacinaTona za jedan
Metodu smanjiTon koja smanjuje vrednost atributa jacinaTona za jedan
Metodu iskljuciTon koja potpuno utiava ton (smanjuje vrednost jacinaTona na 0)
Class Televizor {
int jacinaTona = 0;
int trenutniProgram = 1;
boolean ukljucen = false;
void ukljuci () {
ukljucen = true;
}
void iskljuci () {
ukljuci = false;
}

void pojacajTon () {
jacinaTona = jacinaTona + 1;
}
void smanjiTon
smanjiTon () {
jacinaTona = jacinaTona - 1;
}
void iskljuciTon () {
jacinaTona = 0;
}
}

Metode koje vraaju


vraaju vrednosti
Nekada je neophodno da metode vrate trenutnu
vrednost atributa objekta ili vrati rezultat neke
raunske operacije
U tom sluaju se kao tip povratne vrednosti pie
tip vrednosti podatka koji e biti vraen
U okviru tela metode koja vraa vrednost mora
se napisati komanda return koja e oznaiti
vrednost koju je potrebno vratiti
U trenutku kada se izvri komanda return
return,,
izvravanje metode se prekida

Zadatak
primer kada metoda vraa vrednosti
Dodati u klasu Televizor sledee metode:

Metodu promeniProgramNavise koja poveava vrednost


atributa trenutniProgram za jedan
Metodu promeniProgramNanize koja smanjuje vrednost
atributa trenutniProgram za jedan
Metodu vratiTrenutniProgram koja vraa vrednost atributa
trenutniProgram
Metodu vratiJacinuTona koja vraa trenutnu vrednost atributa
jacinaTona
Metodu daLiJeUkljucen koja vraa trenutnu vrednost atributa
ukljucen
Metodu ispisiParametre koja ispisuje na ekranu trenutne
vrednosti svih atributa Televizora uz odgovarajuu poruku

Class Televizor {
int jacinaTona = 0;
int trenutniProgram = 1;
boolean ukljucen = false;

void promeniProgramNavise () {
trenutniProgram =
trenutniProgram + 1;
}

void ukljuci () {
ukljucen = true;
}

void promeniProgramNanize () {
trenutniProgram =
trenutniProgram - 1;
}

void iskljuci () {
iskljuci = false;
}

int vratiProgram () {
return trenutniProgram;
}

void pojacajTon () {
jacinaTona = jacinaTona + 1;
}

int vratiJacinuTona () {
return jacinaTona;
}

void pojacajTon () {
jacinaTona = jacinaTona - 1;
}

boolean daLiJeUkljucen () {
return ukljucen;
}

void iskljuciTon () {
jacinaTona = 0;
}

Void ispisiParametre () {
System.out.println (Jacina
tona je: +jacinaTona);
System.out.println (Trenutni
program je: +
trenutniProgram);
System.out.println (Televizor
je ukljucen: + ukljucen);
}
}

Pozivanje metode
Da bi metode mogle da se pozivaju, potrebno je
napraviti objekat, pa tek onda pozivati neku metodu
preko naziva objekta i naziva metode.
Nakon ispisivanja naziva metode koja se poziva moraju
se obavezno pisati zagrade ak i ako nema parametara
koji se predaju metodi
nazivobjekta.nazivMetode ()
Ako metoda ima povratnu vrednost prvo je potrebno
deklarisati promenljivu koja e primiti povratnu vrednost
metode, pa tek onda pozivati metodu. Tip promenljive
mora biti isti kao i tip povratne vrednosti metode
tip_promenljive naziv_promenljive
naziv_promenljive = nazivobjekta.nazivMetode ()

Promenljive
Promenljive predstavljaju neki identifikator (ime, slovo, izraz i sl)
koji je povezan sa nekom vrednou, pri emu se ta vrednost moe
menjati
Tip promenljive odredie vrednost koja se moe uneti u promenljivu
U zavisnosti od toga gde se deklariu
deklariu u kodu i kako se mo
mogu
gu
pozvati, postoje sledee vrste promenljivih:
Lokalne promenljive (ili samo promenljive) deklariu se u okvitu tela
metode
Atributi promenljive koje direktno pripadaju objektima neke klase;
definiu se u okviru tela te klase
Globalne promenljive promenljive koje ne pripadaju pojedinanim
objektima neke klase ve se koriste na nivou celog programa; deklariu
se na slian nain kao i atributi
Parametri sutinski parametri metoda predstavljaju promenljive;
deklariu se u zaglavlju metoda

Zadatak
pozivanje metoda
Iskoristiti klasu Televizor iz prethodnog primera.
Napraviti klasu TestTelevizor koji kreira jedan objekat
klase Televizor i poziva neke od njegovih metoda.
Najpre pozvati metodu ispisiParametre i uoi poetno
stanje objekta. Nakon toga pozivaj redom sledee
metode: ukljuci, pojacajTon,
promeniProgramNavise, daLiJeUkljucen i
vratiTrenutniProgram.
Posle svakog poziva metode, pozvati metodu
ispisiParametre i uoi promene u vrednosti atributa

Class Televizor {
int jacinaTona = 0;
int trenutniProgram = 1;
boolean ukljucen = false;
void ukljuci() {
ukljucen = true;
}
void iskljuci() {
iskljuci = false;
}
void pojacajTon() {
jacinaTona = jacinaTona + 1;
}

Void ispisiParametre() {
System.out.println (Jacina tona je:
+jacinaTona);
System.out.println (Trenutni
program je: + trenutniProgram);
System.out.println (Televizor je
ukljucen: + ukljucen);
}
Class TestTelevizor {
public static void main (String [ ]
args) {
Televizor t1 = new Televizor();
boolean uklj;
int prog;

void pojacajTon() {
jacinaTona = jacinaTona - 1;
}

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

void iskljuciTon() {
jacinaTona = 0;
}

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

void promeniProgramNavise() {
trenutniProgram = trenutniProgram + 1;
}
void promeniProgramNanize() {
trenutniProgram = trenutniProgram - 1;
}

t1.promeniProgramNavise();
t1.ispisiParametre();
uklj = t1.daLiJeUkljucen();
System.out.println (Televizor je
ukljucen: + uklj);

int vratiProgram() {
return trenutniProgram;
}

prog = t1.vratiTrenutniProgram();
System.out.println (Na televiziji
ide program: + prog);

int vratiJacinuTona() {
return jacinaTona;
}
boolean daLiJeUkljucen() {
return ukljucen;
}

}
}
}

Metode koje imaju parametre


Parametri metode predstavljaju vrednosti koje se prosleuju metodama da
bi one mogle pravilno da se izvre
Metoda moe imati nijedan,
nijedan, jeda
jedan ili vie parametara
Parametri se deklariu u zaglavlju metode na isti nain kao i promenjljive
(prvo tip vrednosti, pa naziv parametra); ako metoda ima vie parametara
oni se odvajaju zarezom
tip_
tip
_povratne_vrednosti nazivMetode (tip_parametra
(tip_parametra parametar) {
// telo metoda
}

Pozivanje metoda koje imaju parametre vri se tako to se u zagradi


navode konkretne vrednosti ili promenljive. Kada se prilikom pozivanja
metode proslede ove konkretne vrednosti one se nazivaju argumenti.
U okviru poziva metode mora da se ispotuje broj parametara, njihov tip i
redosled..
redosled
Tako, ako metoda prima dva parametra nekog tipa, svaki poziv te metode
mora da bude takav da se metodi prosleuju tano dva argumenta koji
odgovaraju parametrima po tipu i redosledu
nazivMetode(argument)

Zadatak
primer metoda sa parametrima

Napravi klasu AutomatNovca. Ova klasa bi trebalo da ima:


Atribut stanje koji predstavlja trenutni iznos novca u automatu (realan
broj). Poetna vrednost ovog atributa je 5200.0 KM
Metodu podigniIznos koja prima kao parametar iznos novca koji korisnik
eli da podigne (realan broj) i smanjuje vrednost atributa stanje za taj
iznos.
Metodu uloziIznos koja prima kao parametar iznos novca koji korisnik
eli da uloi (realan broj) i poveava vrednost atributa stanje za taj
iznos.
Metodu vratiStanje koja vraa trenutni iznos stanja u automatu
(vrednost atributa stanje)
Metodu ispisiStanje koja na ekranu ispisuje koja je trenutna koliina
novca u automatu (vrednost atributa stanje)

Napravi klasu ProveraAutomataNovca koja kreira dva objekta klase


AutomatNovca. U prvi automat novca je potrebno uloiti 1002.03
KM i ispisati stanje pre i posle ulaganja. Potrebno je i podii 234.55
KM iz drugog automata i ispisati stanje automata pre i posle
ulaganja.

Class AutomatNovca {
double stanje = 5200.0;
void podigniIznos(double
podigniIznos(double iznos) {
stanje = stanje - iznos;
}
void uloziIznos(double
uloziIznos(double iznos) {
stanje = stanje + iznos;
}
double vratiStanje() {
return stanje;
}
void ispisiStanje() {
System.out.println (Trenutni iznos u automatu je: +stanje);
}
Class ProveraAutomataNovca {
public static void main (String [ ] args) {
AutomatNovca a1 = new AutomatNovca();
AutomatNovca a2 = new AutomatNovca();
a1. ispisiStanje();
a1. uloziIznos(1002.03);
a1. ispisiStanje();
a2. ispisiStanje();
a2. podigniIznos(234.55);
a2. ispisiStanje();
}
}
}

Vidljivost promenljivih i nain prenosa


parametara metode
Svi parametri metode i promenljive koje se
deklariu u okviru tela metode (lokalne
promenljive) su vidljivi iskljuivo u okviru tela te
metode i nigde drugo. Svi atributi klase su uvek
vidljivi u okviru tela svih metoda te klase.
Konflikt vidljivosti se moe javiti ako se u okviru
tela metode koristi parametar ili promenljiva koji
imaju isti naziv kao i neki atribut. U tom sluaju
se koristi rezervisana re this da izdvoji atribut u
odnosu na druge promenljive.

Primer vidljivost
vidljivostii promenljivih i naina prenosa parametara metode
Neka klasa Kalkulator ima dve metode saberi i obimKruga
obimKruga.. Prva
metoda dobija dva cela broja kao parametre i vraa rezultat sabiranja, dok
druga prima poluprenik kruga kao parametar i vraa obim kruga kao
rezultat. Klasa ima i atribut pi koji predstavlja vrednost odgovarajue
matematike konstante.
Class Kalkulator {
double pi = 3.14;
int saberi(
saberi(int
int a, int b) {
int rezultat
rezultat = a + b;
return rezultat;
}
double obimKruga(
obimKruga(double
double poluprecnik) {
double rezultat
rezultat = 2 * poluprecnik * pi;
return rezultat;
}
}

Primer za konflikt vidljivosti


Neka klasa Osoba ima atribut ime i metodu unesiIme koja kao parametar
prima neko ime i atributu dodeljuje tu vrednost. Neka se parametar ove
metode takoe zove ime.
Class Osoba {
String ime;
void unesiIme(String ime) {
ime = ime;
}
}

void unesiIme(String ime) {


this.ime
this
.ime = ime;
}

Preklapanje metoda

Nazivi atributa u okviru jedne klase moraju


da budu jedinstv
jedinstveni ne mogu se pojaviti
dva atributa sa istim nazivom
Metode u jednoj klasi mogu imati iste
nazive, ali moraju imati razliite parametre
da bi ih Java razlikovala (drugaiju listu
parametara broj parametara i/ili njihov
tip)

Primer za preklapanje metoda


Napraviti klasu Kalkulator koja ima dve metode sa istim nazivom saberi. Prva metoda prima dva cela broja kao
parametre i vraa njihov zbir (ceo broj). Druga metoda prima dva realna broja kao parametre i vraa njihov zbir
(realan broj). Napisati i klasu TestKalkulator koja poziva ove metode.
Class Kalkulator {
int saberi(
saberi(int
int x, int y) {
int rezultat
rezultat = x + y;
return rezultat;
}
double saberi (double
(double x, double y) {
double rezultat
rezultat = x + y;
return rezultat;
}
}
Class TestKalkulator {
public static void main (String [ ] args) {
Kalkulator k = new Kalkulator();
double r1;
r1 = k.saberi(12.0, 15.0);

System.out.println (r1);
int r2;
r2 = k.saberi(12, 15);

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

Globalne promenljive i globalne metode


Objekti imaju atribute i metode koje
koje se mogu pozivati i koristiti tek kada se objekat inicijalizuje
Objekat ima i svoje zasebne vrednosti atributa
Ponekad je neophodno da vie objekata (iz isith ili razliitih klasa) deli jednu promenljivu
Takve promenljive su vidljive na nivou celog programa i zovu se globalne promenljive
U Javi se globalne promenljive oznaavaju rezervisanom rei static i piu se u okviru tela klase
kao atributi klase
static tip_vrednosti nazivPromenljive
Pristup ovoj promenljivoj realizuje se direktno preko klase
NazivKlase.nazivPromenljive
Ponekad postoji i potreba za metodama koje pruaju neku optu funkcioanlanost koja nije
striktno vezana za neku klasu. Ovakve metode u Javi esto postaju globalne metode
Globalne metode se u Javi oznaavaju rezervisanom rei static i esto se nazivaju statike
metode
static tip_vrednosti nazivMetode (... parametri...) {
// telo metode
}
Razlika u odnosu na obinu metodu je ta to se ne mora inicijalizovati objekat te klase da bi se
metoda koristila, ve se poziv vri preko naziva klase
NazivKlase.nazivMetode (argumenti);

Primer
Napraviti klasu Kalkulator i u njoj definisati dve globalne metode: saberi i oduzmi. Obe metode
primaju dva cela broja kao parametre, a vraaju rezultat operacije sabiranja odnosno oduzimanja.
Napravi klasu testKalkulator koja poziva ove dve metode.
Class Kalkulator {
static int saberi(
saberi(int
int x, int y) {
int rezultat
rezultat = x + y;
return rezultat;
}
static int oduzmi (int
(int x, int y) {
int rezultat
rezultat = x - y;
return rezultat;
}
}
Class TestKalkulator {
public static void main (String [ ] args) {
int x = 10;
int y = 5;
int r1;
r1 = Kalkulator.saberi(x, y);
System.out.println (r1);
int r2;
r2 = Kalkulator.saberi(x, y);
System.out.println (r2);
}
}
}

Konstante
Za definisanje konstanti u okviru neke klase koristi se rezervisana re final
final tip_vrednosti NAZIV_KONSTANTE = vrednost;
Prema nepisanom pravilu nazivi konstante se piu svim velikim slovima; ako
se naziv sastoji od vie rei one se odvajaju znakom donje crte
Konstantama se moraju dodeljivati vrednosti odmah prilikom definisanja jer
je to kasnije nemogue
Pozivanje konstante se vri na isti nain kao pozivanje atributa klase; jedina
razlika je u tome to konstanti nikada ne moe da se dodeli nova vrednost
Za neke konstante je neophodno da budu globalno vidljive pa se pored rei
final stavlja i re static
static final tip_vrednosti NAZIV_KONSTANTE = vrednost;

You might also like