Professional Documents
Culture Documents
Pages From Java Objektno Orjentisano Programiranje
Pages From Java Objektno Orjentisano Programiranje
6
Objektno orijentirano
program1ran] e
75
76
Klasa i objekt
Motiv za objektno-orijentirano programiranje naveli smo u proslom naslovu, sama ideja
objektno-orijentiranog programiranja potekla je iz naseg, realnog svijeta. Okrenemo se oko sebe
vidjet cemo neke objekte, npr. automobile, avione, zgrade, kuce, motocikle, televizore,... Prilikom
programiranja nerijetko cemo u svojim programima koristiti upravo njih ill neke druge
imaginarne objekte, kao sto su trokut, krug, jednadZba, broj,...
KaZemo li npr. automobil, avian ill trokut, mislimo na Citavu klasu automobila, aviona ill trokuta,
mislimo na sve automobile, avione ill trokute. Medutim Wemo li npr. crveni A3, izbor ce biti vee
malo smanjen, znat eemo da su to samo crveni automobill marke Audi tip A3. Znamo li npr.
jos i registarsku oznaku znat eemo toCn.o koji je to automobil, a ako radimo u policiji, znat eemo sve i
o vlasniku automobila, jaCinu motora, godinu proizvodnje,... Nakon sto znamo sve te detalje, vise
ne govorimo o Citavoj klasi automobila vee o konkretnom automobilu o objektu automobil.
Upravo tako je i u programiranju. Klasa ee biti svojevrstan predlozak za objekt, ona sadrzi
opcenita svojstva. Nakon sto nek.u klasu detaljno opisemo ona postaje objekt odnosno instanca.
Instanca je samo drugi naziv za objekt. Dakle objekt odnosno instanca su konkretizacija
klase. Takva konkretizacija klase, definiranje osnovnih svojstava klase nazivamo kreiranje
(mstanciranje) objekta.
Primjer 6 -1:
Neka osnovna svojstva automobila hila bi: marka, tip, snaga, maksimalna brzina, snaga, boja, broj
sasije, registracijska oznaka. Ukoliko ne znamo sva navedena svojstva ill bar vetinu njih,
govorimo o klasi automobil. Medutim ako kaiemo to je Mazda, 121, snaga je 38 k:w, maksimalna
brzina je 180 km/h plave je boje, klasu smo uvelike smanjill. Znamo li jos i broj sasije ill
registracijsku oznaku znat eemo toCn.o o kojem se automobilu na ulici radi i tada govorimo o tom
automobilu kao objektu.
Osnovna svojstva trok.uta hila hi duljine stranica i mjere kutova. Kazemo li trokut mislim na bilo
koji trokut koji postoji i u tom slucaju je trokut klasa. Medutim, kazemo li trokut Cije su duljine
stranica 3, 4 i 5 em, znamo toeno o kojem se trokutu radi i znamo sve o njemu te govorimo o
objektu trokut Cije su stranice 3, 4 i 5 em.
Do sada smo rekli da klase opcenito imaju neka svojstva. Kod automobila su to bill marka, tip,...
Osim svojstava, nad klasama je moguce izvr8avati odredene radnje. Neke radnje kod automobila
hi bile: upali motor, ubaci u prvu brzinu dodaj gas, pritisni spojku,... Slicno je i u programiranju,
sto znaCi da ee klase moCi imati neka svojstva i neke radnje koje ce se nad klasama moCi
izvrsavati tzv. metode.
Svojstva ce u stvari biti neke globalne varijable, dok ce metode biti funkcije (metode) definirane
unutar neke klase. Opcenito eemo svojstva i metode zvati elementima klase.
Opcenito je cilj klase da njenim svojstvima i metodama mo.Zemo pristupati iz drugih klasa. Npr.
definiramo li klasu koja ce izmedu ostalih sadclavati metodu koja ce provjeravati je li neki broj
prost, tada bismo h*li toj metodi pristupati iz drugih klasa. Opeenito, da bismo svojstvu ill
metodi neke klase mogli pristupati iz druge klase, one trebaju biti deklarirane public Gavne).
Osim public, klasa mo.Ze imati i elemente (svojstva ill metode) koje ce biti samo pomocne za
definiciju public metoda i ne trebaju se moCi pozivati u drugim klasama. Za takve cemo metode
reCi da su private. Npr. u klasi u kojoj se nalazi metoda koja provjerava je li neki broj prost, moze
postojati metoda koja ce brojati koliko neki broj ima djelitelja, ta metoda moze biti pomoena za
metodu koja provjerava je li neki broj prost, no nju ne moramo moCi pozivati iz drugih klasa,
stoga ona maze biti private metoda.
77
SljedeCi vazan pojam kada govorimo o k.lasama je konstruktor k.lase. Konstruktor k.lase je
metoda unutar k.lase) koja ima isto ime kao klasa a ne vraca nikakav tip. Konst:ruktor se izvrlava
prilikom kreiranja objekta. On ne vraca nikakvu vrijednost) a namjena mu je inicijaliziranje
svojstava objekta, postavljanje svojstava na neku pocetnu vrijednost. )edna k.lasa moze imati jedan
ili vise konstruktora. Vee smo rek.li da konstruktor ima isto ima kao k.lasa. Sarna po sebi se namecu
pitanje) koja je namjena vise konstruktora? Kako je moguce da dvije ilivise metoda imaju
isto ime? K.ako ce klasa znati koju metodu tteba izvrSiti? U stvari se radio tome da ako klasa ima
dva ista konsttuktora) onda oni moraju imati razliCiti broj parametara. Vec smo rek.li da je
namjena konsttuktora inicijalizacija svojstava objekta. Mi objekt mozemo kreirati bez da znamo
vrijednosti svih svojstava) u tom slucaju ce se svojstva postaviti na neke inicijalne vrijednosti. U
tom slucaju cemo vrijednosti svojstava definirati kada ih saznamo. Npr. ako imamo klasu auto,
nije nu.Zno da prilikom kreiranja objekta tipa a11to znamo sva njegova svojstva. U tom slucaju
cemo svojstva inicijalizirati na neke pocetne vrijednosti, npr. za maksimalna brzina ce biti 100
km/h ako drugaCije nije receno)"'
Ukoliko prilikom kreiranja objekta znamo vrijednosti svih svojstava klase) mozemo kreirati objekt
s tim svojstvima.
Upravo je to namjena vise konstruktora. U prvom slucaju cemo pozvati konstruktor bez
parametara) koji ce svojstva inicijalizirati na neku pocetnu vrijednost, najce5ce 0 ako se radi o
numerickim vrijednostima odnosno prazan stting ako se radi o tekstualnim vrijednostima) to
definira sam programer k.lase. U drugom slucaju cemo pozvati konsttuktor sa parametrima) koji
ce vrijednosti svojstava postaviti na vrijednosti koje smo proslijedili preko parametara.
Opcenito je slucaj da k.lasa moze imati dvije ili vise metode koje se jednako zovu. U tom slucaju
one moraju imati razliCiti broj parametara ili parametri moraju biti razliCitog tipa) a za takve
metode kaZemo da su preopterecene (overloadane) metode.
Nakon sto smo se upoznali s pojmom klase i svim VaZnijim pojmovima koji dolaze s klasom,
vrijeme je da nauCimo kako kreirati klasu.
Klasu u Javi cemo opcenito kreirati na sljedeCi naCin:
public class
_klase
svojstva_i_metode;
)
Primjer 6 -2:
Definirajmo k.lasu Trokut, Cija ce svojstva biti duljine sttanica trokuta (a, b i c) a metode ce biti
OpsegO i PovrsinaO koje ce vracati opseg i povrlinu trokuta.
Rjesenje:
Ovdje cemo oC.ito imati tri svojstva (duljine stranica a) b i c)) koja ce biti public svojstva jer im
trebamo moCi pristupiti iz drugih k.lasa. Nadalje cemo imati dvije isto tako public metode Opseg
0 i Povrsina 0 za racunanje opsega i povrSine trokuta. Osim toga imat cemo jednu private
metodu Poluopseg 0 koja ce vracati poluopseg trokuta) a koja nam je potrebna za racunanje
povrsine trokuta Heronovom formulom: P = s(s-a)(s-b)(s-c) , pri cemu je s poluopseg:
( a+b+c). OvdJ'e Je 1og:t cno u natl naJ manJ e dva konstruktora:
v
2
prvi konsttuktor bez parametara) koji ce vrijednosti parametara a, b i c postaviti na 0. Drugi
konstruktor ce imati tri parametta i inicijalizirati svojstva a, b i c na vrijednosti parametara.
Ovdje
78
public int a, b, c;
public Trokut ()
{
a =
b
0;
0;
c = 0;
public Trokut(int x, int y, int z)
{
a
b
x;
y;
c = z;
public Trokut
(int X)
a = x;
b
x;
c = x;
()
return
(double)(a + b + c) I 2;
()
double s = Poluopseg
return Math.sqrt (s
public int Opseg
();
(s -a)
(s - b)
(s - c));
()
return a + b + c;
pisali kao
public Trokut(int
a, int b, int c)
79
doslo bi do problema jer se svojstva klase i parametri metode zovu jednako. U tim slucajevima bi
definicija ove metode trebala imati. oblik:
public Trokut(int
a, int b, int c)
this.a
this.b
this.c
a;
b;
c;
this u ovom slucaju znaCi da je u nastavku navedeno svojstvo ill metoda klase. Dakle,
interpretacija ovoga hi hila svojstvu a klase u kojoj se nalazim (Trokuf; pridru.Zi vrijednost
parametra a i tune hi bilo nikakvih problema. this mozemo pisati opcenito ispred elemenata
klase, no ako nemamo ovakvog mijdanja parametara metoda s elemenata klase, to nije potrebno.
80
Na ovaj naCin smo u stvari samo najavili da cemo koristiti objekt ime_objekta, koji ce biti tipa
ime_klase. Taj objekt jos zapravo ne postoji. S takvim objektom ne mozemo jos nista raditi. Da
bismo mogli ndto raditi nad tim objektom (npr. izvrsavati metode koje smo deflnirali u
pripadnoj klasi) moramo ga instancirati, zaista ga stvoriti. Objekt cemo instancirati na sljedeCi
naCin:
ime_objekta new ime_klase
([parametri]);
Prisjetimo se, kada smo govorili o klasama, rekli smo da klasa moze imati jedan ill vise
konstruktora i to smo nazivali preopterecenje konstruktora, preoptereceni konstruktori su se
razlikovali po broju parametara, odnosnu tipu parametara. Prilikom instanciranja klase, mi u
stvari izvrsavamo odredeni konstruktor i to onaj Ciji broj i tip parametara odgovaraju broju i tipu
parametara koje smo naveli prilikom instanciranja klase.
Cesto cemo posljednje dvije naredbe ujediniti te cemo istovremeno deklarirati i kreirati objekt. To
cemo napraviti sljedecom naredbom:
ime_klase ime_objekta = new ime_klase
([parametri]);
Primjer 6 - 3:
Kolike ce biti duljine stranica trokuta nakon sljedeCih naredbi:
();
(3, 4, 5);
(2);
OCito smo u svakom od prtmJera kreiranjem objekta t koji je tipa Trokut pozivali drugi
konstruktor klase Trokut. Stoga ce duljine stranica biti:
a) a= 0, b = 0, c = 0; u ovom slucaju se izvrSava prvi konstruktor (bez parametara), koji duljine
stranica postavlja na 0.
81
Primjer 6 - 4:
Kreirajmo objekt t koji ce biti instanca klase Trokllt koju smo kreirali u primjeru 4 - 2, pri cemu ce
duljine stranica biti postavljene na 3, 4 i 5, a zatim u varijablu p spremimo povrsinu tog troku.ta.
Rjesenje:
Najprije k:reirajmo objekt t, koji ce biti instanca klase Trokllti Cije ce duljine stranica biti 3, 4 i 5.
Prvi naCin na koji mozemo ovo rijditi je da duljine stranica proslijedimo konstruktoru odmah
prilikom kreiranja objekta:
Trokut t = new Trokut (3, 4, 5);
Isto ovo mogli smo napraviti tako da kreiramo objekt t iz klase Trokut, ali ovaj puta bez
parametara. U tom ce slucaju vrijednosti svojstava a, b i c biti postavljene na 0, a zatim
postavimo vrijednosti svojstava na vrijednosti 3, 4 i 5, sto bi izgledalo ovako:
Trokut t = new Trokut ();
t.a
3;
t.b
t.c
4;
5;
u prvom
82
\.t
0
G
objekt
Opcenito nad ohjektima nije moguce izvrsavati standardne operacije npr. +, -, ==,... Razmislimo
li malo, to uistinu ima smisla. Sto hi znaCilo t + j ako su t ij dvije instance klase TrokHP. Sto
0
b0
bG
c0
c
j,
dogodit ce se sljedece:
Izvrsavanjem izraza: t
0
b0
bG
c0
83
Nasljedivanje klasa
Nasljedivanje je vrlo cest pojam u objektno orijentiranom programiranju. Kao i kod samog
objektno orijenti.ranog programiranja, osnovna ideja nasljedivanja je izbjeCi visesttuko pisanje
istih dijelova koda. !deja je vrlo jednostavna: imamo jednu osnovnu klasu s osnovnim svojstvima
i metodama koje ju opisuju, a onda po potrebi kreiramo nove klase koje ju "nadopunjuju" s
nekim dodatnim svojstvima i metodama. Za takve klase koje "nadopunjuju" osnovnu klasu reCi
cemo da ju nasljeduju.
llustrirajmo nasljedivanje na jednom jednostavnom primjeru:
pretpostavimo da zelimo organizirati svoju kolekciju DVD-a i zelimo napraviti program koji ce
nam to omoguCiti. OCito cemo imati dvije vrste DVD-a: s filmovima i s glazbom. Dakle kreirat
cemo dvije klase s pripadnim svojstvima i metodama:
84
Glazba
Film
naslov
naslov
veliclna
Ul
6'
komentar
6'
izvodac
komentar
trajanje
brojPjesama
reziser
dodajNaslov 0
dodajNaslov 0
vratiNaslov 0
vratiNaslov 0
dodajKomentar 0
dodajKomentar 0
vratiKomcntar 0
veHcina
vratiVelicinu 0
dodajlzvodaca
vratiKomentar 0
vrattVelicinu 0
dodajTrajanje 0
vratilzvodaca 0
vratiTrajanje
dodajBrojPjesama 0
dodajR.e2isera
vratiBrojPjesamaO
vratiRezisera
0
0
0
Kao sto mozemo primijetiti, neka svojstva i metode se nalaze u obje klase i stoga i moramo ih
dva puta definirati.
Problem mozemo rije8iti tak.o da elemente koji se pojavljuju u obje klase definiramo u jednoj
posebnoj klasi DVD:
DVD
naslov
Ul
6'
veHcina
komentar
dodajNaslov 0
vratiNaslov O
dodajKomentar 0
vratiKomentar 0
vratiVelicinu 0
Sad kada imamo definiranu klasu DVD, mozemo kreirati klase Film iGlazba koje nasljeduju klasu
DVD. Nasljedivanjem klase DVD klase Film iGlazba automatski nasljeduju i sva svojstva i
metode klase DVD. Dakle sva ta svojstva i metode ne ttebamo jos jednom definirati.
Opcenito pretpostavimo da imamo neku klasu A, koja ima svoja svojstva i metode. Klasu A
moze naslijediti klasa B, koja ce u tom slucaju imati sva svojstva i metode kao i klasa A, ali
maze imati ijos neka svoja dodatna svojstva i metode. U tom slucaju je A nadklasa klase B,
dok cemo za B reCi da je podklasa od A
Kreiranjem instance klase B moti cemo pozivat:i. sve koje smo definirali u klasi B, alii one
definirane u klasi A, dok cemo kreiranjem instance klase A moo pozivat:i. samo elemente klase A.
Podklasa tako takoder maze bit:i. nadklasa nekoj drugoj klasi ina taj naCin je moguce izgradit:i.
hijerarhiju klasa.
klasaA
ldasa B
ldasa C
definicija_k1ase;
{
Kod ovakve hijerarhije moze se dogodit:i. da je metoda s ist:i.m imenom kreirana u dvije klase koje
su na razliCitoj razini u hijerarhiji. Npr. pretpostavimo da je u klasi A definirana metoda test 0 i
metoda s ist:i.m imenom je definirana i u klasi B, koja nasljeduje klasu A.
klasaA
public int
test()
{
klasa B
public int test()
{
Kako klasa B nasljeduje klasu A ona nasljeduje i njenu metodu test 0, a isto taka ona ima i svoju
metodu test 0 Kreiramo instancu klase B te pozovemo metodu test 0. nije sasvim jasno koja
metoda test O ce se izvrSiti.
U ovakvim slucajevima izvrsit ce se metoda test O koja je definirana u klasi B i to se zove
prekoracenje (override) metoda.
Opcenito smo mogli imati klasu C, koja nasljeduje klasu B (klasa C nema metodu test (}).
Pozivanjem metode test O nad instancom klase C izvrsit ce se metoda test O iz klase B.
Dakle,
pravilo je takvo da se izvrsava metoda iz prve
nadklase.
86
Primjer 6 -5:
Kreirajmo klasu Cetverokut, Cija ce svojstva biti duljine sttanica (a, b, c, d) cetverokuta, dok ce
jedina metoda biti Opseg Q, koja ce vracati opseg cetverokuta. Nadalje kreirajmo klasu
Pravokutnik koja nasljeduje klasu Cetverokut te ima jos metode Povrsina Q, koja raeuna
povrsinu pravokutnika i Dijagonala Q, koja vraca duljinu dijagonale pravokutnika.
Rjesenje:
public class Cetverokut
{
public int a, b, c, d;
public Cetverokut()
{
a - b - c - d - 0;
public Cetverokut
this.a
this.b
this.c
this.d
a;
b;
c;
d;
()
return a + b + c + d;
public Pravokutnik
()
a - b - c - d - 0;
public Pravokutnik
(int a, int b)
this.a
this.b
this.c
this.d
a;
b;
a;
b;
()
return a * b;
public double Dijagonala
()
return Math.sqrt
(a* a+ b *b);
87
aJ BlueJ:
[]gJ
prim jer4-5
I
I
I
NewCiass
---
I
I
-
[i]c=J
<1
r-J
Help
t>
View
uses
li2i Inheritance
Napomena:
Svaka klasa moze nasljedivati. samo jednu klasu,klasa moze imati. samo jednu nadklasu. S druge
sttane nek.u klasu moze nasljedivati. bilo koja klasa,klasa moze biti. podklasa.
Zadaci za vjezbu
1. Objasni razliku izmedu klase i objekta.
2. Navedi nekoliko primjera klasa iz stvamog Zivota, navedite nekoliko njihovih svojstava i
metoda te objasnite sto hi bio pripadni objekt.
3. Sto su po strukturi metode, a sto svojstva?
4. Sto je konstruktor klase?
5. Sto znaCi preopterecenje (overloadanje) metoda?
6. Definriaj klasu krug, Cije ce svojstvo biti polumjer kruga (ry, osim toga imat ce seljedece
metode:
publi.c double povrsi.na () - koja ce vracati povrSinu kruga;
publi.c double oseg () - koja ce vracati opseg kruga.
Potom napisi novu klasu u kojoj cd kreirati instancu klase krug i pozivati njene metode.
7. Definiraj klasu osoba Cija ce svojstva biti ime, pretfme i starost osobe. Nad klasom tteba
definirati i sljedece metode:
publi.c Stri.ng i.spi.s () - vraca ime i prezime osobe;
publi.c Stri.ng i.ni.ci. jali. () - vraca inicijale osobe;
publi.c boolean stari.ji. (osoba o) - vraca true ako je ttenutna
osoba starija od osobe o, inace vraca false;
Potom napisi novu klasu u kojoj cd kreirati instancu osoba krug i pozivati njene metode.
8. Definiraj klasu razlomak Cija ce svojstva biti brojnik i natfvnik nekog razlomka, osim tpoga
imat ce i sljedece metode:
publi.c razlomak krati. () - krati razlomak;
publi.c razlomak zbroj (razlomak r) - vraca zbroj ttenutnog
razlomka i proslijedenog;
publi.c razlomak razli.ka
(razlomak r) - vraca razliku
ttenutnog razlomka i proslijedenog;
publi.c razlomak umnozak (razlomak r) - vraca umozak
ttenutnog razlomka s proslijedenim;
publi.c razlomak kvoci.jent (razlomak r) - vraca kvocijent
ttenutnog razlomka s proslijedenim;
publi.c Stri.ng i.spi.s () - vraca zapis razlomka kao String (npr. 3/4).
Potom napisi novu klasu u kojoj cd kreirati instancu klase razlomaki pozivati njene metode.
9. Objasni pojam nasljedivanje klasa.
10. Navedi nekoliko primjera nasljedivanja klasa iz svakodnevnog zivota.
11. Definiraj klasu trokut Cija ce svojstva biti duljine sttanica ttokuta (a, b, c) a imat ce i dvije
metode:
publi.c double opseg ( ) - vraca opseg ttokuta
publi.c double povrsi.na () - vraca povrsinu ttokuta
Nadalje definiraj klasu jednakokracan koja nasljeduje kl.asu ttokut, ima jos jedan dodatni
konstruktor (koji ima samo jedan parametar) te ima jos metodu:
publi.c double vi.si.na () - vraca visinu jednakosttanienog trokuta
Potom napiSi novu klasu u kojoj cd kreirati instance klasa trokut i jednakokracan i pozivati
njihove metode.
7
Programi u Javi
Klasa i program
Metoda main
Izvrsavanje Java programa iz komandnog
prompta
90
Klasa i program
Sve sto smo do sada radili svodilo se je na pisanje metoda, koje smo pozivali iz sucelja BlueJ
razvojnog okruZenja. Pomoeu tog okruZenja smo mogli metodi proslijediti parametre ina kraju
vidjeti sto metoda vrata. Nadalje smo nauCili kako kreirati Citave klase. Iz tih klasa smo kreirali
objekte i nad njima izvrsavali metode, ali sve na razini metoda koje smo izvrsavali iz BlueJ
razvojnog okruZenja.
Cilj programiranja je napraviti program koji ce se moCi samostalno izvrsavati na raeunalu
korisnika. Konkretno, htjeli bismo napisati program koji ce se moCi izvrsavati izvan BlueJ
razvojnog okruZenja.
Program u Javi je isto tako jedna klasa. Da bi neka klasa postala program treba irnati jos jednu
metodu koju nazivamo main. Dakle, da bi neka klasa hila program koji cemo moCi izvrsavati
neovisno o Blue] razvojnom okruZenju, ta klasa treba irnati metodu main.
Kada zelimo pokrenuti program napisan u Javi prvo se trazi metoda main i izvrsava se. Ukoliko
zelimo pokrenuti klasu koja nema metodu main, doCi ce do pogrdke i klasa se naravno nece
pokrenuti.
Za one koji su programirali u Pascalu, main je u stvari ekvivalent glavnom programu u Pascalu. U
Pascalu smo isto tako mogli defmirati svoje funkcije i procedure (metode), koje smo pozivali u
glavnom programu. Pokretanjem programa se je u stvari izvrsavao glavni program. Da nismo
irnali glavnom programa, isto taka bi doslo do gre8ke.
91
Metoda main
Vee smo rekli da ee neka klasa biti. program ako izmedu ostalih ima metodu main.
OpCi oblik definicije metode main je:
public static void main (String[] s)
{
definicija_metode;
)
Ova metoda je izuzetno va.Zna stoga eemo ju detaljno objasniti.. Osobito je bitno zaglavlje metode
(prvi red), stoga eemo objasniti. znacenje jedne po jedne rijeCi unutar konteksta metode main.
Rijec s kojom zapoCinje definicija metode main je public. 0 njoj smo vee govorili. Prisjeti.mo se:
public opeenito znaCi da je neki element klase javan i moze mu se pristupiti. i iz drugih klasa.
Osim sto moze biti. public, elementi. klase mogu biti. jos i private iprotected.
Ukoliko je neki element private, tada tom elementu ne mozemo pristupiti. izvan klase u kojoj se
taj element nalazi.
Negdje izmedu public i private elemenata su protected elementi.. Ako je neki objekt
protected, tada takvom elementu mo.Zemo pristupiti u klasi koja nasljeduje doti.cnu klasu, aline
i u ostalim klasama.
U kontekstu metode main, bitno je da je ona public iz razloga sto nju pokreeemo prvu prilikom
pokretanja klase. Nju pokrece Java Virtual Machine.
Sljedeea rijec u nizu je static. Da je neka metoda static znaCi da ju je moguce pozivati na
razini klase. Prisjeti.mo se, kada smo htjeli pozvati metodu Povrsina 0 klase Trokut, morali smo
kreirati. instancu klase Trokut i nad tom instancom pozvati metodu Povrsina 0
Trokut t
double p
I double p
Trokut .Povrsina
();
s druge strane imamo klasu Math i npr. metodu sqrt 0 koja je definirana nad tom klasom. Zelimo
1i raeunati drugi korijen nekog broja, ne moramo kreirati instancu klase Math i nad njom pozivati
metodu sqrt 0, vee metodu sqrt 0 pozivamo na razini klase Math.
I double
U prvom slucaju metoda Povrsina O nije hila static i stoga smo ju morali pozivati na razini
objekta koji je bio tipa Trok11t. U drugom slucaju je metoda sqrt O static metoda i ona se moze
pozivati na razini klase.
void znaCi da metoda nista ne vraea. Na kraju metode koja je tipa void nije potrebno pisati.
return.
92
String U sse odnosi na parametre metode. Metoda main kao parametre ima niz stringova.
Primjer 7 -1:
NapiSimo program koji ce zbrajati dva prirodna broja i ispisivati njihov zbroj.
Rjelenje:
BuduCi da trebamo napisati program koji te zbrajati dva prirodna broja, napisat cemo klasu koja
ce motati sad.rZavati metodu main.Brojeve cemo unijeti kao parametre metode main.
public class Zbroj
{
int
a=
Integer.pareeint(s[OJ); int b
=
Integer.parseint(s[l]);
System.out.println( a+ b);
Nak.on pozivanja metode main otvorit te nam se okvir gdje cemo unijeti parametre koje
prosljeciujemo metoda main.BuduCi da je parametat niz sttingova, brojeve koje zelimo zbrojiti
zapisat cemo unutar viticastih zagrada, unutar navodnika, medusobno odvojene zarezom:
IJBlueJ:
Method Call
110id main(string[] )
Zbroj.main (
I{"2","3'l
Cancel
93
94
Javai
objektno
programiranje
orijent:irano
gumbOK:
f:l)
Run
--------------- --v [
OK
I[
Cancel
I[
!l.rowse...
Otvorit ce nam se prozor u kojem zadajemo naredbe upisivanjem. Premjestit cemo se u mapu u
kojoj se nalazi klasa Zbroj, koju smo .k:reimti u primjem 5 - 1. te cemo upisati: java Zbroj 2 3.
Priti.skom na ti.pku enterna ekranu ce se pojaviti. 5 (zbroj brojeva 2 i 3).
c\
C:\W
INDOWS\S
ystem32\cmd.e xe
l!llilI
Primijeti.mo da smo program pokretali naredbom: java Zbtoj 2 3.Java ovdje znaC.i da pozivamo
Javin interpreter, zbroj je .ime kJase (dokument s nastavkom class Zbrf!i.class) dok su 2 i 3
parametri koje prosljedujemo programu odnosno metodi main.
Napomena:
Da bismo mogli pokrenuti. program .iz komandnog prompta, on mora biti. kompajliran tj. mora
postojati. dokument s nastavkom .&lass. Program kompajlliamo u BlueJ-u.