Vjebe Vlatka Davidovi, prof. mr. sc. Ivan o!ar"i #$%%. Vlatka Davidovi/Ivan Pogari &'JE(T)& &RIJE)TIR*)E TE+)&L&,IJE I Nakladnik: V-l-."ili/t- . Ri0-ci Za nakladnika: dr.sc. D./an R.di Lektorirano: 1t.dio T I 2, Ri0-ka Recenzenti: Doc.dr.sc. atri3ia o/"i &d0-l 3a informatik. 1v-."ili/ta . Ri0-ci Dr.sc. *l-n Jak.povi V-l-."ili/t- . Ri0-ci Tisak: V-l-."ili/t- . Ri0-ci, Ri0-ka Naklada: 4$ kom 1kripta Objektno orijentirane tehnologije I int-l-kt.alno 0- vlasni/tvo, n-ot.5ivo, 3akonom 3a/ti-no i mora s- po/tivati. )i0-dan dio ov- skript- n- smi0- s- pr-slikavati ni .mno6avati na 7ilo ko0i na"in 7-3 napisano!a dop./t-n0a a.tora. V-l-."ili/t- . Ri0-ci .vrstilo 0- ova0 .d67-nik . v-l-."ili/n- .d67-nik- 8(lasa9 $$4:%%;%%:$%;$4, Ur. 7ro09 #%<$:=<:$%:%%:%#>. CIP - Katalogizacija u publikaciji S V E U I L I N A K N J I N I C A R I J E K A UK !!"#"$#!"%&!'%#()&!'*) AVI+VI,- Vlatka +bj.kt/o o0ij./ti0a/. t.1/ologij. I 2 3j.4b. 5 Vlatka a3i6o3i7- I3a/ Poga08i7# - Rij.ka 2 V.l.u8ili9t. u Rij.ci- $!::# - &U64b./ici V.l.u8ili9ta u Rij.ci ; <a/ualia Coll.giu= Polit.c1/ic >lu=i/./?i?) @ibliog0aAija# IS@N B'(-B%C-*B::-*C-B :# Poga08i7- I3a/ :$!B!B!BC Sadraj %. Upo3navan0- s osnovnim po0movima o70-ktno! pro!ramiran0a.........................? %.%. (lasa.........................................................................................................? %.#. &70-kt.......................................................................................................< %.4. (r-iran0- klas-...........................................................................................< %.@. (ompiliran0- pro!rama..............................................................................A %.=. I3vr/avan0- pro!rama.................................................................................B %.?. isan0- kom-ntara.....................................................................................B %.<. Vari0a7l-, pol0a, atri7.ti, stan0a...............................................................%$ %.A. (r-iran0- o70-kata...................................................................................%$ %.B. 2-tod-.....................................................................................................%% %.B.%. I3vr/na m-toda.................................................................................%% %.B.#. (r-iran0- m-toda...............................................................................%4 %.B.4. o3ivi m-toda....................................................................................%@ %.B.@. rosl0-5ivan0- param-tara m-todi.....................................................%? %.B.=. ripadnost m-tod- klasi ili o70-kt....................................................%< %.B.?. ovratni tip m-tod-...........................................................................%A %.B.<. r-klapan0- m-toda..........................................................................%B #. Tipovi podataka . Javi...................................................................................## #.%. rimitivni tipovi podataka........................................................................## #.#. 1lo6-ni tipovi podataka ...........................................................................#4 #.4. 1trin!......................................................................................................#@ #.@. (onv-r3i0a primitivniC tipova podataka....................................................#= #.@.%. *.tomatska......................................................................................#= #.@.#. )-a.tomatska 8tDp- castin!>.............................................................#< #.=. &p-ratori.................................................................................................#A #.=.%. *ritm-ti"ki op-ratori.........................................................................#A #.=.#. &p-ratori nad 7itovima.....................................................................#B #.=.4. &p-ratori .spor-d7-.........................................................................4$ #.=.@. Lo!i"ki op-ratori...............................................................................4$ #.?. Vari0a7l-..................................................................................................4% #.<. odr."0- va6-n0a vari0a7li 8scop->.............................................................4< 4. (onstr.ktori...................................................................................................4A 4.%. (r-iran0- konstr.ktora............................................................................4A 4.#. o3ivi konstr.ktora..................................................................................@$ 4.4. (l0."na ri0-" tCis.....................................................................................@# @. akiran0- klasa...............................................................................................@= =. .van0- o70-kata............................................................................................@A =.%. )i3ovi.......................................................................................................@A =.#. (ont-0n-ri................................................................................................=% =.#.%. 0ava..til.V-ctor .................................................................................=# =.#.#. 0ava..til.*rraDList ............................................................................=@ =.#.4. 0ava..til.+asC1-t .............................................................................== =.#.@. 0ava..til.+asC2ap.............................................................................=< ?. (ontrola pro!ramsko! ti0-ka...........................................................................=B ?.%. Uv0-ti.......................................................................................................=B ?.#. ,ranan0a.................................................................................................=B ?.4. -tl0-.......................................................................................................?4 : 4 : <. I3nimk- i Cvatan0- i3nimki..............................................................................?? A. 2odifikatori prist.pa......................................................................................<$ A.%. 1-tt-ri i !-tt-ri.........................................................................................<$ B. &dnosi i3m-5. klasa......................................................................................<4 B.%. *soci0aci0a...............................................................................................<= B.#. *!r-!aci0a i kompo3ici0a...........................................................................A$ B.4. )asl0-5ivan0-..........................................................................................A= B.4.%. &p-rator s.p-r..................................................................................A< Lit-rat.ra9.........................................................................................................B$ : @ : redgo!or 1kripta i3 kol-!i0a E&70-ktno ori0-ntiran- t-Cnolo!i0- IE napravl0-na 0- pr: v-nstv-no s cil0-m da s- st.d-ntima 1tr."no! st.di0a informatik- olak/a .po3na: van0- s osnovama o70-ktno ori0-ntirano! prist.pa. &va 0- skripta podi0-l0-na na d-v-t c0-lina. 1vaka c0-lina 0- .potp.n0-na prim0-rima t- prakti"nim 3adacima. rvi s- dio odnosi na .po3navan0- s osnov: nim po0movima o70-ktno! pro!ramiran0a kao /to s. o70-kti, klas- i m-tod-. U dr.!om s- di0-l. da0- pr-!l-d tipova podataka 3a0-dno s op-ratorima i vari0a7la: ma. U tr--m di0-l. o7ra5.0- s- po0am konstr.ktora t- s- o70a/n0ava na"in i ra3: lo! kori/t-n0a. -tvrti dio pokriva pakiran0- i kori/t-n0- klasa i3 dr.!iC pak-ta. -ti dio s- odnosi na ".van0- o70-kata pr-ko ni3ova i kont-0n-ra. (ontrola pro: !ramsko! ti0-ka, !ranan0a i p-tl0- dani s. . /-stom po!lavl0.. 1-dmi dio pokriva i3nimk- i Cvatan0- i3nimki . sl."a0. n-pr-dvi5-niC okolnosti prilikom kori/t-n0a pro!rama. (ratak osmi dio odnosi s- na modifikator- prist.pa. U d-v-tom 0- di0-: l. prika3an odnos i3m-5. dvi0. ili vi/- klasa v-3ama asoci0aci0-, a!r-!aci0- i kom: po3ici0-. Di0a!rami ko0i s- korist- . skripti pripada0. U2L:. 8Unifi-d 2od-lin! Lan: !.a!->, 0-3ik. 3a o70-ktno ori0-ntirano mod-liran0-. )av-d-nim o3nakama prika: 3an- s. klas-, o70-kti t- odnosi m-5. n0ima. &va0 nastavni mat-ri0al nami0-n0-n 0- st.d-ntima kao osnovna lit-rat.ra . okvir. kol-!i0a E&70-ktno ori0-ntiran- t-Cnolo!i0- IE. rim0-ri i 3adaci prila!o5-ni s. po"-tno0 ra3ini 3nan0a i3 nav-d-no! podr."0a t- iC st.d-nti mo!. koristiti 3a samostalan rad. Ri0-ka, o6.0ak #$%$. *.tori : = : "# $%o&na!anje ' o'no!ni( %oj(o!i(a objektnog %rogra(iranja "#"# Kla'a 1v- /to nas okr.6.0-, pr-dm-t- i po0av-, od ro5-n0a nasto0imo kat-!ori3irati. 1v- pr-dm-t- i po0av- ko0- .o"avamo, sv0-sno ili n-sv0-sno, sm0-/tamo . Ek.ti0ic-E odr-5-no! na3iva. r-dm-ti . tim Ek.ti0icamaE ima0. 3a0-dni"ka svo0stva. Tako mo6-mo napraviti kat-!ori0-9 a.tomo7il, ki/o7ran, stol, toplo vri0-m-, ra3n- kat-!ori0- l0.di itd. (ad nai5-mo na 7ilo ko0i novi pr-dm-t ili po0av., odmaC iC pok./avamo svrstati . odr-5-n. kat-!ori0.. r-dm-ti i po0av- . n-ko0 kat-!ori0i ima0. odr-5-na 3a0-d: ni"ka svo0stva 3aCval0.0.i ko0ima sm0-/tamo nov- pr-dm-t- i po0av-. Vidimo n-k. !ra5-vin. i odmaC 0- sm0-/tamo . kat-!ori0. !ra5-vina, mo6da . potkat-!ori0. 3!rada ili k.a. Uo"imo ptic. ko0. odmaC sm0-/tamo . kat-!ori0. ptica, potkat-!ori0. !al-7, vra: na, patka ili n-po3nata ptica. 1m0-/tan0- . kat-!ori0- nam 0- potr-7no 0-r na ta0 na"in 3namo svo0stva ono!a /to smo .o"ili t- pok./avamo pr-dvid0-ti odr-5-no pona/an0-. U /.mi vidimo 0-dink. i3 kat-!ori0- m-dv0-d, a s o73irom da s. m-d: v0-di d-finirani i kao opasni, 3namo da 7ismo s- tr-7ali skloniti. (ad radimo pr-slik. r-alno! svi0-ta . ra".nalni pro!ram na objektan na"in, pr: v-nstv-no radimo s nav-d-nim kat-!ori0ama ko0- na3ivamo kla'e. (lasa d-finira pr-dlo6ak ko0-m s- opis.0. 3a0-dni"ka svo0stva svim 0-dinkama proi3a/lima i3 nav-d-n- klas-. (lasa ov0-k odnosi s- op-nito na 7ilo ko0-! pripadnika l0.dsk- vrst-. (lasa 1.: s0-d odnosi s- na sv- 0-dink- klas- ov0-k ko0- 6iv- . na/o0 7li3ini. (lasa Do7ar: 1.s0-d 7ila 7i potklasa sviC 0-dinki klas- 1.s0-d s ko0ima smo do7ri i s ko0ima di: 0-limo n-k- stvari. (od kr-iran0a klasa nis. nam 7itna sva svo0stva. Tra6imo samo ona r-l-vantna. (ad kr-iramo klas. 2o7it-l, .koliko s- radi o klasi ko0a - tr-7ati mo7ilnom op-: rat-r. kod ko0-! smo .3-li pr-tplat., onda - s- 3a nav-d-n. klas. 7il0-6iti svo0: stva pop.t 7ro0a t-l-fona, s-ri0sko! 7ro0a, mark-, do7avl0a"a, ovla/t-no! s-rvisa itd. Ukoliko s- radi o klasi 2o7it-l ko0. d-finiramo 3a o7i"no! korisnika ko0i - ".vati podatk- o 7ro0-vima t-l-fona t- im-nima i pr-3im-nima oso7a, onda s-ri0ski 7ro0 po0-diniC mo7it-la n-- 7iti r-l-vantan podatak i t. !a n--mo .7acivati. To 3na"i da -mo 3a klas- d-finirati samo odr-5-na 7itna svo0stva i pona/an0a. (las- s. pr-dlo/ci pr-ma ko0ima kr-iramo o70-kt-. : ? : "#)# Objekt &70-kt 8ili instanca klas-> 0- konkr-ti3aci0a klas-. &70-kti s- kr-ira0. pr-ma pr-d: lo/k. n-k- klas-. Ukoliko klasa ima odr-5-na svo0stva, onda i o70-kti t- klas- ima0. ta ista svo0stva. 1vaki o70-kt nav-d-n- klas- ima svo0a stan0a. *ko npr. 3a klas. ov0-k d-finiramo svo0stva 8atri7.t-> visin- i t-6in-, onda - 0-: dan o70-kt na3van "ov0-k% imati, na prim0-r, stan0-9 visina F %A$, t-6ina F <@, a n-ki dr.!i o70-kt "ov0-k# imat - stan0-9 visina F %<A, t-6ina F A%. )-ki novi o70-kt klas- ov0-k tako5-r 7i imao svo0- stan0-. r-ma (la0i. G(la0i, %BAA., B?%H o70-kt 8lat. o70-ct.m> 0- pr-dm-t ko0i sa"in0ava dio van0sko! mat-ri0alno! svi0-taI pr-dm-t spo3na0- i d0-latnosti s.70-ktaI po0ava /to posto0i n-3avisno od na/- svi0-sti. EU o70-ktno ori0-ntiranom pro!ramiran0., instanca podatkovn- str.kt.r- i pona: /an0a d-finirana 0- klasom o70-kta. 1vaki o70-kt ima svo0- vri0-dnosti 3a vari0a7l- instanc- svo0- klas- i mo6- od!ovoriti m-todama ko0- s. d-finiran- n0-!ovom kla: som. )pr. o70-kt klas- EointE mo6- imati vari0a7l- instanci EJE i EDE i mo6- od!o: voriti EplotE m-todi crtan0-m to"k- na -kran na tim koordinatama.E GD-nis +oK-, The Free n!line Dictionar" o# $o%&'ting( )*+*H "#*# Kreiranje kla'e class Krug { } Ri0-" +la'' o3na"ava da s- radi o klasi. (lasa 0- na3iva Kr,g. Ti0-lo klas- 0- om-5-no 3a!radama LM ko0- o3na"ava0. po"-tak i 3avr/-tak klas-. )ikakav s- kod n- 7i tr-7ao pisati i3a 3avr/-tka klas-. U ti0-l. klas- d-klarira0. s- vari0a7l- t- pi/. m-tod-. ,lika +: Prikaz klase ' -.L notaci/i &va s- klasa spr-ma . datot-k. pod im-nom Kr,g#ja!a. Na&i! kla'e mora od!ovarati na&i!, datoteke 7-3 -kst-n3i0-. : < : Ukoliko 0- sl."a0no spr-mimo pod na3ivom kr,g#ja!a, na3iv klas- n-- od!ovarati na3iv. pro!rama t- - s- 0aviti !r-/ka. Java 0- os0-tl0iva na v-lika i mala slova pa tr-7a pripa3iti na pisan0- na3iva. class Krug {
public static void main(String args[]) { } } public static void main(String args[]) 0- d-klaraci0a !lavn- m-tod- % . klasi. "#-# Ko(%iliranje %rogra(a Datot-ka s- kompilira Java pr-vodit-l0-m ja!a+8.-J-> ko0i dola3i . standardnom JD( 8Java D-v-lopm-nt (it> pak-t.. # javac Krug.java Ra3vo0nim alatima lak/- s- mo6- prist.piti kompilator.. (ompiliran0-m klas- do7iva s- datot-ka . t3v. 7Dt-cod-. na3iva (r.!.class. )av-d-n. datot-k. mo6-mo i3vr/iti Javinim int-rpr-t-rom9 # java Krug (od i3vr/avan0a pro!rama (r.! n- .pis.0- s- -kst-n3i0a. # 1 o73irom da s- klasa n- mora nala3iti . istom dir-ktori0. odakl- 0- i pok./ava: mo i3vr/iti, onda koristimo dodatn. opci0. classpath putanja_do_klase. ri(jer. (lasa s- nala3i . dir-ktori0. 8mapi>9 C:\java_vjezbe\vjezba_1\Krug.java (ompiliramo 0- na na"in9 # javac C:\java_vjezbe\vjezba_1\Krug.java % & m-todama - 7iti ri0-"i . sl0-d--m po!lavl0. # & pakiran0. klasa - 7iti ri0-"i . po!lavl0. @ : A : Do7ivamo datot-k.9 C:\java_vjezbe\vjezba_1\Krug.class (od i3vr/avan0a koristimo nar-d7.9 # java classpath C:\java_vjezbe\vjezba_1 Krug /adatak. +0 1reira/te klas' 1r'g i s&re%ite /e ' datotek' 1r'g0/ava 2'koliko radite neki% ra! zvo/ni% alato%( onda ete a'to%atski do3iti o&ci/' s&re%an/a klase ' istoi%en' da! totek'40 1las' ko%&ilira/te i izvr5ite0 "#0# I&!r1a!anje %rogra(a I3vr/avan0-m pro!rama Java int-rpr-t-rom pokr-- s- JV2 8Java Virt.al 2acCi: n-> i ."itava0. standardni *I:0i t- s- 3a i3vr/avan0- klas- (r.! osi!.rava m0-sto . m-mori0i. "#2# i'anje ko(entara (om-ntari . kod. mo!. 7iti9 vi/-lini0ski o"in0. 3nakom ;N, a 3avr/ava0. 3nakom N; 3a sm0-/tan0- vi/- lini0a t-ksta. rim0-r9 /* Ovo je vielinijski komentar i moe smjestiti ve!u koli"inu teksta */ 0-dnolini0ski o"in0- 3nakom ;;, a i3a to! 3naka t-kst do kra0a r-da smatra s- kom-nta: rom. rim0-r9 int a # $% // inicijali&acija varijable a 3a !-n-riran0- dok.m-ntaci0- o"in0. 3nakom ;NN, a 3avr/ava0. 3nakom N; t- .n.tra id- sav t-kst ko0i 6-: limo do7iti .n.tar dok.m-ntaci0-. Dok.m-ntaci0a s- !-n-rira pro!ramom ja!ado+. : B : rim0-r9 /** komentar koji ide u dokumentaciju */ (om-ntari 3a !-n-riran0- dok.m-ntaci0- sadr6- i +T2L o3nak- t- o3nak- kao /to s.9 Oa.tCor, Ov-rsion, Oparam, Or-t.rn... "#3# Varijable4 %olja4 atrib,ti4 'tanja U Javi s- "-sto korist- ovi sinonimi 3a opisivan0- .!lavnom istiC po0mova, a ovis: no o tr-n.tk. . ko0-m s- korist-. o0am !arijabla odnosi s- op-nito na sv- vari0a7l-9 7ilo da iC d-klariramo .n.: tar klas- ili .n.tar po0-din- m-tod-. Ukoliko s. d-klariran- .n.tar klas-, !ovori: mo 0o/ i o !arijabla(a objekta, odnosno %olji(a. Stanje odr-5-no! o70-kta opisano 0- vri0-dnostima ko0- s- nala3- . nav-d-nim vari0a7lama o70-kta. Ukoliko s. vari0a7l- d-klariran- .n.tar po0-din- m-tod-, !ovorimo o %ara(etri5 (a 8kada s- pi/. . 8> 3a!radama>, odnosno lokalni( !arijabla(a. S!oj't!a ili atrib,ti s. sinonimi ko0i s- vi/- korist- .!lavnom kod opisivan0a sam- klas-. "#6# Kreiranje objekata &70-kti s- kr-ira0. pr-ma pr-dlo/k. odr-5-n- klas-. 1oftv-rski o70-kti s. sli"ni stvarnim o70-ktima, odnosno pr-slikava0. stvarn- o70-kt- i n0iCov- karakt-ristik-9 r-alni o70-kti ima0. 'tanje i %ona1anje pa s- na ta0 na"in !rad- i softv-rski o70-kti. Stanje 7i s- opisivalo 3a0-dni"kim karakt-ristikama. )a prim0-r, .koliko klasa ov0-k d-finira svo0stva 8atri7.t->9 im-, pr-3im-, spol, visina, t-6ina, dat.m ro5-: n0a, onda svi pripadnici 8instanc-, o70-kti> klas- ov0-k ima0. stan0- opisano vri: 0-dnostima ko0- s- prida0. vari0a7lama9 im-, pr-3im-, spol, visina, t-6ina, dat.m ro5-n0a. S!aki objekt 7,!a '!oje 'tanje# ona1anje, 3a ra3lik. od stan0a, opisano 0- !la!olima. ona/an0- da0- opis ono!a /to o70-kt radi. )a prim0-r, "ov0-k Coda, !ovori, misli... (od pr-vo5-n0a stvarno! svi0-ta . softv-rski svi0-t, pri d-finiran0. klas- proma: tra0. s- i .3ima0. samo r-l-vantna stan0a i pona/an0a. &70-kti pri tom- sm0-/ta0. svo0a 'tanja . !arijable, a svo0a %ona1anja i3la6. . (etoda(a. U proc-d.ralnim pro!ramskim 0-3icima m-tod- s. d-finiran- kao proc-d.r- i f.nkci0-. 1amo kr-iran0- o70-kata id- pr-ko kl0."n- ri0-"i ne89 'rug krug( # new 'rug()% : %$ : &70-kt 0- na3iva kr.!% i pripada klasi (r.!, odnosno ima sva svo0stva klas- (r.!. 4
(od kr-iran0a dr.!o! o70-kta, .koliko . i3vo5-n0. pro!rama v- posto0i o70-kt na3iva kr.!%, 0avit - s- !r-/ka o posto0an0. o70-kta id-nti"no! na3iva. (las. (r.! mo6-mo modificirati tako da . n0-3ino0 !lavno0 m-todi kr-iramo dva o70-kta klas- (r.!9 class Krug { public static void main(String args[]) { 'rug krug1 # ne) 'rug()% 'rug krug2 # ne) 'rug()% } } (od i3vr/avan0a ovo! pro!rama kr-irat - s- dva o70-kta klas- (r.!9 kr.!% i kr.!#. /ada+i. +0 1reira/te klas' Pas0 ,&re%ite datotek' &od nazivo% Pas0/ava0 - klasi Pas kreira/! te glavn' %etod'0 1reira/te tri o3/ekta klase Pas naziva: dora( snoo&" i &as0 1o%&i! lira/te i izvr5ite &rogra% te &rov/erite gre5ke0 )0 Na isti nain kao ' &rvo% zadatk' kreira/te klas' 1otac te dva o3/ekta te klase is! tog naziva0 1o%&ilira/te &rogra% i &rov/erite ko/e se gre5ke /avl/a/' i za5to0 60 Pok'5a/te nai 3are% /o5 tri %og'a ti&a gre5ki ko/e se %og' /aviti kod kreiran/a klase 2na &ri%/er ' &rvo% zadatk'40 Navedite ' ko/i% s' se sit'aci/a%a /avile gre5ke i na ko/i nain ih se %o7e re&rod'cirati0 "#9# :etode "#9#"# I&!r1na (etoda I3vr/na m-toda na3iva main8> 0- m-toda .n.tar klas- ko0. Javin int-rpr-t-r tra6i kod 7ilo ko0-! pokr-tan0a pro!rama. Ukoliko Javina klasa ima (ain;< m-tod., 3a klas. ka6-mo da 0- i3vr/na. public class *est { public static void main(String[] args) { S+stem,out,println(-.spis i& i&vrne metode-)% } 4 U ovom sl."a0. (r.! 0- nova klasa ko0o0 0o/ nismo d-finirali vari0a7l- i m-tod-. : %% : } I3vr/na klasa 0- klasa ko0a s- mo6- i3vr/iti po3ivom pr-ko Javina int-rpr-t-ra. )a: v-d-ni prim0-r mo6-t- pokr-n.ti pr-ko alata 8po3ivom R.n> ili i3 .pravl0a"k- lini: 0-9 java classpath putanja_do_navedene_datoteke Test rilikom i3vr/avan0a, na nav-d-no0 lokaci0i tra6i s- datot-ka na3iva T-st.class t- main8> m-toda . to0 klasi. Ukoliko m-toda ni0- na5-na, 0avl0a s- !r-/ka9 Ecept!on !n thread "#a!n$ java.lang.%o&uch'ethodError: #a!n )av-d-na main() m-toda 0- .la3na to"ka kod i3vr/avan0a pro!rama. U i3radi n-k- Javin- aplikaci0- .o7i"a0-no 0- da posto0i samo 0-dna klasa s ovom m-todom. &stal- s- klas- po potr-7i po3iva0. i3 nav-d-n- !lavn- m-tod-. &n- n- mora0. imati nav-d-n. m-tod. pa samim tim- nis. i3vr/n- klas-. Ri0-" public o3na"ava da 0- m-toda 0avna, t0. svima dost.pna. Ri0-" static o3na"ava stati"k. m-tod., odnosno pripadnost m-tod- klasi. Ri0-" void o3na"ava povratni tip, odnosno da m-toda n- vraa nikakv. vri0-dnost. Ri0-" main 0- na3iv m-tod-. &va !lavna m-toda mora imati to im-. Argumenti, odnosno param-tri ko0i s- prosl0-5.0. m-todi nala3- s- .n.tar 8> 3a: !rada. U3 svaki param-tar pi/- s- tip param-tra 8vari0a7l-> i na3iv. *r!.m-nti s. m-5.so7no odvo0-ni 3ar-3ima. U main m-todi 1trin! ar!sGH 0- ni3 param-tara ko0i s- pr-.3ima0. i3 .pravl0a"k- li: ni0-. /ada+i. +0 1reira/te klas' Test kao ' navedeno% &ri%/er' te /e s&re%ite ' odgovara/'' da! totek' 2Test0/ava40 1o%&ilira/te /e i izvr5ite &reko razvo/nog alata0 Pro%otrite is&is0 Iz! vr5ite &rogra% i iz '&ravl/ake lini/e0 )0 1reira/te klas' Test): public class *est/ { void ispis() { S+stem,out,println(-.spis i& bilo koje metode-)% } } : %# : 60 Ponovite &ost'&ak iz &rethodnog zadatka i za ov' klas'0 Pro%otrite &or'ke ko/e se &o/avl/'/'0 80 - klasi Test) doda/te %ain24 %etod'0 Ponovo ko%&ilira/te i izvr5ite klas'0 Pro%o! trite rez'ltat0 "#9#)# Kreiranje (etoda )a3ivi m-toda s. o7i"no opisni9 void ispisi0odatke() { S+stem,out,println(1.spisujem podatke,,,2)% } 2-toda na3iva ispisi0odatke() n- priCvaa niti 0-dan param-tar. Ti0-lo m-tod- 0- odvo0-no viti"astim 3a!radama {} i .n.tar n0-!a s- pi/. nar-d7- odvo0-n- 3nakom ; )ar-d7a S+stem,out,println() radi ispis na standardnom i3la3.. U ovom sl."a0. r-3.ltat nar-d7- - 7iti9
(sp!suje# podatke) 1v- m-tod- sasto0- s- od sl0-d-iC -l-m-nata9 modifikator prist.pa 8opcionalan> povratni tip 8o7av-3an> na3iv m-tod- 8o7av-3an> param-tri 8opcionalni> ti0-lo m-tod- 8opcionalno>. 2odifikator prist.pa P &'3lic( &rotected( &rivate o3na"ava tko sv- mo6- i pod ko0im .v0-tima prist.piti nav-d-no0 m-todi. ovratni tip P o7i"no s- pi/- tip podatka ko0i m-toda vraa. Ukoliko n- vraa ni: /ta, o7av-3no s- stavl0a void. )a3iv m-tod- P opisan 0-. Uo7i"a0-no 0- postaviti !la!ol s o73irom da m-toda o3: na"ava n-k. radn0., odnosno n0om- s- opis.0- pona/an0- ko0- - o70-kt po3vati . n-kom tr-n.tk.. : %4 : aram-tri P navod- s- .n.tar okr.!liC 3a!rada .koliko posto0-I . s.protnom os: ta0. samo o7av-3n- okr.!l- 3a!rad-. Ti0-lo m-tod- P po"in0- i 3avr/ava viti"astim 3a!radama LM. &n- s. o7av-3n-, a .n.tar to! ti0-la s- mo!. i n- mora0. pisati nar-d7-. rim0-r 0- kr-irana klasa (n0i!a ko0a ima m-tod. ispis'njige(). 2-toda ima 0-dan param-tar9 param-tar 0- na3iva naslov, a tip to! param-tra 0- 1trin!9 public class 'njiga { void ispis'njige (String naslov){ S+stem,out,println(-3aslov je - 4 naslov)% } public static void main(String args[]) { } } /ada+i. +0 1reira/te klas' 1n/iga kao ' navedeno% &ri%/er' te /e s&re%ite ' odgovara/'' datotek' 21n/iga0/ava40 1o%&ilira/te /e i izvr5ite &reko razvo/nog alata0 Pro%otrite re! z'ltat0
)0 - isto/ klasi &ok'5a/te &ozvati %etod' is&is1n/ige24 iz glavne %etode na sl/edee naine: is&is1n/ige24 is&is1n/ige29Neka kn/iga94 is&is1n/ige2)40 60 1o%&ilira/te i izvr5ite &rogra% za svaki sl'a/ &o/edinano te za3il/e7ite ko/e se gre5ke /avl/a/'0 :il/e5ke %o7ete analizirati nakon sl/edeeg &oglavl/a0 "#9#*# o&i!i (etoda 2-tod- s- .vi0-k i3vr/ava0. po po3iv.. 2-tod- s. v-3an- .3 pona/an0- o70-kata pa s- .0-dno i po3iva0. pr-ko o70-kata, to"ni0- 3a po0-dini o70-kt. U prim0-r. klas- Knjiga prvo s- kr-ira o70-kt na3iva kn0i!a, a nakon to!a s- 3a nav-d-ni o70-kt po3iva (etoda i'%i'Knjige;<. public class 'njiga { void ispis'njige (String naslov){ S+stem,out,println(-3aslov je - 4 naslov)% : %@ : } public static void main(String args[]) { 'njiga knjiga # ne) 'njiga()% knjiga,ispis'njige(-5na 'arenjina-)% } } (od po3iva m-tod-, nakon o70-kta 3a ko0i s- 6-li po3vati m-toda o7av-3no s- stav: l0a to"ka. knjiga,ispis'njige(-5na 'arenjina-)% 1 o73irom da m-toda priCvaa 0-dan param-tar tipa 1trin!, kod po3iva s- o7av-3: no mora m-todi prosli0-diti 0-dna vri0-dnost tipa 1trin!. Tip ko0i s- prosl0-5.0- m-todi mora od!ovarati tip. param-tra . m-todi. 2-toda s- 3a isti o70-kt mo6- po3vati vi/- p.ta ili s- n- mora po3vati .op-. Tako: 5-r s- m-todi mo!. prosl0-5ivati ra3li"it- vri0-dnosti. )a prim0-r, 3a ist. klas. (n0i!a9 public static void main(String args[]) { 'njiga knjiga # ne) 'njiga()% knjiga,ispis'njige(-5na 'arenjina-)% 'njiga knjiga( # ne) 'njiga()% knjiga,ispis'njige(-6ava /-)% knjiga(,ispis'njige(-7ruba 0ere 'vrice-)% } kr-iran 0- 0o/ 0-dan o70-kt kn0i!a% 3a ko0i 0- po3vana m-toda9 ispis'njige(). )akon pokr-tan0a pro!rama ispis 0-9 %aslov je *na Karenj!na %aslov je +ava , %aslov je -ru.ba /ere Kvr.!ce U klasi (n0i!a, kod pokr-tan0a pro!rama, po r-d. s- i3vr/ava0. nar-d7- . main8> m-todi. /ada+i. +0 1las' 1n/iga iz &rethodnih zadataka iz%i/enite kao ' &ri%/er' te /e ko%&ilira/te i izvr5ite0 Pro%otrite rez'ltat0 #. 1reira/te izvr5n' klas' Prozor te /e s&re%ite ' odgovara/'' datotek'0 - klasi Prozor kreira/te %etod' otvori24 te ' n/o/ nared3' ko/o% se is&is'/e 9Prozor se : %= : otvara90 1reira/te /o5 /edn' %etod' naziva zatvori24 te ' n/o/ nared3' ko/o% se is&i! s'/e 9Prozor se zatvara;90 Is&isi se rade nared3o% ,"ste%0o't0&rintln240 - glavno/ 2%ain244 %etodi kreira/te /edan o3/ekt klase Prozor i &ozovite o3/e %etode0 1o%&ilira/! te i izvr5ite &rogra%0 Pro%otrite rez'ltat0 60 1reira/te izvr5n' klas' :rod te %etode &lovi24( 'sidren24 i &rivezan240 - svako/ %e! todi na&ravite is&is n&r0 9:rod &lovi9(9:rod /e 'sidren90 1reira/te dva o3/ekta klase :rod i za n/ih &ozovite %etode "#9#-# ro'lje=i!anje %ara(etara (etodi Ukoliko s- . klasi (n0i!a 8i3 pr-tCodno! po!lavl0a> kr-ira nova m-toda9 void unesi.&davaca(String i&davac8 int godina){ S+stem,out,println(-.&dava" je -4i&davac)% S+stem,out,println(-9odina i&danja je -4godina)% } m-toda na3iva unesi.&davaca() ima param-tr- na3iva i3davac i !odina. Tip param-tra i3davac 0- String, a tip param-tra !odina 0- int. (od po3iva nav-d-n- m-tod- prosl0-5.0. s- konkr-tn- vri0-dnosti r-dosli0-dom ko0i m-toda 3aCti0-va. knjiga,unesi.&davaca(-:kolska knjiga-8(;;<)% knjiga(,unesi.&davaca(-0rentice =all8 .nc,-8 />>?)% Ukoliko pok./amo po3vati m-tod. na na"in9 knjiga(,unesi.&davaca()% 0avit - s- !r-/ka9 Error0112134: #ethod unes!(zdavaca04 not 5ound !n class Knj!ga 2-tod- s-, osim po na3iv., pr-po3na0. i po param-trima. (od po3iva po0-din- m-tod- mora0. 0o0 s- prosli0-diti to"no onakvi podaci, po tip. i r-dosli0-d., kakv- m-toda o"-k.0-. Ukoliko s- m-todi prosl0-5.0- vi/- ili man0- podataka od o"-kiva: niC ili .koliko s- m-todi prosl0-5.0. podaci ko0i po tip. i r-dosli0-d. n- od!ovara: 0. param-trima m-tod-, onda takva m-toda 0-dnostavno ni0- prona5-na i 0avl0a s- !r-/ka. ok./amo li 0o/ po3vati m-tod. na na"in9 knjiga(,unesi.&davaca(@)% 0avl0a s- !r-/ka9 : %? : Error0112134: #ethod unes!(zdavaca0!nt4 not 5ound !n class Knj!ga U ovom sl."a0. tip podatka ko0i pok./avamo prosli0-diti m-todi 0- int, a m-toda 3aCti0-va 1trin!. /ada+i. +0 - klasi 1n/iga doda/te i &ozovite %etod' 'nesiIzdavaca24( kao ' &ri%/er'( te /e ko%&ilira/te i izvr5ite0 Pro%otrite rez'ltat0 )0 1reira/te izvr5n' klas' Tekst te /e s&re%ite ' odgovara/'' datotek'0 - klasi Tekst kreira/te %etod' 'nesiTekst24 ko/a i%a /edan &ara%etar ti&a ,tring0 1reira/te %etod' 'nesi:ro/24 ko/a i%a /edan &ara%etar ti&a int0 1reira/te %etod' 'nesiTekst! :ro/24 ko/a i%a dva &ara%etra: /edan ti&a int( dr'gi ti&a ,tring0 - %etoda%a se is&i! s'/' &rosli/e<eni &ara%etri0 1reira/te dva o3/ekta klase Tekst i &ozovite navedene %etode0 60 Istra7ite na &ri%/er' &rethodnog zadatka ko/e s' gre5ke %og'e kod &isan/a i &o! ziva %etoda0 "#9#0# ri%adno't (etode kla'i ili objekt, ripadnost m-tod- ili vari0a7l- klasi o3na"ava s- kl0."nom ri0-"i 'tati+ i tada !o: vorimo o stati"kim m-todama. Ukoliko .3 m-tod. ili vari0a7l. n- dola3i ri0-" static, tada on- nis. stati"k-. U tom sl."a0. m-toda ili vari0a7la pripada o70-kt.. ,lavna m-toda main 0- .vi0-k stati"ka 0-r s- ona kod i3vr/avan0a klas- po3iva prva P pri0- kr-iran0a o70-kata. (od i3!radn0- aplikaci0- ri0-tko s- korist- stati"k- vari0a7l- i m-tod-. U!lavnom - to 7iti onda kada s- 6-li po3vati m-toda 7-3 kr-iran0a o70-kata. rim0-r stati"kiC m-toda9 public class 7ebug { static { int a#;% S+stem,out,println(-Stati"ka metoda koja se prva -4 - i&vrava -4a)% }
static void ispis(String debug){ S+stem,out,println(-7ebugA -4debug)% } public static void main(String[] args) { ispis(-(, po&iv metode ispis-)% 7ebug,ispis(-/, po&iv metode ispis-)% } : %< : } 2-toda ispis8> 0- stati"ka m-toda 3a ko0. s- n- tr-7a kr-irati o70-kt da 7i 7ila po: 3vana. Ukoliko s- m-toda po3iva i3 tr-n.ta"n- klas-, mo6- s- po3vati na prvi na: "in. U protivnom s- m-toda po3iva i3 klas- 8dr.!i na"in>. Dio koda o3na"-n sa static LQ M 0- kod ko0i s- n- mora pos-7no po3ivati da 7i s- i3vr/io. &n s- i3vr/ava "ak i pri0- main8> m-tod-. "#9#2# o!ratni ti% (etode 2-tod- .vi0-k pri0- na3iva ima0. sp-cificiran povratni tip. Ukoliko m-toda n- vraa nikakv. vri0-dnost, povratni tip 0- !oid. U ostalim sl."a0-vima sp-cificira s- n-ki dr.!i tip podataka. 1l0-d-i prim0-r 0- klasa .tnik t- m-toda na3iva oso7niodaci8>. ovratni tip t- m-tod- 0- 1trin!. public class 0utnik { String osobni0odaci (String ime8 String pre&ime) { String osobni# -.me # -4ime4- pre&ime#-4pre&ime% return osobni% }
public static void main(String args[]){ 0utnik putnik( # ne) 0utnik()% } } Ukoliko m-toda ima povratni tip ra3li"it od void, oba!e&no s- na kra0. m-tod- stavl0a ret,rn i vri0-dnost ko0. - m-toda vratiti. Vra-na vri0-dnost mora imati isti tip podataka kao i povratni tip m-tod-. ,lika ): -.L diagra% klasa = &o&is %etoda U konkr-tnom sl."a0.9 return osobni% vraa vri0-dnost vari0a7l- oso7ni i n0-3in tip mora od!ovarati sp-cificiranom po: vratnom tip. 81trin!>. : %A : 2-todi s-, prilikom n0-3ina po3iva, prosl0-5.0. dva param-tra. 2-toda vraa po: datak tipa 1trin!. R-3.ltat vraan0a 0- vri0-dnost ko0a s- mo6- ispisati, iskoristiti kao .la3ni param-tar 3a dr.!. m-tod. ili 7ilo /to dr.!o. public static void main(String args[]){ 0utnik putnik( # ne) 0utnik()% String s# putnik(,osobni0odaci(-5na-8-0eri!-)% S+stem,out,println(s)%
S+stem,out,println(-0odaci o putniku su -4 putnik(,osobni0odaci(-Bartin-8-Bartinovi!-))% } /ada+i. +0 1reira/te klas' P'tnik kao ' navedeno% &ri%/er'0 1o%&ilira/te i &okrenite &ro! gra%0 Pro%otrite rez'ltat0 )0 Iz%i/enite klas' P'tnik tako da dodate /o5 /edn' %etod' is&isDestinaci/e24 ko/a &rihvaa &ara%etre: naziv( 3ro/ noen/a( ci/ena i o&is0 Naziv i o&is s' ti&a ,tring( a 3ro/ noen/a i ci/ena s' ti&a int0 .etoda vraa sve in#or%aci/e kao ti& ,tring0 1o%&ili! ra/te i &okrenite &rogra%0 Pro%otrite rez'ltat0 60 1reira/te klas' Trok't i %etod' o&seg s &ara%etri%a: int a( int 3( int c0 .etoda vraa z3ro/ navedenih &ara%etara kao o&seg0 - glavno/ %etodi kreira/te o3/ekt i &o! zovite %etod' o&seg0 Na&ravite is&is o&sega0 1o%&ilira/te i &okrenite &rogra%0 Pro! %otrite rez'ltat0 "#9#3# rekla%anje (etoda U Javi 0- omo!.-no kr-iran0- m-toda isto! na3iva. on-kad 0- to potr-7no 0-r n- 6-limo m-tod- ko0- rad- ist-;sli"n- akci0- im-novati dr.!a"i0-. (ada s- kr-ira0. m-tod- ko0- rad- isto ili sli"no, a m-todi tr-7amo prosli0-diti ra3li"it- tipov- vri: 0-dnosti samo s ra3li"itim tipovima param-tara, onda 0- lo!i"no im-novati m-tod- istim na3ivom. 2-tod- ko0- ima0. isti na3iv ra3lik.0. s- tada pr-ma 7ro0., tip. ili r-dosli0-d. param-tara. Ra takv- m-tod- ka6-mo da s- pr-klapa0.. public class .spis { void ispis(String tekst){ S+stem,out,println(-(*ekst) -4tekst)% } void ispis(int brojStranice){ S+stem,out,println(-(Croj stranice) -4brojStranice)% : %B : } void ispis(double broj0oglavlja){ S+stem,out,println(-(Croj poglavlja) -4broj0oglavlja)% } void ispis(String naslov8 String tekst){ S+stem,out,println(-(3aslov) -4naslov)% S+stem,out,println(tekst)% } void ispis(String naslov8 double broj0oglavlja){ S+stem,out,print(broj0oglavlja4- -)% S+stem,out,println(-(3aslov) -4naslov)% } public static void main(String[] args) { .spis ispis # ne) .spis()% } } 2-tod- na3iva ispis8> s- pr-klapa0. t- s- po potr-7i po3iva po0-dina m-toda. rilikom po3iva m-tod- ispis8> imamo p-t mo!.nosti na ko0i -mo na"in po3vati nav-d-n. m-tod.9 mo6- s- prosli0-diti vri0-dnost tipa 1trin! mo6- s- prosli0-diti vri0-dnost tipa int mo6- s- prosli0-diti vri0-dnost tipa do.7l- mo!. s- prosli0-diti vri0-dnosti tipa 1trin! i 1trin! mo!. s- prosli0-diti vri0-dnosti tipa 1trin! i do.7l-. &visno o prosli0-5-nim vri0-dnostima, 7ro0., tip. i r-dosli0-d., po3iva s- i ra3li"i: ta m-toda. public static void main(String[] args) { .spis ispis # ne) .spis()% ispis,ispis(-0rimitivni tipovi podataka-8(,/)% ispis,ispis(-0rimitivni tipovi podataka suA- 4 -boolean8 b+te8 sDort8 int8 long8 Eloat8-4 - double-)% ispis,ispis(F>)% } /ada+i. +0 1reira/te klas' Is&is kao ' navedeno% &ri%/er'0 1o%&ilira/te i &okrenite &rogra%0 Pro%otrite rez'ltat0 : #$ : )0 Pozovite i %etode is&is24 ko/e nis' &ozvane ' &ri%/er'0 60 1reira/te klas' Vri/e%e i %etode &ostaviVri/e%e ko/i%a se &rosl/e<'/e: int dan( int %/esec( int godina ,tring dan( ,tring %/esec( ,tring godina ,tring dan>'>t/edn'( int %/esec( int godina long vri/e%e0 Navedene %etode i%a/' is&is &ara%etara na ekran'0 Pozovite %etode i &ro! %otrite is&ise0 80 - klasi Vri/e%e &ozovite %etode &ostaviVri/e%e24 na sl/edei nain: &ostaviVri/e%e2)**?)*++ L4 8 &ostaviVri/e%e29&oned/el/ak9()@(8()*++4 &ostaviVri/e%e2)@(8()*++(9+@:6*94 &ostaviVri/e%e29)@080)*++9(9+@:6*940 Pro%otrite rez'ltate0 1reira/te %etode ko/e nedosta/' ' klasi Vri/e%e0 @0 1reira/te klas' .ath te sl/edee %etode: z3ro/ 2int A( int "( int z4 = vraa int z3ro/ 2#loat A( #loat "( #loat z4 = vraa #loat z3ro/ 2int A( int "4 = vraa do'3le z3ro/ 2,tring A( ,tring "4 = vraa ,tring0 sig'ra/te is&ise z3ro/eva0 Pozovite %etode i &ro%otrite is&ise0 @ Vri0-dnosti tipa podatka lon! s. c0-lo7ro0n- i pi/. s- npr9 B L 8L o3na"ava lon!>. D-tal0ni0- o tipovima podataka 7it - napisano . 3as-7nom po!lavl0. : #% : )# Ti%o!i %odataka , Ja!i U Javi s- podaci di0-l- na dva osnovna tipa9 primitivni 80-dnostavni> tipovi podataka slo6-ni tipovi podataka. )#"# ri(iti!ni ti%o!i %odataka osto0i osam primitivniC 80-dnostavniC> tipova podataka. Ti% %odatka odra&,(ije!a na !rijedno't Veli7ina :in !rijedno't :a> !rijedno't b?te $ A:7itni c0-lo7ro0ni :%#A %#< 'hort $ %?:7itni c0-lo7ro0ni :4#<?A 4#<?< int $ 4#:7itni c0-lo7ro0ni :#%@<@A4?@A #%@<@A4?@< long $L ?@:7itni c0-lo7ro0ni :B##4 J %$ %= B##4 J %$ %= @loat $.$f 4#:7itni s pomi"nim 3ar-3om 1p-cificirano IEEE <=@ = standardom
do,ble $.$d ?@:7itni s pomi"nim 3ar-3om boolean fals- %:7itni fals-, tr.- +har '\u0000' %?:7itni Unicod- karakt-r '\u0000' (0) ST.ffffS 8?==4=> Ta3lica +: Pri%itivni ti&ovi &odataka i &odraz'%i/evane vri/ednosti 'Dt- i sCort tipovi pon-kad s- korist- .m0-sto int tipa, .koliko 0- potr-7na ./t-da m-mori0sko! prostora. D-klaraci0om po0-din- vari0a7l- . m-mori0i s- r-3-rvira ona v-li"ina prostora ko0a 0- d-finirana v-li"inom tipa. U ta7lici 0- dana v-li"ina 3a po0-dini primitivni tip po: dataka. = IEEE 1tandard for 'inarD Uloatin!:oint *ritCm-tic : ## : rim0-ri d-klaraci0- i dod0-l0ivan0a vri0-dnosti primitivnim tipovima9 int l # <F% long b # /@<FG% Eloat c # /@,;<E% double d # /F,$% sDort e # @% b+te E # <% boolean # Ealse% odra3.mi0-vani tipovi odra3.mi0-vani tip 3a 7ro0-v- %$, %%... 0- int. odra3.mi0-vani tip 3a 7ro0-v- %$.%, %%.4A... 0- do.7l-. Ukoliko 6-limo na3na"iti da s. 7ro0-vi %$ i %% tipa lon!, onda pi/-mo %$L i %%L. Isto vri0-di i 3a float. Ukoliko vari0a7li ni0- dodi0-l0-na nikakva vri0-dnost, kompil-r prilikom i3vr/ava: n0a nasto0i postaviti vari0a7li inici0aln. podra3.mi0-van. vri0-dnost. odra3.mi0-: van- vri0-dnosti s. dan- . ta7lici. )#)# Sloeni ti%o!i %odataka 1lo6-ni tipovi podataka s. oni ko0i s- sasto0- od sk.pa podataka, t0. n- sadr6- samo 0-dn. vri0-dnost. Takav tip podataka od!ovara klasi. (lasa 0- slo6-ni tip podatka. odaci s- ".va0. . o70-kt.. Do o70-kta s- mo6- doi pr-ko r-f-r-nc-. R-f-r-nca s- d-finira kod samo! kr-iran0a o70-kta. 0utnik putnik # ne) 0utnik()% U prim0-r. s- navodi tip podatka 8tip r-f-r-nc-> i na3iv r-f-r-nc- ko0i r-f-rira na novi kr-irani o70-kt klas- 8tipa podataka> .tnik. Vari0a7la p.tnik samo poka3.0- 8vodi> na tr-n.ta"ni o70-kt . m-mori0i P !ovorimo o r-f-r-nci na o70-kt. Ukoliko samo ostavimo d-klaraci0.9 0utnik putnik% i n- kr-iramo o70-kt, r-f-r-nca n-- poka3ivati na o70-kt. U tom s- sl."a0. .m0-sto o70-kta postavl0a n.ll ko0i o3na"ava n-dostatak o70-kta. (ad !od kr-irat- klas., 3apravo kr-irat- i svo0 tip podatka. : #4 : )#*# String (lasa 1trin! pripada slo6-nom tip., iako s- s tom klasom mo6- raditi kao i s pri: mitivnim tipovima. Vri0-dnost to! tipa .vi0-k s- stavl0a . dvostr.k- navodnik- EE. rim0-r d-klaraci0- i dod0-l0ivan0a vri0-dnosti9 String ime # -Barko-% String ime # ne) String(-Barko-)% &7a na"ina rad- ist. stvar9 r-f-r-nci im- dodi0-l0-n 0- o70-kt tipa 1trin!. 1trin! 0- sp-cifi"na klasa i po tom- /to s- o70-kti t- klas- mo!. 0-dnostavno t-ks: t.alno prika3ati ? . rim0-r9 S+stem,out,println(ime)% 1trin! pr-3im- F E2arkoviEI 1trin! im-ViVpr-3im- F im-WE EWpr-3im-I &p-ratorom W na3na"-no 0- spa0an0- strin!ova, t0. spa0an0- t-ksta. Ra .spor-d7. dva0. o70-kata klas- 1trin! koristi s- m-toda eA,al'. rim0-r9 String mjesec # ne) String (-travanj-)% String mjesec( # -travanj-% mjesec,eHuals(mjesec()% // re&ultat metode je true ovratni tip m-tod- eA,al';< 0- 7ool-an, odnosno m-toda mo6- vratiti tr.- ili fal: s-. ? &70-kti ostaliC klasa mo!. imati svo0stvo t-kst.alno! prika3a .koliko n0iCov- klas- ima0. m-tod. to1trin!8>. : #@ : )#-# Kon!er&ija %ri(iti!nih ti%o!a %odataka )#-#"# A,to(at'ka (od primitivniC n.m-ri"kiC tipova podataka a.tomatska konv-r3i0a id- . sm0-r.9 7Dt- . sCort, int, lon!, float, do.7l- sCort . int, lon!, float, do.7l- int . lon!, float, do.7l- lon! . float i do.7l- float . do.7l-. rim0-r9 public class Iacunanje { public static void main(String[] args) { int J # F% long l # J% S+stem,out,println(-5utomatska konver&ija int u long-)% Eloat E # ;>G% //5utomatska konver&ija long u Eloat } } *.tomatska konv-r3i0a tako5-r s- mo6- 0aviti kod prosl0-5ivan0a vri0-dnosti m-to: di, kao i kod povratno! tipa m-tod-. rim0-r9 public class Iacunanje/ { double &broji(double J8 double +) { return J4+% } public static void main(String[] args) { Iacunanje/ r # ne) Iacunanje/()% double &broj # r,&broji((,@8/,?)% S+stem,out,println(-Kbroj je -4&broj)% double &broj/ # r,&broji(@8 F)% S+stem,out,println(-/, &broj je -4&broj/)%
S+stem,out,println(r,&broji($;G8 @))% } } : #= : U prim0-r. Rac.nan0-#.0ava m-toda 37ro0i8> priCvaa dva param-tra tipa do.7l-, 37ra0a iC i vraa r-3.ltat ko0i 0- tipa do.7l-. (od po3iva m-tod-9 r,&broji((,@8 /,?)% m-todi 37ro0i8> prosl0-5.0. s- podaci tipa do.7l- 8podra3.mi0-vani tip 3a 7ro0-v- %.4 i #.? 0- do.7l->. 1 o73irom da m-toda 37ro0i8> od!ovara, po na3iv. i po tip., 7ro0. i r-dosli0-d. pa: ram-tara ko0i 0o0 s- prosl0-5.0., ta s- m-toda i3vr/ava, a r-3.ltat i3vr/avan0a 3a: pis.0- s- . vari0a7l. 37ro09 double &broj # r,&broji((,@8/,?)% U dr.!om sl."a0.9 double &broj/ # r,&broji(@8 F)% m-todi 37ro0i8> prosl0-5.0. s- podaci tipa int 8podra3.mi0-vani tip 3a 7ro0-v- 4 i = 0- int>. 1 o73irom da m-toda 37ro0i s tim tipovima param-tara n- posto0i, tr-7ala 7i s- 0aviti !r-/ka9 metDod &broji(int8 int) doesnLt eJist in class Iacunanje/ 2-5.tim, 37o! a.tomatsk- konv-r3i0- tipova podataka, po3vat - s- m-toda 37ro0i8do.7l- J, do.7l- D>. ri po3iv. t- m-tod- 7ro0-vi 4 i = s- konv-rtira0. . tip do.7l-9 4.$ i =.$. U sl."a0. da 0- posto0ala dr.!a m-toda 37ro0i8int J, int D>, onda 7i s- po3vala ta dr.!a m-toda ko0o0 tip param-tara vi/- od!ovara po3iv. r.37ro0i84, =>. U sl."a0. 7ilo ko0- aritm-ti"k- ra".nsk- op-raci0-, r-3.ltat s- .vi0-k prvo svodi na int, a nakon to!a na na0v-i tip9 Eloat re& # @ * <G 4 F,?E% // (int) * (long) + (float) double re&( # (>,? M <,;E% // (double) - (float) b+te b # @% sDort s # //>% int re&/ # b 4 s% (ada 0- ri0-" o tip. 1trin!, v- smo radili s ispisima9 S+stem,out,println(-Kbroj je -4re&)% : #? : U ovom sl."a0., op-rator W radi spa0an0- podataka ER7ro0 0- E i r-3. rilikom spa: 0an0a podataka r-3 s- konv-rtira i3 float . tip 1trin! i na ta0 na"in do7ivamo r-: 3.ltat tipa 1trin!.
/ada+i. +0 1reira/te klas' Rac'nan/e kao ' navedeno% &ri%/er'0 1o%&ilira/te i &okrenite &rogra%0 Is&ita/te a'to%atske konverzi/e iz%e<' ostalih &ri%itivnih ti&ova0 )0 - klasi Rac'nan/e testira/te konverzi/' iz 3oolean ' int i o3rn'to0 60 1reira/te klas' Rac'nan/e) kao ' navedeno% &ri%/er'0 1o%&ilira/te i &okrenite &rogra%0 80 - klasi Rac'nan/e) kreira/te dvi/e %etode z3ro/i24 ko/e 3i vi5e odgovarale &ozivi! %a r0z3ro/i26( @4 i r0z3ro/i2B?L( 640 Is&ita/te ko/e se %etode &oziva/' i ' ko/i% sl'a/e! vi%a0 Da 3iste %ogli odgovoriti( ' svako/ %etodi z3ro/i24 doda/te i is&ise na ekran'0 @0 - klasi Rac'nan/e) ' glavno/ %etodi testira/te ra'nske o&eraci/e iz &ri%/era i na! &ravite is&ise rez'ltata0 Is&ita/te ko/e se gre5ke /avl/a/' 'koliko 'z vari/a3le rez i rez+ &ostavite ti& int( a ko/a se gre5ka /avl/a 'koliko 'z vari/a3l' rez) &ostavite ti& 3"te0 C0 Pro%otrite is&ise: S+stem,out,println(-Kbroj je -4re&4re&()% i S+stem,out,println(-Kbroj je -4(re&4re&())% 3/asnite rez'ltate ovih is&isa0 )#-#)# Nea,to(at'ka ;t?%e +a'ting< )-a.tomatska konv-r3i0a podataka id- . sm0-r. s.protnom od a.tomatsk- P ko: nv-rtira0. s- v-i tipovi . man0- i pritom s- mora -ksplicitno nav-sti tip podatka . ko0i s- radi konv-r3i0a. (onv-r3i0- s- navod- . okr.!lim 3a!radama 8>. rim0-r9 long J # @G% int + # (int) J% U ovom prim0-r., navo5-n0-m 8int> J, dan 0- tip podatka . ko0i konv-rtiramo J. Tim- s- -ksplicitno navodi da 0- J tipa int 7-3 o73ira ko0-! 0- tipa i3vorno. : #< : )-a.tomatska konv-r3i0a radi s mo!.im !.7itkom podataka pa tako . sl."a0.9 double & # @,(<% int r # (int) &% vari0a7la r do7iva vri0-dnost 4, t0. !.7- s- vri0-dnosti i3a d-cimaln- to"k-. /ada+i. +0 1reira/te izvr5n' klas' 1onverzi/a0 - glavno/ %etodi testira/te sve sl'a/eve ne! a'to%atske konverzi/e iz%e<' &ri%itivnih ti&ova &odataka0 Pro%otrite g'3itke &oda! taka kod izrazito velikih 3ro/eva0 Prov/erite /e li %og'a konverzi/a ' 3oolean i char ti&ove0 )#0# O%eratori &p-rator- mo6-mo podi0-liti na .narn- i 7inarn-, ovisno o tom- nad koliko s- vri : 0-dnosti oni prim0-n0.0.. rim0-r9 &p-rator W .9 JWD 0- 7inarni op-rator. rim0-r9 &p-rator WW .9 JWW 0- .narni op-rator. )#0#"# Arit(eti7ki o%eratori *ritm-ti"ki op-ratori korist- s- 3a o7avl0an0- osnovniC mat-mati"kiC op-raci0a. O%erator Na(jena ri(jer W 37ra0an0- 3 F J W DI : od.3iman0- 3 F J : DI N mno6-n0- 3 F J N DI ; di0-l0-n0- 3 F J ; DI X mod.lo 8ostatak c0-lo7ro0no! di0-l0-n0a> 3 F J X DI WW .v-avan0- vri0-dnosti 3a % J:: 83na"i9 JFJ:%> :: .man0ivan0- vri0-dnosti 3a % J:: 83na"i9 JFJ:%> WF 37ra0an0- .3 dod0-l. vri0-dnosti JWF4 83na"i9 JFJW4> :F od.3iman0- .3 dod0-l. vri0-dnosti J:F= 83na"i9 JFJ:=> NF mno6-n0- .3 dod0-l. vri0-dnosti JNF%# 83na"i9 JFJN%#> ;F di0-l0-n0- .3 dod0-l. vri0-dnosti J;F# 83na"i9 JFJ;#> XF mod.lo .3 dod0-l. vri0-dnosti JXF# 83na"i9 JFJX#> Ta3lica ): Drit%etiki o&eratori : #A : (od 7ilo ko0- nav-d-n- aritm-ti"k- op-raci0- .vi0-k s- radi svo5-n0- vari0a7li na na0v-i tip, a r-3.ltat onda od!ovara tom tip.. U sl."a0. da s. vari0a7l- tipa 7Dt- ili sCort, kod ra".nskiC op-raci0a svod- s- na int. rim0-r9 b+te b( # @% b+te b/ # <% int b@ # b( 4 b/% //kod ra"unske operacije svoNenje na int (od c0-lo7ro0no! di0-l0-n0a r-3.ltat 0- .vi0-k ci0-li 7ro0. int r # @ / /% double r( # @,> / /% R-3.ltati r i r% s. ra3li"iti. )#0#)# O%eratori nad bito!i(a &p-ratori nad 7itovima korist- s- 3a sv- c0-lo7ro0n- tipov-9 7Dt-, sCort, int, lon!. Tako5-r s- mo!. koristiti i na tip. cCar. 1vaka od nav-d-niC op-raci0a o7avl0a s- na po0-dinom 7it. nav-d-no! 7ro0a. ritom s-, naravno, misli na 7itov- 7ro0a . 7inarnom 3apis.. O%erator Na(jena ri(jer Y Unarno )&T na 7itovima c F YaI Z *)D na 7itovima c F a Z 7I [ &R na 7itovima c F a [ 7I \ ]&R P Ekskl.3ivno &R c F a \ 7I ^^ omican0- 7itova .d-sno c F a ^^ #I ^^^ omican0- 7itova .d-sno .3 pop.n0avan0- n.lom c F a ^^^ #I __ omican0- 7itova .li0-vo c F a __ #I ZF *)D na 7itovima .3 dod0-l. vri0-dnosti 7 ZF aI 87 F 7Za> [F &R na 7itovima .3 dod0-l. vri0-dnosti 7 [F aI 87 F 7[a> \F ]&R P Ekskl.3ivno &R .3 dod0-l. vri0-dnosti 7 \F aI 87 F 7\a> ^^F omican0- 7itova .d-sno .3 dod0-l. vri0-dnosti 7 ^^F %I 87 F 7^^%> ^^^F omican0- 7itova .d-sno .3 pop.n0avan0- n.lom i dod0-l. vri0-dnosti 7 ^^^F aI 87 F 7^^^a> __F omican0- 7itova .li0-vo .3 dod0-l. vri0-dnosti 7 __F aI 87 F 7__a> Ta3lica 6: &eratori nad 3itovi%a : #B : )#0#*# O%eratori ,'%oredbe &p-ratori .spor-d7- .spor-5.0. op-rand-, a r-3.ltat 0- 7ool-an tipa9 tr.- ili fal: s-. O%erator Na(jena ri(jer FF J-dnako if 8aFF7> L print8EJ-dnakoE>I M `F Ra3li"ito if 8a`F7> L print8ERa3li"itoE>I M ^ V-- od if 8a^7> L print8aWE 0- v-- od EW7>I M _ 2an0- od if 8a_7> L print8aWE 0- man0- od EW7>I M ^F V-- ili 0-dnako if 8a^F7> L print8aWE 0- v-- ili 0-dnako EW7>I M _F 2an0- ili 0-dnako if 8a_F7> L print8aWE 0- man0- ili 0-dnako EW7>I M Ta3lica 8: &eratori 's&ored3e )#0#-# Logi7ki o%eratori O%erator Na(jena ri(jer ` Lo!i"ka n-!aci0a if 8`a> print8Ea 0- fals-E>I ZZ Lo!i"ki *)D 88aFF7> ZZ8a_c>> [[ Lo!i"ki &R 88a_F7> [[ 8a_Fc>> FF J-dnako 8aFF7> `F Ra3li"ito 8a`F7> a9 T-rnarni op-rator a_%$ a aN# 9 a;#I Ta3lica @: Logiki o&eratori : 4$ : )#2# Varijable U Javi ra3lik.0-mo sl0-d-- vari0a7l-9 vari0a7l- o70-kta vari0a7l- klas- lokaln- vari0a7l- param-tri. Varijable objekta 8vari0a7l- instanc-> odnos- s- na on- vari0a7l- d-klariran- .n.: tar klas-. (od kompiliran0a pro!rama, 3a svaki kr-irani o70-kt radi s- kopi0a tiC vari0a7li. 1vaka kopi0a sadr6i svo0- vri0-dnosti ko0- pripada0. po0-dinom o70-kt.. Vri0-dnosti dodi0-l0-n- tim vari0a7lama 0-dinstv-n- s. 3a svaki o70-kt 8instanc. klas-> 3as-7no. )a slici 0- prika3an U2L di0a!ram o70-kata. (lasa Lini0a sadr6i d-klariran- vari0a7l- o70-kta9 sirina, poc-tna]o3 i poc-nabo3. TankaLini0a i d-7-laLini0a s. o70-kti nav-d-n- klas-. 1vakom o70-kt. pridr.6-n- s. 3as-7n- vri0-dnosti nav-d-niC vari0a7li. : 4% : ,lika 6: -.L di/agra% o3/ekta E vari/a3le o3/ekata Klasa Linija Objekti: tankaLinija i debelaLinija ripadni kod i3!l-dao 7i ovako9 public class Ginija { int sirina% // deklaracija varijabli objekta int pocetnaO0o&% int pocetnaP0o&%
public static void main(String[] args) { Ginija tankaGinija # ne) Ginija()% // objekt tankaGinija,sirina # (% tankaGinija,pocetnaO0o& # (>% tankaGinija,pocetnaP0o& # (>>% Ginija debelaGinija # ne) Ginija()% debelaGinija,sirina # (>% debelaGinija,pocetnaO0o& # (>% debelaGinija,pocetnaP0o& # />>% } } 1v- vari0a7l- . Javi pri0- kori/t-n0a mora0. 7iti d-klariran-, pri "-m. s- .nosi tip vari0a7l- i na3iv vari0a7l-. Vari0a7la s- .3 d-klaraci0. postavl0a na n-k. po"-tn. vri0-dnost 8inici0ali3aci0a>. Ukoliko s- vari0a7la d-klarira, a n- dodi0-li 0o0 s- -ksplicitno inici0alna vri0-dnost, onda s- a.tomatski postavl0a0. podra3.mi0-van- vri0-dnosti 3a nav-d-ni tip po: dataka. &vo s- pos-7no odnosi na vari0a7l- o70-kta i vari0a7l- klas-. odra3.mi0-van- vri0-dnosti 3a primitivn- tipov- podataka dan- s. . ta7lici. Do7ra 0- praksa . pro!ramiran0. da s- kod d-klariran0a vari0a7li postav- i inici: 0aln- vri0-dnosti. Ra !or- nav-d-ni kod po6-l0no 7i 7ilo postaviti9 int sirina # >% int pocetnaO0o& # >% int pocetnaP0o& # >% Varijable kla'e < o3na"ava0. s- 0o/ i kao stati"k- vari0a7l- 8.3 n0iC s- stavl0a kl0.": na ri0-" static>. Vari0a7l- klas- n- .mno6ava0. s- prilikom kompiliran0a, t0. posto0i samo 0-dna kopi0a t- vari0a7l-, n-ovisno o tom- koliko s- p.ta klasa instancira, odnosno n-ovisno o tom- koliko s- o70-kata t- klas- kr-ira. rim0-r9 public class Croj { static int nekiro! " #; < & m-todama 0- 7ila ri0-" . po!lavl0.9 ripadnost m-tod- klasi ili o70-kt. : 4# : public static void main(String[] args) { nekiCroj44% S+stem,out,println(-nekiCroj po&van direktno -4 nekiCroj)% Croj,nekiCroj44% S+stem,out,println(-nekiCroj po&van preko klase -4 Croj,nekiCroj)%
Croj broj # ne) Croj()% broj,nekiCroj44% S+stem,out,println(-nekiCroj po&van preko objekta-4 broj,nekiCroj)% } } Vari0a7la n-ki'ro0 0- stati"ka, odnosno pripada klasi 'ro0. Ukoliko s- vari0a7la po3iva i3 main8> m-tod- ist- klas-, onda s- mo6- po3vati dir-ktno. Lini0a9 nekiCroj44% 0- dir-ktan po3iv vari0a7l-. Ukoliko s- stati"ka vari0a7la po3iva i3 n-k- dr.!- klas-, onda s- po3iva na na"in9 Croj,nekiCroj44% Dakl-, .3 vari0a7l. s- pi/- pripadnost klasi. Da 7ismo prist.pili nav-d-no0 vari0a: 7li, n- moramo kr-irati o70-kt, ali ako !a i kr-iramo, onda mo6-mo isto0 vari0a7li prist.piti i pr-ko o70-kta. U tom s- sl."a0. isto0 vari0a7li mo6- prist.piti i pr-ko 7ilo ko0-!a dr.!o! o70-kta9 broj,nekiCroj44% U sl."a0. da radimo s vari0a7lama ko0- pripada0. klasi, kod kr-iran0a o70-kta n- radi s- 3as-7na kopi0a t- vari0a7l- rim0-r9 ,lika 8: -.L di/agra% o3/ekta E vari/a3la klase : 44 : (lasa 1tanovnici ima stati"k. vari0a7l. .k.pan'ro01tanovnika. Vri0-dnost vari0a: 7l- s- mi0-n0a n-stati"kom m-todom .n-si'ro01tanovnika8>, . ko0o0 s- vri0-dnost vari0a7l- .k.pan'ro01tanovnika .v-ava 3a prosli0-5-n. vri0-dnost. Ra o70-kt-9 stanovnici9rad( i stanovnici9rad/ vari0a7la .k.pan'ro01tanovnika 0- 3a0-dni"ka t- o3na"ava .k.pan 7ro0 stanovni: ka . o7a !rada 3a0-dno. 2-toda .n-si'ro01tanovnika8> po3iva s- pr-ko o70-kata i 3a svaki o70-kt prima 7ro0 stanovnika i3 0-dno! pa i3 dr.!o! !rada. )a kra0. s- po3iva stati"ka m-toda9 ispisiQkupanCrojStanovnika() ko0. mo6-mo po3vati n-ovisno o o70-ktima. rim0-r9 public class Stanovnici {
static long ukupanCrojStanovnika # >%
void unesiCrojStanovnika(int broj){ ukupanCrojStanovnika 4# broj% } static void ispisiQkupanCrojStanovnika(){ S+stem,out,println(-Qkupan broj stanovnika je -4 ukupanCrojStanovnika)% } public static void main(String[] args) { Stanovnici stanovnici9rad( # ne) Stanovnici()% stanovnici9rad(,unesiCrojStanovnika(/>>(;$)%
Stanovnici stanovnici9rad/ # ne) Stanovnici()% stanovnici9rad/,unesiCrojStanovnika((/@$;>)%
Stanovnici,ispisiQkupanCrojStanovnika()% } } (oraci9 %. (r-ira s- o70-kt stanovnici,rad% klas- 1tanovnici. Vari0a7la .k.pan: 'ro01tanovnika n-ma svo0. kopi0. 3a nav-d-ni o70-kt s o73irom da pripada klasi. #. Ra o70-kt stanovnici,rad% po3iva s- m-toda .n-si'ro01tanovnika8> ko0o0 s- prosl0-5.0- c0-lo7ro0na vri0-dnost. : 4@ : 4. Uk.pan'ro01tanovnika WF #$$%BA 0- 3apravo op-raci0a9 A .k.pan'ro01tanovnika F .k.pan'ro01tanovnika W #$$%BAI !d0- s- 37ra0a0. vri0-dnosti s d-sn- stran- i pridr.6.0. vari0a7li s li0-v- stra: n- 8.k.pan'ro01tanovnika F #$$%BA>. @. (r-ira s- o70-kt stanovnici,rad# klas- 1tanovnici. =. Ra o70-kt stanovnici,rad# po3iva s- m-toda .n-si'ro01tanovnika8> ko0o0 s- prosl0-5.0- c0-lo7ro0na vri0-dnost. ?. Uk.pan'ro01tanovnika WF %#4AB$ da0- kona"n. vri0-dnost 4#@$AA. <. (ona"no s- po3iva m-toda9 1tanovnici.ispisi'ro01tanovnika8>I ko0a ispis.0- vri0-dnost vari0a7l- .k.pan'ro01tanovnika. Lokalne !arijable s- d-klarira0. .n.tar po0-din- m-tod-9 double i&racun0rire&a(double osnovica){ double prire$ # ($,>>% return (osnovica * prire&) / (>>% } Vari0a7la prir-3 0- lokalna vari0a7la i n- vri0-di i3van nav-d-n- m-tod-. Lokaln- vari0a7l- mora0. s- inici0ali3irati, odnosno mora0. im s- dodi0-liti vri0-d: nosti pri0- kori/t-n0a, s o73irom da kompil-r to n-- sam .raditi, kao . sl."a0. vari0a7li o70-kta i klasa. public class Rovjek { public void ispisiCB.(double visina8 double te&ina){ double bmi; bmi # te&ina / (visina * visina)% S+stem,out,println(-CB. je -4bmi)% } public static void main(String[] args) { Rovjek covjek # ne) Rovjek()% covjek,ispisiCB.((,$>8 S/)% } } D-klaraci0a lokaln- vari0a7l- 7mi9 double bmi% A &p-raci0- i op-ratori s. o7ra5-ni . 3as-7nom po!lavl0. : 4= : Dod0-la vri0-dnosti vari0a7li9 bmi # te&ina / (visina * visina)% '-3 dod0-l- vri0-dnosti vari0a7li 0avila 7i s- !r-/ka9 Error062714: var!able b#! #!ght not have been !n!t!al!zed ara(etri s. vari0a7l- ko0- s- navod- .n.tar okr.!liC 3a!rada . m-todama. U pr-tCodnom prim0-r. 8klasa Cov0-k> param-tri s.9 double visina8 double te&ina )av-d-n- vari0a7l- d-klariran- s. .n.tar 3a!rada m-tod-, a dodi0-l0-n- vri0-d: nosti s. on- ko0- im s- prosl0-5.0. po po3iv.9 public void ispisiCB.(double visina8 double te&ina){ ,,, } o3iv m-tod-9 covjek,ispisiCB.((,$>8 S/)% Vari0a7l- visina i t-3ina do7iva0. prosli0-5-n- vri0-dnosti9 visina # (,$> te&ina # S/ /ada+i. +0 1reira/te klas' Lini/a kao ' navedeno% &ri%/er'0 Doda/te %etod' is&is24 za is&is vari/a3li o3/ekta0 Pozovite %etod' za dane o3/ekte0 1o%&ilira/te i &okrenite &rogra%0 Pro%otrite rez'ltat0 )0 1reira/te klas' :ro/ kao ' navedeno% &ri%/er'0 1o%&ilira/te i &okrenite &rogra%0 Pro%otrite rez'ltat0 Doda/te vari/a3l' o3/ekta 3ro/ i na&ravite is&ise za/edno s vari/a! 3lo% klase neki:ro/0 Pro%otrite razlike ' &ozivi%a vari/a3li0 60 1reira/te klas' ,tanovnici kao ' navedeno% &ri%/er'0 1o%&ilira/te i &okrenite &rogra%0 Pro%otrite rez'ltat0 Doda/te %etod' izrac'nPrireza24 i &ozovite /e iz glavne %etode0 : 4? : 80 - klasi ,tanovnici doda/te ko%entare 'z vari/a3le klase( o3/ekta( lokalne vari/a3le te &ara%etre0 @0 1reira/te klas' $ov/ek kao ' navedeno% &ri%/er'0 1o%&ilira/te i &okrenite &ro! gra%0 Pro%otrite rez'ltat0 Pok'5a/te generirati gre5k' dan' ' &ri%/er'0 C0 - klasi $ov/ek doda/te vari/a3le o3/ekta: i%e i &rezi%e ti&a ,tring0 )#3# odr,7je !aenja !arijabli ;'+o%e< odr."0- va6-n0a vari0a7li odr-5-no 0- viti"astim 3a!radama LM. Vari0a7la vri0-di od tr-n.tka d-klaraci0- pa do 3avr/-tka 3a!rada .n.tar ko0iC 0- d-klarirana. romotrit- kod9 public class Tarijable { int i # >% String na&iv # -*est-%
void testiranje(){ S+stem,out,println(-*estiranje -4na&iv)% int i # ;% double j # (>,;% S+stem,out,println(i4j)% } public static void main(String[] args) { Tarijable var # ne) Tarijable()% var,testiranje()% } } Vari0a7l- o70-kta i i na&i! vri0-d- .n.tar ci0-l- klas-. Lokaln- vari0a7l- . m-todi t-stiran0-8>, i i j, vri0-d- od tr-n.tka d-klaraci0- pa do kra0a m-tod-. Lokaln- vari: 0a7l- mo!. imati isti na3iv kao i vari0a7l- o70-kta. ,l-dano .n.tar m-toda, lokaln- vari0a7l- ima0. priorit-t kod prist.pa. U !orn0-m sl."a0. op-raci0a iW0 odnosi s- na 37ra0an0- lokalniC vari0a7li. Ukoliko .n.tar m-tod- prist.pamo vari0a7li, onda s- prov0-rava 0- li prv-nstv-no d-klarirana . m-todi. T-k nakon to!a s- prov0-rava d-klaraci0a .n.tar klas-. ,l-dano s ra3in- klas-, lokalnim vari0a7lama .n.tar m-toda n- mo6-mo prist.pi: ti i3vana. odr."0- va6-n0a vari0a7l- ko0a 0- r-f-r-nca na o70-kt id-nti"no 0- kao i kod osta: liC vari0a7li. R-f-r-nca n-sta0- na kra0. podr."0a va6-n0a. Ra3lika 0- 0-dino . tom- /to s- 7ri/- r-f-r-nca na o70-kt, ali n- i sam o70-kt ko0i i dal0- 3a.3ima m-: mori0. ra".nala. : 4< : *# Kon'tr,ktori (onstr.ktori s. pos-7n- vrst- m-toda ko0- s- po3iva0. prilikom kr-iran0a o70-ka: ta, odnosno prilikom inici0ali3aci0- o70-kta. Ra ra3lik. od m-toda, konstr.ktori9 .vi0-k ima0. isti na3iv kao i na3iv klas- n-ma0. povratni tip po3iva0. s- iskl0."ivo . tr-n.tk. kr-iran0a o70-kta sl.6- 3a inici0ali3aci0. nav-d-no! o70-kta. (onstr.ktori s- mo!. pisati 7-3 param-tara i tada !ovorimo o podra3.mi0-vanim konstr.ktorima. (onstr.ktora . klasi mo6- 7iti vi/-, a m-5.so7no s- ra3lik.0. pr-ma tipovima param-tara. *#"# Kreiranje kon'tr,ktora (onstr.ktori s- kr-ira0. .n.tar klas- i po pr-por.ci s- pi/. pri0- ostaliC m-toda . klasi. rim0-r9 public class %soba { public %soba() { //konstruktor } public static void main(String[] args) { Osoba osoba # ne) Osoba()% } } U nav-d-nom prim0-r. &so7a8> L M 0- podra3.mi0-vani konstr.ktor, a n-K &so7a8> 0- po3iv to! konstr.ktora. (onstr.ktori ima0. id-nti"na im-na pa s- ra3lik.0. pr-ma tipovima param-tara. rim0-r9 public class Osoba { // podra&umijevani konstruktor public Osoba() { } // konstruktor public Osoba(String ime8 String pre&ime) { } // konstruktor public Osoba(String ime8 String pre&ime8 String adresa){ } : 4A : public static void main(String[] args) { Osoba osoba # ne) Osoba()% } } Ti0-la nav-d-niC konstr.ktora s. pra3na. Uo7i"a0-no s- . konstr.ktor- 3apis.0- ono /to 7i tr-7alo i3vr/iti odmaC prilikom kr-iran0a o70-kata. )aim-, s o73irom da s- radi o inici0ali3aci0i o70-kata, t0. davan0. po"-tniC vri0-d: nosti 3a t- o70-kt-, o7i"no s- kro3 param-tr- konstr.ktora prosl0-5.0. t- po"-tn- vri0-dnosti. Ukoliko s- 3a o70-kt klas- &so7a postav- vari0a7l- im-, pr-3im- i adr-sa kao svo0 : stva nav-d-no! o70-kta 8vari0a7l- o70-kta>, B onda s- kro3 konstr.ktor- prosli0-5-: n- vri0-dnosti mora0. postaviti . nav-d-n- vari0a7l- o70-kta. rim0-r9 public class Osoba { String ime8 pre&ime8 adresa% // podra&umijevani konstruktor public Osoba() { } // konstruktor public Osoba(String ime(8 String pre&ime() { ime # ime(% pre&ime # pre&ime(% } // konstruktor public Osoba(String ime(8 String pre&ime(8 String adresa(){ ime # ime(% pre&ime # pre&ime(% adresa # adresa(% } public static void main(String[] args) { Osoba osoba # ne) Osoba()% } } /ada+i. +0 1reira/te klas' so3a kao ' navedeno% &ri%/er'0 1o%&ilira/te i &okrenite &ro! gra%0 )0 1reira/te klas' .o3itel s konstr'ktori%a ko/i i%a/' &ara%etre: ! 3ez &ara%etara 2&odraz'%i/evani konstr'ktor4 ! s &ara%etro% ,tring ti&+ ! s &ara%etri%a ,tring ti&+( long 3ro/+0 B Vidi po!lavl0-9 Vari0a7l- o70-kta : 4B : 60 - klasi .o3itel kreira/te vari/a3le o3/ekta ti& i 3ro/ te i% kroz konstr'ktore dodi/eli ! te inici/alne vri/ednosti0 *#)# o&i!i kon'tr,ktora (onstr.ktori s- po3iva0. prilikom kr-iran0a o70-kta. ritom tr-7a voditi ra".na o tom- da s- svakom konstr.ktor. prosli0-di ispravan tip i r-dosli0-d vri0-dnosti. r-ma pr-tCodnom prim0-r., po3vani s. konstr.ktori kod kr-iran0a o70-kata9 public static void main(String[] args) { Osoba osoba # ne) %soba()% Osoba osoba( # ne) %soba(&'na&(&)arkovi*&)% Osoba osoba/ # ne) %soba(&'na&(&)arkovi*&( &+ukovarska ,-&)% } (od kr-iran0a o70-kta oso7a po3iva s- podra3.mi0-vani konstr.ktor &so7a8>. (od kr-iran0a o70-kta oso7a% po3iva s- konstr.ktor &so7a81trin! im-%, 1trin! pr-3im-%>. I3vr/ava0. s- nar-d7- dan- . ti0-l. konstr.ktora9 ime # ime(% // ime # -5na- pre&ime # pre&ime(% // pre&ime # -Barkovi!- !d0- s- o70-kt. oso7a% pridr.6.0. vri0-dnosti E*naE i E2arkoviE. (od kr-iran0a o70-kta oso7a# po3iva s- konstr.ktor &so7a81trin! im-%, 1trin! pr-3im-%, 1trin! adr-sa%>. I3vr/ava0. s- nar-d7- dan- . ti0-l. konstr.ktora9 ime # ime(% // ime # -5na- pre&ime # pre&ime(% // pre&ime # -Barkovi!- adresa # adresa(% // adresa # -Tukovarska F$- !d0- s- o70-kt. oso7a# pridr.6.0. vri0-dnosti E*naE, E2arkoviE i EV.kovarska =AE. (ada s- . klasi &so7a kr-ira dodatna m-toda9 void ispis0odataka(){ S+stem,out,println(ime4- -4pre&ime4- -4adresa)% } po3ivom nav-d-n- m-tod- 3a svaki o70-kt do7iva0. s- ra3li"iti ispisi9 osoba,ispis0odataka()% osoba(,ispis0odataka()% osoba/,ispis0odataka()% : @$ : rim0-r9 public class Ciljeska { static int rbr # >% int redniCroj # >% String datum # --% String biljeska # --% public Ciljeska(String biljeska() { rbr44% redniCroj # rbr% biljeska # biljeska(% } public Ciljeska(String datum(8 String biljeska() { rbr44% redniCroj # rbr% datum # datum(% biljeska # biljeska(% } void ispisCiljeski(){ S+stem,out,println(redniCroj4-, -4datum4- -4 biljeska)% } public static void main(String[] args) { Ciljeska biljeska # ne) Ciljeska(->S,>/,/>((-8-.spit i& kolegija OO* .-)% Ciljeska biljeska( # ne) Ciljeska(->;,>@,/>((-8-Ie&ervacija sobe-)%
biljeska,ispisCiljeski()% biljeska(,ispisCiljeski()% } } U nav-d-nom prim0-r. d-klariran- s. tri vari0a7l- o70-kta9 r-dni'ro0, dat.m, 7i : l0-ska. 1vaki s- o70-kt pr-ko konstr.ktora inici0ali3ira na vlastit- vri0-dnosti. Vari0a7la r7r 0- vari0a7la klas- ko0a s- mi0-n0a n-ovisno o o70-kt., t0. pri svakom po3iv. konstr.ktora. /ada+i. +0 -&ot&'nite klas' so3a( kao ' navedeno% &ri%/er'( o3/ekti%a oso3a( oso3a+ i oso3a)0 Doda/te i %etod' is&isPodataka240 1o%&ilira/te i &okrenite &rogra%0 Pro%o! trite rez'ltat is&isa0 )0 - klasi so3a &ro%i/enite &oetne vri/ednosti za vari/a3le o3/ekta i &ro%otrite re! z'ltat0 : @% : 60 1reira/te klas' :il/eska kao ' navedeno% &ri%/er'0 1o%&ilira/te i &okrenite &ro! gra%0 Pro%otrite rez'ltat is&isa0 80 - glavno/ %etodi klase :il/eska kreira/te o3/ekt: :il/eska 3 F neG :il/eska24H 1o%&ilira/te &rogra% i &rov/erite ko/a se gre5ka /avl/a0 Za5toI 1reira/te /o5 /edan konstr'ktor ko/i% ete iz3/ei gre5k'0 @0 - glavno/ %etodi klase .o3itel( iz zadatka ' &rethodno% &oglavl/'( kreira/te o3/ekte ko/i%a e se &ozvati konstr'ktori0 Doda/te is&is za vri/ednosti vari/a3li ti& i 3ro/ &o/edinih o3/ekata0 Is&is na&ravite ' glavno/ %etodi ili kreira/te dodatn' %etod' i &ozovite /e *#*# Klj,7na rije7 thi' (l0."na ri0-" this koristi s- .n.tar po0-din- klas-, kada s- 6-li na!lasiti da s- radi o tr-n.ta"nom o70-kt., odnosno to 0- r-f-r-nca na tr-n.ta"ni o70-kt. rim0-r9 public class *ocka { int J% // varijabla objekta int +% // varijabla objekta public *ocka(int J8 int +) { tDis,J # J% tDis,+ # +% } public static void main(String[] args) { *ocka tocka # ne) *ocka(@8<)% S+stem,out,println(-J#-4tocka,J4- +#-4tocka,+)% } } U konstr.ktor. klas- Tocka param-tri s. na3vani J i D. U ovom sl."a0. koristimo ri0-" tCis kako 7ismo na!lasili to da 0-dan J 8tCis.J> pripada vari0a7li o70-kta, a dr.!i J pripada param-tr. konstr.ktora. )a ova0 na"in mo6-mo koristiti id-nti": n- na3iv- lokalniC vari0a7li i vari0a7li o70-kta. tCis.J P o3na"ava vari0a7l. > tr-n.ta"no! o70-kta tCis.D : o3na"ava vari0a7l. ? tr-n.ta"no! o70-kta Ukoliko vari0a7lama o70-kta prist.pamo kro3 !lavn. m-tod. ili 7ilo ko0. dr.!. klas., onda n- mo6-mo koristiti tCis. )ar-d7a9 S+stem,out,println(-J#-4t.is,J4- +#-4t.is,+)% ko0a s- po3iva i3 main m-tod- n- mo6- s- pisati . ovom o7lik. 0-r 7i to 3na"ilo isto /to i9 : @# : S+stem,out,println(-J#-4J4- +#-4+)% Vari0a7lama J i D n- mo6-t- prist.piti dir-ktno n-!o pr-ko o70-kta. 2o6-mo pisa: ti9 S+stem,out,println(-J#-4tocka,J4- +#-4tocka,+)% U klasi Tocka mo6-mo kr-irati m-tod. pomakni]8>9 void pomakniO(int i){ J 4# i% } Ukoliko prist.pamo vari0a7li J i3 m-tod- t- 6-limo na!lasiti da s- radi o vari0a7li o70-kta, pi/-mo9 tDis,J 4# i% U ovom sl."a0. to 0- n-potr-7no 0-r .n.tar m-tod- pomakni]8> ni0- d-klarirana niti 0-dna lokalna vari0a7la na3iva J, pa - s- . nar-d7i9 J 4# i% J odnositi na vari0a7l. o70-kta. (l0."nom ri0-"0. tCis mo6-mo .n.tar klas- prist.piti i vari0a7lama i m-todama o70-kta. Tako5-r, posto0- i po3ivi konstr.ktora ri0-"0. tCis8>. U klasi Tocka kr-iramo 0o/ 0-dan konstr.ktor9 public *ocka() { tDis((8()% } &vd0- 0- po3ivom tCis8%,%> na!la/-no da s- . isto0 klasi po3iva dr.!i konstr.ktor Tocka8int J, int D> ko0-m s- prosl0-5.0. vri0-dnosti %,%. U klasi 'il0-ska i3 pr-tCodno! po!lavl0a9 public Ciljeska(String biljeska() { rbr44% redniCroj # rbr% biljeska # biljeska(% } public Ciljeska(String datum(8 String biljeska() { rbr44% redniCroj # rbr% datum # datum(% : @4 : biljeska # biljeska(% } konstr.ktori s- mo!. i3m0-niti na sl0-d-i na"in9 public Ciljeska(String biljeska() { tDis(--8 biljeska()% } public Ciljeska(String datum(8 String biljeska() { rbr44% redniCroj # rbr% datum # datum(% biljeska # biljeska(% } /ada+i. +0 1reira/te klas' Tocka kao ' navedeno% &ri%/er'0 1o%&ilira/te i &okrenite &ro! gra%0 Pro%otrite is&is0 1reira/te /o5 /edan o3/ekt klase Tocka0 1reira/te %etod' is&i! si1oordinate24 ' ko/o/ 3i se &rikazivala vri/ednost vari/a3li A i "0 Pozovite naveden' %etod' za o3a o3/ekta klase Tocka0 - %etodi is&ro3a/te &rist'& vari/a3la%a A i " &reko this i 3ez this &a za3il/e7ite rez'ltate0 )0 - klasi Tocka doda/te %etod' &o%akniJ24 i is&ro3a/te navedeni &ri%/er0 60 - klasi so3a iz &rethodnog &oglavl/a iz%i/enite nazive lokalnih vari/a3li i%e+ ' i%e( &rezi%e+ ' &rezi%e itd0 Is&ita/te tre3a li dodati kl/'n' ri/e this0 1o%&ilira/te i &okrenite &rogra%0 Pro%otrite rez'ltat0 @. - klasa%a :il/eska i .o3itel iz%i/enite nazive lokalnih vari/a3li i &ro%otrite rez'l! tat : @@ : -# akiranje kla'a ak-ti omo!..0. !r.piran0- klasa po n-ko0 lo!ici. (lasa ko0a s- sm0-/ta . n-ki pak-t ima na po"-tk. kl0."n. ri0-" packa!- s na3i: vom pak-ta9 package mojpaket% &vom nar-d7om o3na"-na 0- pripadnost klas- danom pak-t.. Ukoliko dr.!a"i0- ni0- nav-d-no, pak-ti s- spr-ma0. . standardni pak-t. ak-ti s- korist- i da 7i s- odi0-lili isti na3ivi klasa. rim0-r 0- klasa 'ro09 package racun% class Croj { // naredbe } package banka% class Croj { // naredbe } (lasa 'ro0 mo6- posto0ati . o7a pak-ta 0-r pak-ti .0-dno i fi3i"ki od0-l0.0. po3ici0- na ko0ima s- klas- nala3-. U prvom sl."a0. klasa s- spr-ma . poddir-ktori09 rac.nT'ro0.0ava. (od kompiliran0a po3iva s-9 javac racunUCroj,java (od i3vr/avan0a9 java racun,Croj U dr.!om sl."a0. klasa s- spr-ma . poddir-ktori09 7ankaT'ro0.0ava. (ompiliran0-9 javac bankaUCroj,java : @= : a i3vr/avan0-9 java banka,Croj Dakl-, . prvom sl."a0. klasa pripada pak-t. rac.n t- s- prilikom po3iva mo6- pisati rac.n.'ro0. U dr.!om sl."a0. klasa pripada pak-t. 7anka t- s- prilikom po3iva mo6- pisati 7anka.'ro0. ak-ti s- mo!. or!ani3irati Ci0-rarCi0ski9 lo!i"ka or!ani3aci0a . pak-t- i potpak-t- od!ovara fi3i"ko0 or!ani3aci0i . dir-ktori0- i poddir-ktori0-. 1tandardn- Javin- klas- or!ani3iran- s. . n-koliko pak-ta i potpak-ta. &snovni pak-ti s.9 0ava.lan! 0ava.appl-t 0ava.aKt 0ava.7-ans 0ava.io 0ava.matC 0ava.n-t 0ava.nio 0ava.rmi 0ava.s-c.ritD 0ava.scl 0ava.t-Jt 0ava..til Ukoliko 6-limo koristiti klas- i3 tiC pak-ta, moramo napraviti .kl0."ivan0- po0-di: n- klas- i3 tiC pak-ta . na/. klas.. )a prim0-r9 import java,util,Iandom% import java,util,5rra+Gist% )a ta0 na"in po0-dnostavl0.0-mo po3iv- tiC klasa. Um0-sto da kod kr-iran0a o70-k: ta klas- Random pi/-mo9 java,util,Iandom rnd # ne) java,util,Iandom()% .koliko pak-t . ko0-m s- nala3i klasa Random .kl0."imo . na/. klas., mo6-mo pisati9 Iandom rnd # ne) Iandom()% &dnosno9 package racun% import java,util,Iandom% class Croj { : @? : // naredbe public static void main(String[] args) { Iandom rnd # ne) Iandom()% } } U pisan0. pak-ta .vi0-k prvo id- postavl0an0- pak-ta 8packa!->, a nakon to!a .kl0."ivan0- ostaliC pak-ta . klas. 8import>. )ar-d7. import mo6-mo koristiti i na sl0-d-i na"in9 import java,lang,*% pri "-m. N 3am0-n0.0- na3iv- sviC klasa i3 to! pak-ta. Ukoliko 6-limo koristiti klas. 'ro0 i3 pak-ta rac.n, onda - s- nav-d-na klasa .kl0."iti na na"in9 import racun,Croj% /ada+i. +0 1reira/te klase :ro/ kao ' navedeni% &ri%/eri%a0 1o%&ilira/te i &okrenite &rogra! %e0 Prov/erite na ko/o/ se #iziko/ lokaci/i nalaze ko%&ilirane klase0 )0 1reira/te klas' 1o%&leksni0 Na&ravite i%&ort klase rac'n0:ro/0 1o%&ilira/te i &o! krenite &rogra%0 : @< : 0# B,!anje objekata 0#"# Ni&o!i )i3 0- s-kv-nca -l-m-nata isto! tipa s to"no odr-5-nom d.l0inom. )i3 sadr6i vri : 0-dnosti primitivniC tipova ili o70-kt-. D.l0ina ni3a s- postavl0a kod kr-iran0a i na: kon to!a s- vi/- n- mi0-n0a. )i3 s- d-finira pr-ko r-f-r-nc- .3 ko0. id. .!lat- 3a: !rad-. rim0-r9 int brojevi []% ili int [] brojevi% U prim0-r. s. 7ro0-viGH r-f-r-nca na ni3 c0-lo7ro0no! tipa 8int> 9 brojevi [] # ne) int [<]% U3 r-f-r-nc. 0- kr-iran ni3 c0-lo7ro0niC vri0-dnosti 8int> d.l0in- @. lanovi ili -l-m-nti ni3a navod- s- s im-nom ni3a .3 ko0- s- stavl0a0. .!lat- 3a: !rad-, a .n.tar n0iC s- navod- ind-ksi ko0i po"in0. od $. Ukoliko 0- v-li"ina ni3a n, onda ind-ksi id. do n:%. &vako kr-iran ni3 odmaC 0- i inici0ali3iran. El-m-nti do7iva0. po"-tn- vri0-dnosti . sklad. s tipom podatka. U !orn0-m prim0-r. -l-m-nti ni3a s- a.tomatski inici0ali3ira0. na podra3.mi0-va: n- vri0-dnosti9 brojevi[>] # >% brojevi[(] # >% brojevi[/] # >% brojevi[@] # >% Dr.!i na"in d-klaraci0- i dod0-l0ivan0a inici0alniC vri0-dnosti ni3. 0- sl0-d-i 9 int brojevi/ [] # {(8/8@8<8F}% Inici0aln- vri0-dnosti s- navod- . viti"astim 3a!radama LM. : @A : &vo 7i s- mo!lo 0o/ pisati i kao9 int brojevi/ [] # ne) int [F]% brojevi/ [>] # (% brojevi/ [(] # /% brojevi/ [/] # @% brojevi/ [@] # <% brojevi/ [<] # F% (od ni3a ni0- dop./t-no prist.pan0- -l-m-ntima i3van 3adaniC !ranica. Ukoliko stavimo9 brojevi/[F] # ?% !-n-rirat - s- !r-/ka9 'rra/0nde1%ut%2ounds31ception (> Vari0a7la ni3a ko0a odr-5.0- d.l0in. po0-dino! ni3a 0- l-n!tC. &7i"no pi/-mo9 brojevi/,lengtD kako 7ismo do7ili v-li"in. ni3a. rim0-ri 3a ni3 karakt-ra9 cDar abeceda []# {L5L8LCL8LRL8L7L8LVL8LWL8L9L}% cDar &nak [] # ne) cDar [F]% &nak [>] # LmL% &nak [(] #LXL% &nak [/] #L4L% &nak [@] #L(L% &nak [<] #L)L% rim0-ri 3a ni3 strin!ova9 String boje [] # {-&elena-8 -uta-8 -crvena-8 -plava-}% String povrce [] # ne) String [@]% povrce [>] # -blitva-% povrce [(] # -salata-% povrce [/] # -maDune-% (od prist.pan0a n-kom -l-m-nt. ni3a tr-7ali 7ismo 3nati na ko0o0 0- po3ici0i ta0 -l-m-nt ni3a, odnosno dovol0no 0- 3nati ind-ks 3a ta0 -l-m-nt. %$ I3.3-ci s. o70a/n0-ni . 3as-7nom po!lavl0. : @B : S+stem,out,println(-0ovr!e A -4povrce [>])% S+stem,out,println(-0ovr!e A -4povrce [(])% S+stem,out,println(-0ovr!e A -4povrce [/])% &sim primitivniC tipova podataka, . ni3ov- mo6-mo sm0-/tati i o70-kt-, to"ni0- r-f-r-nc- na o70-kt-. rim0-r9 p.7lic class *.to L String tip% public 5uto(String tip) { tDis,tip # tip% } void ispisi*ip(){ S+stem,out,println(-*ip je -4tip)% } public static void main(String[] args) { 5uto n5uto [] # ne) 5uto [@]% n5uto [>] # ne) 5uto(-Ienault-)% n5uto [(] # ne) 5uto(-Word-)% n5uto [/] # ne) 5uto(-3issan-)% } (r-iran 0- ni3 n*.to GH tipa *.to v-li"in- 4. Ra svaki -l-m-nt ni3a kr-iran 0- pripadni o70-kt klas- *.to. U tom 0- sl."a0. sva: ki -l-m-nt ni3a 0-dna r-f-r-nca na o70-kt klas- *.to. Ukoliko n-kom -l-m-nt. ni3a ni0- dodi0-l0-n o70-kt, podra3.mi0-vana vri0-dnost 0- n.ll. rim0-r9 .koliko pro/irimo ni3 i3 pr-tCodno! prim0-ra na9 5uto n5uto [] # ne) 5uto [<]% odra3.mi0-vana vri0-dnost 3a n*.to G4H F n.ll, dok s- n- kr-ira pripadni o70-kt. (od ispisa, 3a po0-dini o70-kt po3iva0. s- m-tod-9 S+stem,out,println(-*ip je -4n5uto[>],tip)% S+stem,out,println(-*ip je -4n5uto[(],tip)% &dnosno9 n5uto[>],ispisi*ip()% U sl."a0. 3aCt0-va 3a ispisom9 S+stem,out,println(-*ip je -4n5uto[@],tip)% : =$ : Ukoliko 0- n*.toG4H F n.ll, t0. n- posto0i o70-kt, 0avit - s- !r-/ka9 4ull5ointer31ception /ada+i. +0 - &roizvol/no/ klasi testira/te nizove s &ri%itivni% ti&ovi%a &odataka kao ' &ri%/e! ri%a0 Prov/erite na ko/i se nain %o7e generirati gre5ka Drra"IndeA't#:o'nd! sKAce&tion0 )0 1reira/te klas' D'to kao ' navedeno% &ri%/er'0 1o%&ilira/te i &okrenite &rogra%0 Pro%otrite is&is0 Lenerira/te dva ti&a gre5ke: Drra"IndeA't#:o'ndsKAce&tion i N'llPointerKAce&tion0 60 1reira/te klas' :ro/ s konstr'ktoro% ko/i &rihvaa /edan &ara%etar ti&a do'3le0 - glavno/ %etodi kreira/te niz ti&a do'3le s 3ro/evi%a: +( +0))( )088( 60CC( 80BB( C0 Ta! ko<er kreira/te niz o3/ekata ti&a :ro/0 3/ekte kreira/te &re%a navedeni% vri/ednos! ti%a0 Is&i5ite d'l/ine o3a/' nizova te ele%ente o3a/' nizova0 0#)# Kontejneri (ont-0n-ri s- korist- 3a ".van0- o70-kata, to"ni0- r-f-r-nci na o70-kt-. U t. svrC. mo!. s- koristiti i ni3ovi. &snovni pro7l-m kod ni3a 0- to"no d-finirana i n-prom0-n0iva v-li"ina. (ako n- mo6-mo .vi0-k 3nati koliko -mo o70-kata morati sm0-stiti . ni3, mo6- nam s- do!oditi da ni3 8pa pr-ma tom- i m-mori0ski prostor> ostan- n-iskori/t-n ili da, s dr.!- stran-, postan- n-dovol0an. Ra r0-/avan0- ovo! pro7l-ma korist- s- kont-0n-rsk- klas-. rilikom sm0-/tan0a o70-kata . kont-0n-r v-li"ina kont-0n-ra n- mora 7iti .napri0-d d-finirana. Tim- s- proi3vol0no v-liki 7ro0 o70-kata mo6- sm0-stiti . kont-0n-r. &snovni tipovi kont-0n-rskiC klasa s. List, 1-t, 2ap i d.-.-. 1 o73irom da 0- t-matika v-3ana .3 kont-0n-r- prili"no ops-6na, ovd0- - s- dati samo kratk- napom-n- v-3an- .3 kori/t-n0- kont-0n-ra. 1v- kont-0n-rsk- klas- nala3- s- . standardnom Java *I:0.9 pak-t. 0ava..til. )a po"-tk. klas- . ko0o0 s- koristi 7ilo kakva kont-0n-rska klasa morat - s- .kl0."iti nav-d-ni pak-t 9 import java,util,*% : =% : 0#)#"# ja!a#,til#Ve+tor rim0-r9 import java,util,Tector% public class 5uto { String tip% public 5uto(String tip) { tDis,tip # tip% } void ispisi*ip(){ S+stem,out,println(-*ip je -4tip)% } public static void main(String[] args) { 5uto auto( # ne) 5uto(-Word-)% 5uto auto/ # ne) 5uto(-3issan-)% 5uto auto@ # null%
Tector v # ne) Tector()% v,addVlement(auto()% v,addVlement(auto/)% v,addVlement(auto@)%
S+stem,out,println(v,si&e())% 5uto a # (5uto)v,element5t(()% a,ispisi*ip()% } } Da 7ismo koristili kont-0n-rsk. klas. V-ctor 3a sm0-/tan0- o70-kata, prvo tr-7a kr-irati o70-kt tipa V-ctor9 Tector v # ne) Tector()% V-li"ina s- mo6- i n- mora inici0ali3irati. U v s- doda0. r-f-r-nc- a.to%, a.to#, a.to4 ko0- s- odnos- na o70-kt- klas- *.to. Dodavan0- s- mo6- i3vr/iti m-todom addEl-m-nt8> klas- V-ctor9 v,addVlement(auto()% rilikom to! dodavan0a, r-f-r-nca tipa *.to 8a.to%> konv-rtira s- . vi/i tip 80a: va.lan!.&70-ct>. %%
Dodavan0- -l-m-nata . kont-0n-r V-ctor id- po r-d., s tim- da n-k- m-tod- omo: !..0. dodavan0- -l-m-nata na to"no odr-5-no m0-sto. El-m-nti . kont-0n-r. %% 1vo5-n0- na vi/- 0- karakt-ristika v-3ana .3 konc-pt nasl0-5ivan0a. Vi/- o tom- . po!lavl0. o nasl0-5ivan0.. : =# : ra".na0. s- od $:t- po3ici0-. V-li"in. kont-0n-ra mo6-mo odr-diti m-todom si3-8>9 v,si&e()% Ind-ksi -l-m-nata ko0i o3na"ava0. po3ici0. id. od $ do v.si3-8>:%. U V-ctor mo6-mo dodati o70-kt 7ilo ko0-! tipa. )-ma nikakv- prov0-r-. 2-5.tim, pr-por.ka 0- da s- doda0- samo 0-dan tip podataka, radi lak/-! "itan0a -l-m-nata i3 V-ctora. )ar-d7a9 v,element5t(()% vraa -l-m-nt na5-n na po3ici0i s ind-ksom %. '.d.i da s- prilikom sm0-/tan0a o70-kata 8r-f-r-nci> . V-ctor vr/ila konv-r3i0a na vi/i tip, . "itan0. o70-kata 8r-f-: r-nci> vraa s- na3ad ta0 vi/i tip pa moramo napraviti i3ri"it. konv-r3i0. o70-kta 8r-f-r-nc-> na i3vorni tip. I&ri7ita kon!er&ija ;t?%e +a'ting< radi s- sli"no kao i kod primitivniC tipova po: dataka9 5uto a # (5uto)v,element5t(()% (lasa . ko0. s- 6-li i3vr/iti konv-r3i0a pi/- s- . okr.!lim 3a!radama 8*.to>. (lasa V-ctor s- . novi0im v-r3i0ama Jav- man0- koristi. (od i3rad- pro!rama kori: /t-n0- klas- V-ctor mo6- s- kompl-tno 3ami0-niti novi0om klasom *rraDList. /ada+i. +0 1reira/te klas' D'to kao ' navedeno% &ri%/er'0 1o%&ilira/te i &okrenite &rogra%0 Pro%otrite is&is0 -z%ite i ostale ele%ente stavl/ene ' konte/ner klase Vector te &ozo! vite %etod' is&isiTi&240 Pro%otrite /avl/a li se ko/a gre5ka i za5to0 )0 1reira/te klas' -lica s konstr'ktoro% ko/e% se &rosl/e<'/e ,tring naziv0 - klasi doda/te %etod' is&isiNaziv24 ko/a radi is&is naziva 'lice0 - glavno/ %etodi kreira/te nekoliko o3/ekata klase -lica i re#erence doda/te ' konte/ner klase Vector0 ,vak' od re#erenci izv'cite iz konte/nera i za svak' &ozovite %etod' is&isiNaziv240 : =4 : 0#)#)# ja!a#,til#Arra?Li't (lasom *rraDList radi s- sli"no kao i klasom V-ctor. 1v- nav-d-no . pr-tCodnom po!lavl0. vri0-di i 3a klas. *rraDList. rim0-r9 import java,util,5rra+Gist% public class 5uto { String tip% public 5uto(String tip) { tDis,tip # tip% } void ispisi*ip(){ S+stem,out,println(-*ip je -4tip)% } public static void main(String[] args) { 5uto auto( # ne) 5uto(-Word-)% 5uto auto/ # ne) 5uto(-3issan-)% 5uto auto@ # null%
5rra+Gist a # ne) 5rra+Gist()% a,add(auto()% a,add(auto/)% a,add(auto@)%
S+stem,out,println(a,si&e())% 5uto auto # (5uto) a,get(()% auto,ispisi*ip()% } } Da 7i s- r-f-r-nc- na o70-kt- sm0-stil- . kont-0n-r *rraDList, prvo s- kr-ira o70-kt klas- *rraDList9 5rra+Gist a # ne) 5rra+Gist()% 2-todom add8> doda0. s- -l-m-nti . kont-0n-r9 a,add(auto()% I . klasi V-ctor i . klasi *rraDList radimo i3ri"it. konv-r3i0. 8tDp- castin!> poda: taka pri .3iman0. -l-m-nata i3 kont-0n-ra9 5uto auto # (5uto) a,get(()% : =@ : I3ri"it. konv-r3i0. mo6-mo i370-i tako da . kont-0n-r spr-mamo samo 0-dan tip podataka. Ukoliko 6-limo na!lasiti da -mo . kont-0n-r spr-mati samo 0-dan tip podataka, onda pi/-mo9 5rra+Gist Y5utoZ a # ne) 5rra+Gist Y5utoZ()% U tom 0- sl."a0. v- .napri0-d on-mo!.-no spr-man0- o70-kta 8r-f-r-nc-> n-k- dr.!- klas- . ta0 kont-0n-r. Tipovi d-finirani na ta0 na"in na3iva0. s- generi7ki ti%o!i. U sl."a0. .3iman0a r-f-r-nci na o70-kt- i3 kont-0n-ra, pi/-mo9 5uto auto # a,get(()% /ada+i. +0 - klasi D'to doda/te konte/ner Drra"List kao ' navedeno% &ri%/er'0 1o%&ilira/te i &okrenite &rogra%0 Pro%otrite is&is0 )0 - klasi D'to kreira/te generiki konte/ner '%/esto o3inog te &rov/erite tre3a li se na&raviti izriita konverzi/a 2t"&e casting4 kod 'zi%an/a re#erenci iz konte/nera0 60 - klasi -lica 2zadatak ' &oglavl/' /ava0'til0Vector4 za%i/enite dodavan/e ' konte/! ner Vector dodavan/e% ' konte/ner Drra"List0 ,vak' od re#erenci izv'cite iz konte/! nera i za svak' &ozovite %etod' is&isiNaziv240 Testira/te i generiki konte/ner0 0#)#*# ja!a#,til#Ha'hSet +asC1-t 0- kont-0n-r 3a spr-man0- o70-kata ko0i n- dop./ta dvostr.ki .nos. Uko: liko s- 6-l- spr-miti dvostr.ki podaci, to s- n-- moi napraviti. U sl."a0. .nosa n.ll vri0-dnosti, dop.stit - s- samo 0-dan .nos. (arakt-ristika klas- +asC1-t ta: ko5-r 0- da s- podaci .n.tra sm0-/ta0. kao . sk.p, /to 3na"i da por-dak -l-m-: nata ni0- 7itan. rim0-r9 import java,util,=asDSet% public class 'ontakt { String ime8 pre&ime8 email% =asDSet broj*el # ne) =asDSet()% 'ontakt(String ime8 String pre&ime8 String email) { tDis,ime # ime% tDis,pre&ime # pre&ime% tDis,email # email% } void dodajCroj*el(String broj){ : == : S+stem,out,println(-7odan -4broj4- -4broj*el,add(broj))% } void ispisiCrojCrojeva(){ Object s [] # broj*el,to5rra+()% S+stem,out,println(s,lengtD)% } public static void main(String[] args) { 'ontakt k # ne) 'ontakt(-0ero-8--8 --)% k,dodajCroj*el(->;F (((///-)% k,dodajCroj*el(->;( @<F@<F-)% k,dodajCroj*el(->;F (((///-)% k,ispisiCrojCrojeva()% } } Unos -l-m-nata . +asC1-t kont-0n-r dan 0- m-todom add8>9 broj*el,add(broj)%
2-toda add8> vraa vri0-dnost tr.- ili fals-, ovisno o tom- 0- li .sp0-/no naprav: l0-n .nos ili ni0-. U prim0-r. 0- postavl0-n ispis9 1Dst-m.o.t.println8EDodan EW7ro0WE EW7ro0T-l.add87ro0>>I kako 7i s- 3a svaki prosli0-5-ni 7ro0 mo!la ispisati vri0-dnost tr.- ili fals-, ovisno o tom- 0- li -l-m-nt dodan . kont-0n-r ili n-. U prim0-r. klas- (ontakt prosli0-5-n- s. tri vri0-dnosti tipa 1trin! kont-0n-r. +asC1-t. 2-5.tim, 7it - dodana samo dva -l-m-nta . kont-0n-r. Tr-a vri0-d: nost 0- id-nti"na prvo0 pa s- n-- dodati . kont-0n-r. El-m-nti i3 kont-0n-ra +asC1-t n- mo!. s- dir-ktno i3v.i, kao /to 0- to 7io sl.: "a0 s kont-0n-rima V-ctor i *rraDList, n-!o s- korist- dr.!i na"ini. J-dan od n0iC 0- po3iv m-tod- to*rraD8> ko0a -l-m-nt- i3 kont-0n-ra spr-ma . ni3 o70-kata klas- &70-ct9 Object s [] # broj*el,to5rra+()% I3 nav-d-no! ni3a mo!. s- i3v.i podaci tako da s- -l-m-nti ni3a konv-rtira0. na: 3ad . i3vorn. klas. i3ri"itom konv-r3i0om9 (String)s[>] &dnosno, .koliko 7ismo 6-l0-li napraviti ispis9 S+stem,out,println((String)s[>])% : =? : Dr.!i na"in 3a i3vla"-n0- -l-m-nata i3 kont-0n-ra +asC1-t 0- pr-ko m-tod- it-ra: tor8> ko0a -l-m-nt- spr-ma . o70-kt klas- It-rator9 .terator it # broj*el,iterator()% (lasa It-rator ima m-tod. n-Jt8> ko0a vraa tr-n.ta"ni o70-kt i po3icionira s- na sl0-d-i9 S+stem,out,println((String)it,neJt())% /ada+i. +0 1reira/te klas' 1ontakt kao ' navedeno% &ri%/er'0 1o%&ilira/te i &okrenite &ro! gra%0 ,&re%ite /o5 tri ele%enta ' Mash,et te &rov/erite /es' li s&re%l/eni0 1oliko na! kon toga i%a 'k'&no ele%enata ' konte/ner' Mash,etI )0 Na&ravite konverzi/' iz sk'&a Mash,et ' niz o3/ekata i ' o3/ekt klase Iterator0 Prist'&ite ele%enti%a iz /ednog i dr'gog sl'a/a te na&ravite is&ise0 60 - klasi D'to iz &rethodnih zadataka kreira/te konte/ner Mash,et i doda/te o3/ekte klase D'to0 Prov/erite dvostr'ke 'nose0 1onvertira/te Mash,et ' niz o3/ekata i za ele%ente &ozovite %etod' is&isiTi&240 1o/i% se redosli/edo% is&is'/' ele%entiI 0#)#-# ja!a#,til#Ha'h:a% (arakt-ristika kont-0n-ra +asC2ap 0- mapiran0- 0-dniC o70-kata s dr.!ima. U +asC2ap spr-ma0. s- po dvi0- vri0-dnosti od0-dnom9 kl0." i vri0-dnost. I kl0." i vri0-dnost s. o70-kti. Uparivan0-m kl0."a i vri0-dnosti omo!.-no 0- lak/- pr-tra: 6ivan0- i i3vla"-n0- vri0-dnosti na t-m-l0. po3navan0a informaci0a o kl0.".. rim0-r9 import java,util,=asDBap% public class 7r&ava { public static void main(String[] args) { =asDBap dr&ava # ne) =asDBap()% dr&ava,put(-@>-8 -9r"ka-)% dr&ava,put(-@(-8 -3i&o&emska-)% dr&ava,put(-@/-8 -Celgija-)% dr&ava,put(-@@-8 -Wrancuska-)% dr&ava,put(-@<-8 -:panjolska-)%
S+stem,out,println(dr&ava,get(-@@-))% : =< : } } U o70-kt klas- +asC2ap spr-ma0. s- dva o70-kta 8k-D, val.->9 dr&ava,put(-@>-8 -9r"ka-)% (l0." 0- E4$E, a vri0-dnost 0- E,r"kaE. rilikom tra6-n0a vri0-dnosti 3a kl0." E4$E9 dr&ava,get(-@>-)% vratit - s- vri0-dnost E,r"kaE. U klasi +asC2ap m-toda contains(-D8> prov0-rava posto0an0- po0-dino! kl0."a9 dr&ava,contains'e+(-@>-)% a m-toda containsVal.-8> prov0-rava posto0an0- po0-diniC vri0-dnosti9 dr&ava,containsTalue(-=rvatska-)% &70- m-tod- vraa0. tr.- ili fals- vri0-dnosti. 2-tod- k-D1-t8> i val.-s8> spr-ma0. kl0."-v- i vri0-dnosti odvo0-no . sk.p i kol-k: ci0.9 Set s # dr&ava,ke+Set()% Rollection c # dr&ava,values()% /ada+i. +0 1reira/te klas' Drzava kao ' navedeno% &ri%/er'0 1o%&ilira/te i &okrenite &ro! gra%0 Testira/te get24 %etod' za nekoliko kl/'eva te %etode contains1e"24 i contain! sVal'e240 )0 - klasi Drzava na&ravite konverzi/' kl/'eva ' o3/ekt klase ,et i &rov/erite ko/e se %etode %og' &ozvati iz klase ,et0 Pozovite neke od %etoda i na&ravite is&is0 60 - klasi Drzava na&ravite konverzi/' vri/ednosti ' o3/ekt klase $ollection i &rov/eri! te ko/e se %etode %og' &ozvati iz klase $ollection0 Pozovite neke od %etoda i na&ra! vite is&is0 : =A : 2# Kontrola %rogra('kog tijeka 2#"# $!jeti (od i3vr/avan0a pro!rama pon-kad - 7iti potr-7no .sm0-riti ti0-k i3vr/avan0a pro!rama . n-kom sm0-r. ili vi/- p.ta ponoviti n-k. nar-d7.. U tim sit.aci0ama ti0-k pro!rama s- prila!o5ava pos-7no postavl0-nim .v0-tima. ostavl0-ni .v0-ti mo!. i n- mora0. 7iti 3adovol0-ni. Uv0-ti s. dani lo!i"kim t-stovima, odnosno r-3.ltat i3vr/avan0a .v0-ta 0- true ili false. Uv0-ti s- .vi0-k stavl0a0. . okr.!l- 3a!rad-. rim0-r9 88a_7> [[ 8a_c>> P r-3.ltat 0- istinit 8tr.-> .koliko 0- a man0i od 7 ili c 8a`F7> P r-3.ltat 0- istinit 8tr.-> .koliko 0- a ra3li"it od 7 2#)# Grananja Naredba i@5el'e )ar-d7om i@5el'e pro!ramski s- ti0-k mo6- !ranati . vi/- di0-lova. &p-niti o7lik i@5el'e !ranan0a 0- sl0-d-i9 iE (uvjet) { // naredbe } else iE (uvjet/) { // naredbe } else { // naredbe } &vo !ranan0- mo6- 7iti . skra-nom o7lik. 8samo if>, malo d.6-m 8samo if:-ls-> ili s vi/- -ls- if di0-lova. rim0-r9 int a#?% i2 ((a[/) ## >) { S+stem,out,println(a4- je djeljiv sa /-)% } U prim0-r. 0- dana prov0-ra 8aX#>FF$, odnosno aX# vraa ostatak di0-l0-n0a sa #. &statak s- .spor-5.0- sa $, odnosno .koliko n-ma ostatka, .v0-t 0- istinit 8tr.-> pa s- i3vr/ava0. nar-d7- dan- . 7lok. LM. Ispis.0- s-9 E0- d0-l0iv sa #E. : =B : Ukoliko .v0-t ni0- 3adovol0-n 8fals->, n- .la3i s- . i3vr/avan0- 7loka nar-d7i. rim0-r9 public class 5rtikl { String siEra% String na&iv% double cijena% double popust% public 5rtikl(String siEra8 String na&iv8 double cijena8 double popust) { tDis,siEra # siEra% tDis,na&iv # na&iv% tDis,cijena # cijena% tDis,popust # popust% } void ispisiRijenu(){ double ukupnaRijena # cijenaMcijena*popust/(>>% i2 (popust Z >){ S+stem,out,println(-0opust od -4popust4-[, -4 -Qkupna cijena je -4ukupnaRijena4- kn-)% } else { S+stem,out,println(-Rijena je -4ukupnaRijena4 - kn-)% } } public static void main(String[] args) { 5rtikl artikl # ne) 5rtikl(-'(/M?S-8-\,'aput-8(/F>,>>8F)% artikl,ispisiRijenu()% } } U prim0-r. 0- if:-ls- !ranan0- dano . m-todi ispisiCi0-n.8>. rov0-rava s- ako 0- pop.st v-i od $. Ukoliko 0-, .v0-t 0- istinit i i3vr/ava s- prvi 7lok nar-d7i9 S+stem,out,println(-0opust od -4popust4-[, -4 -Qkupna cijena je -4ukupnaRijena4- kn-)% Ukoliko .v0-t ni0- istinit, id- s- na -ls- 7lok nar-d7i t- s- i3vr/ava9 S+stem,out,println(-Rijena je -4ukupnaRijena4- kn-)% rim0-r9 public class 0lakat { double dijagonala%
public void postavi7imen&ije(int J8 int +){ : ?$ : dijagonala # BatD,sHrt(J*J 4+*+)% } public static void main(String[] args) { 0lakat plakat # ne) 0lakat()% plakat,postavi7imen&ije(F>8(>>)% i2 (plakat,dijagonala Y# $>) S+stem,out,println(-Bali plakat-)% else i2 ((plakat,dijagonala Z $>) ]] (plakat,dijagonalaY#/>>)) S+stem,out,println(-0lakat srednjiD dimen&ija-)% else i2 ((plakat,dijagonalaZ/>>) ]] (plakat,dijagonalaY#F>>)) S+stem,out,println(-Teliki plakat-)% else i2 (plakat,dijagonalaZF>>) S+stem,out,println(-Ogroman plakat-)% else S+stem,out,println(-Ovo se nikad ne!e ispisatiX-)% } } U ovom s- prim0-r. m-todom postaviDim-n3i0-8> postavl0a dim-n3i0a plakata i 3a: 0-dno i3ra".nava di0a!onala. (ro3 i@ 5 el'e i@ 5 el'e !ranan0- prov0-rava s- 0- li di: 0a!onala .n.tar odr-5-niC !ranica. Uvi0-k tr-7a voditi ra".na o !rani"nim vri0-dnostima. i2 (plakat,dijagonala 6 $>) S+stem,out,println(-Bali plakat-) else i2 ((plakat,dijagonala 7 $>) ]] (plakat,dijagonalaY#/>>)) S+stem,out,println(-0lakat srednjiD dimen&ija-)% &va0 kod nai3!l-d i3!l-da isto kao i !orn0i prim0-r. 2-5.tim, mo6- s- do!oditi da 0-9 plakat.di0a!onalaFA$ i tada niti 0-dan od .v0-ta n- 7i 7io 3adovol0-n t- 7i s- i3vr/il- nar-d7- . 3avr/: nom -ls- 7lok.. R-alno s- . !orn0-m prim0-r. nikada n- 7i tr-7ao do!oditi ispis i3 3avr/no! -ls- 7loka. Tako5-r, .koliko .n.tar 7loka nar-d7i o7.Cva-niC LM 3a!radama posto0i samo 0-dna nar-d7a ko0a s- tr-7a i3vr/iti, onda s- 3a!rad- LM ko0- o3na"ava0. ta0 7lok nar-d7i n- tr-7a0. stavl0ati. U danom s. prim0-r. i3 to! ra3lo!a i370-!n.t- LM 3a: !rad-. )ar-d7a 2atC.scrt8JNJ WDND> odnosi s- na op-raci0. kor0-novan0a. (lasa 2atC i3 Javina pak-ta 0ava.lan! sadr6i m-tod- 3a i3ra".navan0- slo6-ni0iC mat-mati"kiC op-raci0a. : ?% : /ada+i. +0 1reira/te klas' Drtikl kao ' navedeno% &ri%/er'0 1o%&ilira/te i &okrenite &ro! gra%0 1reira/te /o5 nekoliko o3/ekata klase Drtikl i za n/ih &ozovite %etod' is&isi$i/e! n'240 )0 - klasi Drtikl kreira/te %etod' &rov/eri$i/en'24 ko/o/ se &rosl/e<'/e vri/ednost 'k'&na$i/ena0 -koliko /e 'k'&na$i/ena %an/a od @**( is&i5ite 9Povol/na ci/ena9( 'koliko /e %an/a od +)**( is&i5ite 9Prihvatl/iva ci/ena9( 'koliko /e vea od +)**( is&i! 5ite 9Presk'&o90 .etod' &ozovite iz %etode is&isi$i/en'240 60 - klasi Drtikl &ostavite statik' vari/a3l' 'k'&na$i/enaDrtikala ti&a do'3le0 Na! veden' vari/a3l' 'vea/te za vri/ednost 'k'&na$i/ena kod svakog &oziva %etode is! &isi$i/en'240 - glavno/ %etodi na&ravite is&is vri/ednosti vari/a3le 'k'&na$i/enaDrti! kala0 80 1reira/te klas' Plakat kao ' &ri%/er'0 1o%&ilira/te i &okrenite &rogra%0 1od &ozi! va %etode &ostaviDi%enzi/e24 &rosli/edite razliite vri/ednosti i &rov/erite is&ise0 @0 - klasi Plakat izdvo/ite is&itivan/e 'v/eta 2i#!else4 ' zase3n' %etod' is&ita/Di%en! zi/e240 - glavno/ %etodi kreira/te /o5 nekoliko o3/ekata klase Plakat i za n/ih &ozovite %etode &ostaviDi%enzi/e24 i is&ita/Di%enzi/e240 Naredba '8it+h )ar-d7a sKitcC . n-kim s- sit.aci0ama mo6- koristiti .m0-sto nar-d7- if:-ls-. &p-nit o7lik nar-d7- 0- sl0-d-i9 s)itcD (i&ra&) { case const(A // naredbe break% case const/A // naredbe break% deEaultA // naredbe } rim0-r9 public class .grica { public static void main(String[] args) { int &#(% : ?# : s)itcD (&){ case (A S+stem,out,println(-0o"ni novu igru-)% break% case /A S+stem,out,println(-0au&iraj-)% break% case @A S+stem,out,println(-3astavi-)% break% case <A S+stem,out,println(-Kavri-)% break% case FA S+stem,out,println(-0omo!-)% break% } } } )ar-d7a sKitcC prov0-rava dani i3ra3 t- !a .spor-5.0- s konstantama danima . cas- di0-l.. )ar-d7a 7r-ak 0- o7av-3na .koliko s- 6-li pr-kin.ti i3vo5-n0- nar-d7i .n.tar sKitcC 7loka.
/ada+i. +0 1reira/te klas' Igrica kao ' navedeno% &ri%/er'0 1o%&ilira/te i &okrenite &ro! gra%0 Prov/erite rez'ltat0 Iz%i/enite tako da %aknete 3reak nared3e i &ro%otrite re! z'ltat0 2#*# etlje )ar-d7- ko0- s- i3vod- vi/- p.ta stavl0a0. s- . p-tl0-. )ar-d7- s- ponavl0a0. sv- dok 0- odr-5-ni .v0-t 3adovol0-n 8tr.->, a . protivnom s- pr-kida r-p-titivno i3vo: 5-n0- nar-d7i i nastavl0a s i3vo5-n0-m ostatka pro!rama. &snovn- p-tl0- s. 8hi5 le, do58hile i @or. etlja 8hile &snovni o7lik ov- p-tl0- 0- sl0-d-i9 )Dile (uvjet) { // naredbe } )ar-d7- .n.tar 7loka i3vr/ava0. s- sv- dok 0- .v0-t 3adovol0-n. (ad 0- .v0-t fals-, pr-ska". s- nar-d7- . 7lok. i nastavl0a s- s i3vr/avan0-m ostalo! koda. etlja do58hile &snovni o7lik ov- p-tl0- 0- sl0-d-i9 do { // naredbe } )Dile (uvjet)% : ?4 : &va p-tl0a radi kao i KCil- p-tl0a. Ra3lika 0- . tom- /to s- . KCil- p-tl0i prvo pro: v0-rava 0- li 3adovol0-n .v0-t. Ukoliko 0-, t-k s- onda kr-n- s i3vr/avan0-m 7loka nar-d7i. U do:KCil- p-tl0i prvo s- i3v-d. nar-d7- . 7lok., a t-k s- onda prov0-ra: va 0-s. li .v0-ti 3adovol0-ni. &vd0- - s- nar-d7- si!.rno i3v-sti 7ar-m 0-danp.t. etlja @or &snovni o7lik ov- p-tl0- 0- sl0-d-i9 Eor (inicijali&acija% uvjet% korak){ // naredbe } Inici0ali3aci0a mo6- .kl0."ivati i d-klaraci0.9 int 7ro0acF$. Uv0-t s- kontrolira pri svakom prola3. kro3 p-tl0.. (orak s- i3vr/ava posli0- svako! cikl.sa. rim0-r9 public class Ginija { String brojGinije% String relacijaOd% String relacija7o% public Ginija(String brojGinije8 String relacijaOd8 String relacija7o) { tDis,brojGinije # brojGinije% tDis,relacijaOd # relacijaOd% tDis,relacija7o # relacija7o% } public static void main(String[] args) { Ginija linije [] # ne) Ginija [F]% linije [>] # ne) Ginija(-(-8-Civio-8-0e!ine-)% linije [(] # ne) Ginija(-/-8-Srdo"i-8-*rsat-)% linije [/] # ne) Ginija(-?-8-'rnjevo-8-0odveica-)% linije [@] # ne) Ginija(-S-8-0eDlin-8-9ornja Teica-)% linije [<] # ne) Ginija(-($-8-Iijeka-8-'astav-)% 2or (int i"#; i6lini!e8lengt.; i99){ S+stem,out,println(-Croj linijeA -4 linije [i],brojGinije())% S+stem,out,println(-0ola&ite -4 linije [i],pola&iste())% S+stem,out,println(-Odredite -4 linije [i],odrediste())% S+stem,out,println(-MMMMMMMMMMMMMMMMMMMMM-)% } } } : ?@ : U prim0-r. 0- dana klasa Lini0a. U !lavno0 m-todi klas- Lini0a kr-iran 0- ni3 o70-: kata klas- Lini0a t- 0- for p-tl0om napravl0-n ispis sviC podataka sadr6aniC . o70-ktima klas- Lini0a. Isti ispis KCil- p-tl0om i3!l-dao 7i otprilik- ovako9 int i " #; w.ile (i6lini!e8lengt.){ S+stem,out,println(-Croj linijeA -4 linije [i],brojGinije())% S+stem,out,println(-0ola&ite -4 linije [i],pola&iste())% S+stem,out,println(-Odredite -4 linije [i],odrediste())% S+stem,out,println(-MMMMMMMMMMMMMMMMMMMMM-)% i99; } -tl0a 0- vrlo sli"na for p-tl0i s o73irom da ima inici0ali3aci0. 7ro0a"a, .v0-t i korak 8.v-avan0- 7ro0a"a 3a %>. Ukoliko s- .v-avan0- 7ro0a"a 3a7oravi staviti, p-tl0a s- mo6- i3vr/avati 7-sko: na"no d.!o. Tako5-r tr-7a pa3iti na po3ici0. nar-d7- .v-avan0a 7ro0a"a 8na po: "-tk. ili na kra0.> 0-r o tom- ovisi Co- li s- napraviti svi ispisi i Co- li s- n-!d0- potkrasti !r-/ka prist.pa i3van !ranica ni3a. Isti ispis dan do58hile p-tl0om9 int i " #; do { S+stem,out,println(-Croj linijeA -4 linije [i],brojGinije())% S+stem,out,println(-0ola&ite -4 linije [i],pola&iste())% S+stem,out,println(-Odredite -4 linije [i],odrediste())% S+stem,out,println(-MMMMMMMMMMMMMMMMMMMMM-)% i99; }w.ile (i6lini!e8lengt.);
/ada+i. +0 1reira/te klas' Lini/a kao ' navedeno% &ri%/er'0 1o%&ilira/te i &okrenite &ro! gra%0 Prov/erite is&ise dane razliiti% &etl/a%a0 Nto se doga<a 'koliko se deklarira niz sa * ele%enataI - ko/o/ se &etl/i /avl/a gre5kaI )0 - glavno/ %etodi klase Lini/a kreira/te nekoliko o3/ekata i doda/te ih ' konte/ner Vector0 Is&ro3a/te sve &etl/e &riliko% is&isa iz konte/nera0 : ?= : 3# I&ni(ke i h!atanje i&ni(ki I3nimk- 8-Jc-ptions> . Javi .o7i"a0-ni s. na"in .po3oravan0a na lo!i"k- po!r-/k- . kod.. (ad s- do!odi n-ka od i3nimaka, ona s- spr-ma . novi o70-kt i3nimk- t- s- pr-la3i na o7rad. t- i3nimk- 8-Jc-ption Candl-r>. rim0-r9 int a [] # {M(8/8M@8F8>8;8M(S}% int b # (>>% Eor (int i#>% iYa,lengtD% i44){ int re& # b/a[i]% S+stem,out,println(b4-/-4a[i]4- # -4re&)% } U prim0-r. posto0i di0-l0-n0- s n.lom t- s- . n-kom tr-n.tk. odvi0a nar-d7a9 %$$;$. 1 o73irom da s- do!a5a !r-/ka kod di0-l0-n0a s n.lom, ta !r-/ka nas i37a: c.0- i3 pro!rama i 0avl0a9 31ception in t.read &main& !ava8lang8'rit.metic31ception: ; b/ $ero U dr.!om prim0-r.9 int a [] # {M(8/8M@8F8(8;8M(S}% int b # (>>% int l # a,lengtD% int re& # b/a[l]% S+stem,out,println(b4-/-4a[l]4- # -4re&)%
vari0a7la l poprima vri0-dnost <. o pravilima ni3a, ind-ksi id. od $ do ?. Ukoliko 6-limo prist.piti -l-m-nt. i3van 3adaniC !ranica, 0avl0a s- !r-/ka. int re& # b/a[l]% aGlH 0- 3apravo aG<H, dok 0- 3adn0i -l-m-nt ni3a aG?H. I3vr/avan0-m ovo! di0-la koda 0avl0a s- !r-/ka9 31ception in t.read &main& !ava8lang8'rra/0nde1%ut%2ounds31ception: < : ?? : rim0-r9 public class 'njiga { String na&iv% public 'njiga(String na&iv) { tDis,na&iv # na&iv% } void ispis'njige(){ S+stem,out,println(-'njiga je -4na&iv)% } public static void main(String[] args) { 'njiga k/ # null% k/,ispis'njige()% } } U !lavno0 m-todi n- kr-iramo o70-kt klas- (n0i!a, n-!o samo d-klariramo r-f-: r-nc. na o70-kt ko0o0 0- dodi0-l0-na n.ll vri0-dnost. 1 o73irom da o70-kt n- posto: 0i, n- mo6- s- prist.piti m-todi ispis(n0i!-8>, a ako s- pok./a, 0avl0a s- !r-/ka9 31ception in t.read &main& !ava8lang84ull5ointer31ception U pr-tCodna tri prim0-ra dan- s. samo n-k- mo!.- !r-/k- ko0- s- mo!. 0aviti kao posl0-dica n-kiC n-pr-dvi5-niC okolnosti . rad. pro!rama. Ukoliko 3namo da posto0i mo!.nost da s- i3nimka do!odi, mo6-mo odl."iti od: 7aciti t. i3nimk. i normalno nastaviti s radom pro!rama ili pod.3-ti odr-5-n- akci0- 3a Cvatan0- i o7rad. tiC i3nimki. +vatan0- i3nimki provodi s- . pos-7no o3na"-nom di0-l. koda ko0i promatramo i 3a ko0i s.mn0amo da 7i mo!ao pro.3ro"iti !r-/k.. (od o3na"avamo 7lokom trD LM. Ukoliko s- .n.tar promatrano! koda do!odi !r-/ka 8i3nimka>, onda s- i3vr/ava: n0- koda pr-7acilo na dio o3na"-n s catcC8>LM. trD L ;; nar-d7- . ko0ima s- mo6- do!oditi i3nimka M catcC 8TipI3nimk-% i3nimka>L ;; nar-d7- 3a o7rad. to! tipa i3nimk- M catcC 8TipI3nimk-# i3nimka>L ;; nar-d7- 3a o7rad. to! tipa i3nimk- M finallD L ;; nar-d7- 3avr/avan0a M : ?< : U prvom prim0-r., .koliko 7ismo Ct0-li .Cvatiti i3nimk. i spri0-"iti nasilno i3la6-: n0- i3 pro!rama, dodali 7ismo trD:catcC 7lokov-9
tr+ { int a [] # {M(8/8M@8F8>8;8M(S}% int b # (>>% Eor (int i#>% iYa,lengtD% i44){ int re& # b/a[i]% S+stem,out,println(b4-/-4a[i]4- # -4re&)% } } catcD (5ritDmeticVJception e) { S+stem,out,println(-Opre&^ 7ijeljenje s nulom^-)% } Ukoliko 3namo da - s- do!oditi i3nimka ko0a s- o7ra5.0- tipom *ritCm-ti: cEJc-ption, onda mo6-mo pisati n0-3in na3iv, a ako nismo si!.rni ko0a - s- i3: nimka do!oditi ili 6-limo .Cvatiti vi/- i3nimaka od0-dnom, onda mo6-mo pisati i op-niti tip EJc-ption. Informaci0- o i3nimci ko0a s- do!odila nala3- s- . pripad: nom o70-kt. -, pa t- informaci0- mo6-mo iskoristiti 3a ispis i3nimk- na standard: nom i3la3. . lo! datot-k. ili n-!d0- dr.!d0-. U dr.!om prim0-r.9 tr+ { int a [] # {M(8/8M@8F8(8;8M(S}% int b # (>>% int l # a,lengtD% int re& # b/a[l]% S+stem,out,println(b4-/-4a[l]4- # -4re&)% } catcD (5rra+.ndeJOutOECoundsVJception e){ // pristup "lanu ni&a van danog opsega } catcD (VJception e){ // op!enita i&nimka } .koliko s- do!odi i3nimka *rraDInd-J&.t&f'o.ndsEJc-ption, onda s- ona o7ra: 5.0- . prvom catcC 7lok.. Ukoliko s- do!odi 7ilo ko0a dr.!a i3nimka, ona s- o7ra5.0- . dr.!om catcC 7lok.. 'itno 0- napom-n.ti sl0-d--9 . tr-n.tk. kada s- i3nimka do!odi, id- s- na o7ra: d. t- i3nimk- i na tom s- m0-st. i3la3i i3 trD 7loka. I3 to! s- ra3lo!a n-- moi i3: vr/iti sv- nar-d7- . trD 7lok.. U3 trD i catcC 7lokov-, mo6- s- d-finirati i 7lok finallD. &n s- i3vr/ava nakon /to s- i3vr/- trD i catcC t- sl.6i 3a dovr/avan0- radn0i ko0- s- nis. sti!l- i3vr/iti .n.: tar trD 7loka 0-r s- do!odila i3nimka. : ?A : /ada+i. +0 1reira/te klas' :ro/ i ' glavn' %etod' '3acite &rva dva &ri%/era iz &oglavl/a0 1o%&ilira/te i &okrenite &rogra%0 Prov/erite is&ise0 Doda/te tr"!catch 3lokove i &ono! vo &rov/erite is&ise0 Izvr5ava li se kod ' tr" 3lok' do kra/aI )0 1reira/te klas' 1n/iga kao ' navedeno% &ri%/er'0 1o%&ilira/te i &okrenite &ro! gra%0 Prov/erite is&is0 1reira/te tr"!catch 3lok za o3rad' navedene izni%ke0 60 - klasi 1n/iga kreira/te nekoliko o3/ekata i za n/ih &ozovite %etod' is&is1n/ige240 : ?B : 6# :odi@ikatori %ri't,%a 2odifikatori prist.pa r0-/ava0. pitan0- privatnosti ili dost.pnosti po0-diniC vari0a: 7li, m-toda i klasa. 2odifikatori prist.pa s. sl0-d-i9 p.7lic prot-ct-d 87-3> privat-. 2odifikator prist.pa %,bli+ o3na"ava 0avn. dost.pnost n-k- vari0a7l-, m-tod- ili klas-. To 3na"i da - s- . 7ilo ko0-m tr-n.tk. i3 7ilo ko0- dr.!- klas- moi pris: t.piti nav-d-nim vari0a7lama, m-todama ili klasama. 2odifikator prist.pa %rote+ted o3na"ava 3a/tit. od 0avno! prist.pa. )av-d-nim klasama, m-todama i vari0a7lama moi - s- prist.piti samo i3 klasa ko0- pripa: da0. istom pak-t. ili potklasa ko0- iC nasl0-5.0.. Ukoliko s- n- stavi nikakav modifikator, podra3.mi0-vano stan0- 0- prist.p klasa: ma, m-todama i vari0a7lama iskl0."ivo i3 klasa .n.tar isto! pak-ta. 2odifikator prist.pa %ri!ate o3na"ava maksimaln. 3a/tit. vari0a7li i m-toda t- s- n0ima mo6- prist.piti iskl0."ivo i3 vlastit- klas-. Ukoliko 6-limo sakriti int-rno stan0- o70-kta, .o7i"a0-no -mo koristiti na00a". 3a/tit. ko0. mo6-mo imati, a da s- svo0stva nav-d-n- klas- ipak mo!. koristiti. 6#"# Setteri i getteri Ukoliko 3a/titimo vari0a7l- o70-kta od n-dop./t-no! prist.pa i dir-ktno! mi0-n0a: n0a, pon-kad -mo ipak imati potr-7. pro"itati ili promi0-niti nav-d-no stan0-. Ra to koristimo m-tod- ko0- postavl0a0. novo stan0- 8s-tt-ri>, odnosno m-tod- ko0- nam vraa0. podatak o posto0--m stan0. 8!-tt-ri>. rim0-r9 public class 0lanet { private String na&iv% private long promjer% private long udaljenost%
public 0lanet(String na&iv) { tDis,na&iv # na&iv% } public void set0romjer(long promjer){ tDis,promjer # promjer% } public void setQdaljenost(long udaljenost){ : <$ : tDis,udaljenost # udaljenost% } public String get3a&iv(){ return na&iv% } public long get0romjer(){ return promjer% } public long getQdaljenost(){ return udaljenost% }
public String toString(){ return getRlass(),get3ame()4-M-4na&iv4-M-% } } U klasi lan-t vari0a7l- s. 3a/ti-n- privatnim prist.pom tako da s- n- mo!. di: r-ktno mi0-n0ati kada im s- prist.pa i3 dr.!iC klasa. Vri0-dnost vari0a7l- na3iv mi0-n0a s- pr-ko konstr.ktora, a 3a .dal0-nost i prom0-r osi!.ran- s. s-t m-to: d-. Ukoliko s- tr-7a do7iti vri0-dnost vari0a7li na3iv, prom0-r i .dal0-nost, kr-ira0. s- !-t m-tod- ko0- vraa0. nav-d-n- vri0-dnosti. o3iv s-t m-tod- 3a o70-kt plan-t9 planet,setQdaljenost(//$)% o3iv !-t m-tod- 3a o70-kt plan-t9 long udaljenost # planet,getQdaljenost()% 1-t i !-t m-tod- "-sto s- po0avl0.0. . standardnim Javinim klasama. rim0-r klasa 0ava.aKt.Dim-nsion9 package java,a)t% import java,a)t,geom,7imension/7% public class 7imension eJtends 7imension/7 implements java,io,Seriali&able { public int )idtD% public int DeigDt% public 7imension() { tDis(>8 >)% } public 7imension(7imension d) { : <% : tDis(d,)idtD8 d,DeigDt)% } public 7imension(int )idtD8 int DeigDt) { tDis,)idtD # )idtD% tDis,DeigDt # DeigDt% } public double get_idtD() { return )idtD% } public double get=eigDt() { return DeigDt% } public void setSi&e(double )idtD8 double DeigDt) { tDis,)idtD # (int) BatD,ceil()idtD)% tDis,DeigDt # (int) BatD,ceil(DeigDt)% } public 7imension getSi&e() { return ne) 7imension()idtD8 DeigDt)% } public void setSi&e(7imension d) { setSi&e(d,)idtD8 d,DeigDt)% } public void setSi&e(int )idtD8 int DeigDt) { tDis,)idtD # )idtD% tDis,DeigDt # DeigDt% } // ,,, } /ada+i. +0 1reira/te klas' Planet kao ' navedeno% &ri%/er'0 Doda/te glavn' %etod' i kre! ira/te nekoliko o3/ekata klase Planet0 Pozovite set %etode0 - glavno/ %etodi &ozovite &ri&adne get %etode i osig'ra/te is&ise0 1o%&ilira/te i &okrenite &rogra%0 Pro%otrite is&is0 )0 1reira/te klas' ,'ncev,'stav i ' glavno/ %etodi te klase o3/ekte klase Planet0 Is! &ita/te %o7e li se &reko tih o3/ekata &rist'&iti vari/a3la%a o3/ekta0 Is&ita/te %o7e li se &rist'&iti get i set %etoda%a0
: <# : 9# Odno'i i&(e=, kla'a 1v- do ovo! po!lavl0a kr-iran- s. klas- sadr6aval- !lavn. m-tod.. U !lavno0 m-: todi kr-irani s. o70-kti t- ist- klas-, po3ivan- s. m-tod- i ispisivala s. s- svo0stva tiC o70-kata. U ovom - s- po!lavl0. prika3ati kompl-ksnost o70-ktno! prist.pa .pravo 3aCva: l0.0.i v-3ama i3m-5. ra3li"itiC klasa. T- v-3- mo!. 7iti la7avi0-, "vr/-, 0-dnostavni0- i kompl-ksni0-. &70-kti 0-dn- klas- mo!. aktivno s.d0-lovati . dr.!o0 klasi. Ukoliko 0- ta pov-3a: nost 0-dnostavni0a, o7i"no !ovorimo o asoci0aci0ama i a!r-!aci0ama i3m-5. klasa, a .koliko 0- "vr/a, onda !ovorimo o kompo3ici0i klasa. (r-n.t -mo 0-dnostavnim s.d0-lovan0-m o70-kata 0-dn- klas- . dr.!o0 klasi t- iC s vr-m-nom sv- vi/- v-3ivati. (od kr-iran0a aplikaci0a .o7i"a0-no 0- da 0-dna klasa sadr6i !lavn. m-tod. i da samo ta klasa 7.d- i3vr/na. &stal- klas- ko0- radimo n- mora0. sadr6avati !lav: n. m-tod.. U sl0-d--m prim0-r. dana 0- klasa Trok.t ko0a ni0- i3vr/na klasa. rim0-r9 public class *rokut { double a8 b8 c% public *rokut(double a8 double b8 double c) { tDis,a # a% tDis,b # b% tDis,c # c% } double opseg*rokuta(){ return a4b4c% } } Ukoliko 6-limo pokr-n.ti t. klas., 0avit - nam s- !r-/ka9 VJception in tDread -main- java,lang,3oRlass7eEWoundVrrorA *rokut &dnosno, n- posto0i !lavna 8main> m-toda 3a nav-d-n. klas.. Isto vri0-di i 3a klas. C-tv-rok.t9 public class Retverokut { double a8 b8 c8 d% public Retverokut(double a8double b8double c8double d) { tDis,a # a% tDis,b # b% : <4 : tDis,c # c% tDis,d # d% } double opsegRetverokuta(){ return a4b4c4d% } } &7i"no klas- nis. sam- s-7i dostatn-, n-!o s- kom7inira0. 3a0-dno s dr.!im kla: sama. U klasi Crtan0- posto0i samo !lavna m-toda . ko0o0 s- kr-ira0. dva o70-kta9 o70-kt t klas- Trok.t i o70-kt + klas- C-tv-rok.t. rim0-r9 public class Rrtanje { void crtaj(){ S+stem,out,println(-Rrtanje-)% } public static void main(String[] args) { *rokut t # ne) *rokut((8/8@)% Retverokut c # ne) Retverokut($8;8(>8(()%
S+stem,out,println(-Opseg trokuta je -4 t,opseg*rokuta())% S+stem,out,println(-Opseg "etverokuta je -4 c,opsegRetverokuta())% } } V- s- . rani0im po!lavl0ima napom-n.lo da svaki o70-kt ima svo0stva svo0- klas- i ".va svo0- vri0-dnosti. Ra o70-kt t vri0-d- svo0stva klas- Trok.t pa s- 3a n0-!a po3iva m-toda ops-!Tro: k.ta8>. Ra o70-kt + vri0-d- svo0stva klas- C-tv-rok.t pa s- 3a n0-!a po3iva m-toda ops-!: C-tv-rok.ta8>. (ada 7ismo Ct0-li po3vati m-tod. crta08> ko0a s- nala3i . klasi Crtan0-, to n- 7i : smo mo!li napraviti pr-ko o70-kata t i +. Ra po3iv m-tod- crta08> tr-7ali 7ismo kr-irati o70-kt klas- Crtan0- t- pr-ko n0-!a po3vati t. m-tod.. /ada+i. +0 1reira/te klase Trok't( $etverok't i $rtan/e kao ' navedeni% &ri%/eri%a0 1o%&ili! ra/te i &okrenite svak' klas' zase3no i &ro%otrite rez'ltat &okretan/a0 Oavl/a/' li se gre5ke kod &okretan/a klasa Trok't i $etverok'tI Pro%otrite is&is kod &okretan/a klase $rtan/e0 : <@ : )0 - klasi $rtan/e( &reko o3/ekata t i c( &ok'5a/te &rist'&iti %etodi crta/240 Pro%otrite gre5ke ko/e se /avl/a/'0 1reira/te o3/ekt klase $rtan/e i &ok'5a/te &reko tog o3/ekta &rist'&iti %etodi crta/240 60 1reira/te klas' 1n/iga ko/a i%a vari/a3le o3/ekta naziv i a'tor ti&a ,tring0 1reira/te konstr'ktor ko/e% se &rosl/e<'/' inici/alne vri/ednosti tih vari/a3li 2konstr'ktor s dva &ara%etra40 1reira/te %etod' is&isPodataka24 ko/a radi is&is naziva kn/ige i a'tora na standardno% izlaz'0 80 1reira/te izvr5n' klas' 1n/iznica i ' glavno/ %etodi kreira/te tri o3/ekta klase 1n/i! ga te za svaki od n/ih &ozovite %etod'0 Pro%otrite is&ise0 @0 - klasi 1n/iznica iz &rethodnog zadatka kreira/te konstr'ktor s &ara%etro% 3ro/! 1n/iga ti&a int te %etod' 3ro/1n/iga24 ko/a is&is'/e &odatak o 3ro/' kn/iga( inici/alno &rosli/e<en konstr'ktoro%0 1reira/te o3/ekt te klase ' glavno/ %etodi te &ozovite %e! tod' 3ro/1n/iga240 9#"# A'o+ija+ija *soci0aci0a 0- 0-dnostavna v-3a i3m-5. klasa. &7i"no s- koristi .koliko s. klas- pov-3an- na 7ilo ko0i na"in pr-ko o70-kata. &70-kt 0-dn- klas- /al0- por.k- o70-k: t. dr.!- klas-. Impl-m-ntaci0a asoci0aci0- dana 0- r-f-r-ncama na o70-kt ko0- s- nala3- kao lokaln- vari0a7l- . m-todama ili s- prosl0-5.0. kao param-tri m-toda. U prim0-r. 0- d-finirana klasa (li0-nt ko0a ima tri vari0a7l- o70-kta9 im-, pr-3im- i stan0-Rac.na. Vri0-dnosti 3a im- i pr-3im- s. prosli0-5-n- pr-ko konstr.ktora, a vri0-dnost 3a vari0a7l. stan0-Rac.na 0- prosli0-5-na pr-ko m-tod- novo1tan0-Ra: c.na8>. rim0-r9 public class 'lijent { String ime8 pre&ime% double stanjeIacuna%
} } U ovom sl."a0. nar-d7-9 S+stem,out,println(k(,ispisStanjaIacuna())% banka,provjeri'lijenta(k()% rad- sli"an ispis. %#
U !lavno0 m-todi 7itan 0- r-dosli0-d odvi0an0a po0-diniC nar-d7i. )ar-d7a9 banka,provjeri'lijenta(k()% n- mo6- ii pri0- kr-iran0a o70-kta k%9 'lijent k( # ne) 'lijent(-0ero-8-0eri!-)% 2-5.tim, ako stavimo9 banka,provjeri'lijenta(k()% k(,novoStanjeIacuna(F>@,/>)% ovim r-dosli0-dom, do7ivamo potp.no ra3li"it ispis. &vo samo 3na"i da s- . !lavno0 m-todi nar-d7- odvi0a0. po r-dosli0-d. pisan0a. rim0-r9 public class To&niIed { String brojGinije% String vrijeme0olaska% String vrijeme7olaska%
public To&niIed(String brojGinije8 String vrijeme0olaska8 String vrijeme7olaska) { %# 2-toda prov0-ri(li0-nta8> mo6- s- .potp.niti dodatnim .v0-tima ko0i mo!. ispi: tivati informaci0- i3 o70-kta tipa (li0-nt. : <A : tDis,brojGinije # brojGinije% tDis,vrijeme0olaska # vrijeme0olaska% tDis,vrijeme7olaska # vrijeme7olaska% } } public class 5utotrolej { public 5utotrolej() { } void ispisiTo&niIed(To&niIed vr){ S+stem,out,println(-Croj linijeA-4 vr,brojGinije4 - pola&ak u -4 vr,vrijeme0olaska4- dola&ak u -4 vr,vrijeme7olaska() )% } public static void main(String[] args) { 5utotrolej autotrolej # ne) 5utotrolej()% To&niIed vr( # ne) To&niIed(-(-8-(/A>>-8-(/A<F-)%
autotrolej,ispisiTo&niIed(vr()%
} } /ada+i. +0 1reira/te klase 1li/ent i :anka kao ' navedeno% &ri%/er'0 1o%&ilira/te i &okrenite &rogra% &a &ro%otrite rez'ltat0 )0 Iz%i/enite klas' 1li/ent tako da dodate %etod' &ostaviDozvol/eni.in's24 ko/a &os! tavl/a vri/ednost ' nov' vari/a3l' dozvol/eni.in's0 - %etodi &rov/eri1li/enta24 is&ita/! te /e li kli/ent ' dozvol/eno% %in's'( a ako ni/e( is&i5ite '&ozoren/e0 60 1reira/te klase VozniRed i D'totrole/ kao ' navedeno% &ri%/er'0 1o%&ilira/te i &o! krenite &rogra%0 Pro%otrite rez'ltat0 80 - glavno/ %etodi klase D'totrole/ kreira/te vi5e o3/ekata klase VozniRed i doda/te ih ' neki od konte/nera0 Preko #or &etl/e na&ravite is&is svih o3/ekata iz konte/nera i za n/ih &ozovite %etod' is&isiVozniRed240 @0 - klasi VozniRed vari/a3le o3/ekta za5titite &rivatni% &rist'&o% te kreira/te &ri! &adne get %etode0 - sklad' s ti%e iz%i/enite i klas' D'totrole/( ko%&ilira/te i &okre! nite &rogra%0 : <B : 9#)# Agrega+ija i ko(%o&i+ija *!r-!aci0a i kompo3ici0a s. 0ak- v-3- i3m-5. klasa, o7i"no sadr6an- . v-3i EimaE. Takv- v-3- s. npr. a.to ima kota"-, kn0i!a ima stranic-, kn0i6nica sadr6i kn0i!-... rim0-r9 public class Stranica { private int brojStranice% private String tekst%
public Stranica(int brojStranice) { tDis,brojStranice # brojStranice% } public void set*ekst(String tekst){ tDis,tekst # tekst% } public int getCrojStranice(){ return brojStranice% } public String get*ekst(){ return tekst% } } import java,util,5rra+Gist% public class Cilje&nica { 5rra+Gist aStranice # ne) 5rra+Gist()%
bilje&nica,ispisiSav*ekst()% } } ,lika C: -.L diagra% klasa E agregaci/a U prim0-r. s. nav-d-n- dvi0- klas-9 1tranica i 'il0-3nica. (lasa 1tranica sadr6i 7ro01tranic- i t-kst, a klasa 'il0-3nica sadr6i kont-0n-r *rraDList ko0i sadr6i o70-kt- klas- 1tranica. 2-todom doda01tranic.8> osi!.rano 0- dodavan0- o70-kta klas- 1tranica . kont-0: n-r *rraDList, a m-todom ispisi1avT-kst8> osi!.ran 0- ispis sviC podataka i3 sviC o70-kata klas- 1tranica. Da 7i s- mo!la po3vati m-toda doda01tranic.8> s param-trom tipa 1tranica, prvo s- mora kr-irati o70-kt klas- 1tranica9 Stranica s # ne) Stranica(()% Ra ta0 s- o70-kt postavl0a i t-kst9 s,set*ekst(-3eki tekst ide u biljenicu,,,-)% )akon to!a s- ta r-f-r-nca na o70-kt prosl0-5.0- kao param-tar m-todi9 bilje&nica,dodajStranicu(s)% Da 7ismo .7acili novi o70-kt 8to"ni0- r-f-r-nc. na o70-kt> . kont-0n-r *rraDList, moramo kr-irati 0o/ 0-dan o70-kt klas- 1tranica9 Stranica s( # ne) Stranica(/)% : A% : i postaviti t-kst9 s(,set*ekst(-*est biljenica,,,-)% (ad 7ismo Ct0-li iskoristiti ona0 posto0-i o70-kt s 3a dodavan0- novo! t-ksta9 s,set*ekst(-*est biljenica,,,-)% t-kst ko0i smo rani0- .pisali 7io 7i pr-pisan s novim t-kstom. Ra3lo! tom- 0- /to s- kod prosl0-5ivan0a o70-kata i spr-man0a . kont-0n-r 3apravo n- radi s o70-kti: ma n-!o s r-f-r-ncama na t- o70-kt-, a pr-ko tiC r-f-r-nci o70-kti s- i dal0- mo!. mi0-n0ati. V-3a i3m-5. oviC dvi0. klasa 81tranica i 'il0-3nica> 0- a!r-!aci0ska, odnosno 0-dna klasa s.d0-l.0- . dr.!o0 klasi 0akom v-3om. rim0-r9 public class Srediste { private int J% private int +% public Srediste(int J8 int +) { tDis,J # J% tDis,+ # +% } public int getO(){ return J% } public int getP(){ return +% } } public class Coja { public static Coja RITV35 # ne) Coja(-Rrvena-)% public static Coja 0G5T5 # ne) Coja(-0lava-)% public static Coja KVGV35 # ne) Coja(-Kelena-)%
private String boja% public Coja(String boja) { tDis,boja # boja% } public String getCoja(){ return boja% } } public class 'rug { private Srediste srediste% : A# : private int polumjer% private Coja boja% public 'rug(Srediste srediste8 int polumjer8 Coja boja) { tDis,srediste # srediste% tDis,polumjer # polumjer% tDis,boja # boja% } public Srediste getSrediste(){ return srediste% } public int get0olumjer(){ return polumjer% } public Coja getCoja(){ return boja% } public static void main(String[] args) { Srediste srediste( # ne) Srediste((>8(>)% Coja boja( # Coja,0G5T5% 'rug k(#ne) 'rug(srediste(8(>8boja()% 'rug k/#ne) 'rug(ne) Srediste((>>8(/>)8@>8Coja,RITV35)%
double J # k/,getSrediste(),getO()% S+stem,out,println(-J#-4J4-+#-4k/,getSrediste(),getP())% S+stem,out,println(-Coja je -4k/,getCoja(),getCoja())% S+stem,out,println(-0olumjer -4k/,get0olumjer())% } } U prim0-r. s. d-finiran- tri klas-9 klasa (r.!, klasa 1r-dist- i klasa 'o0a. U klasi 1r-dist- dan- s. J i D koordinat- ko0- s- postavl0a0. pr-ko konstr.ktora t- im s- prist.pa pr-ko !-t m-toda. U klasi 'o0a d-finiran- s. tri stati"k- vari0a: 7l- klas- 'o0a t- vari0a7la o70-kta. (lasa (r.! sasto0i s- od vari0a7li sr-di/t- tipa 1r-dist-, pol.m0-r tipa int i 7o0a tipa 'o0a. (od kr-iran0a o70-kta klas- (r.!, konstr.ktor. s- prosl0-5.0. vri0-dnosti tipa 1r-dist-, int i 'o0a. Ra vri0-dnost tipa 1r-dist- kr-ira s- o70-kt t- klas-. Isto vri0-: di i 3a o70-kt klas- 'o0a. Srediste srediste( # ne) Srediste((>8(>)% Coja boja( # Coja,0G5T5% 'rug k(#ne) 'rug(srediste(8(>8boja()% (onstr.ktor. klas- (r.! prosl0-5.0. s- o70-kti sr-dist-% i 7o0a%. 2o!.- 0- kr-irati o70-kt klas- (r.! i na sl0-d-i na"in9 'rug k/#ne) 'rug(ne) Srediste((>>8(/>)8@>8Coja,RITV35)% : A4 : (od ispisivan0a podataka i3 o70-kta k# klas- (r.! .3ima0. s- podaci do7iv-ni 3a o70-kt k#9 Srediste sred # k/,getSrediste()% I3 o70-kta klas- 1r-dist- lako s- mo!. do7iti koordinat- J i D, po3ivom m-toda !-t]8> i !-tb8>9 int J # sred,getO()% int + # sred,getP()% 1kra-no s- mo6- pisati9 int J # k/,getSrediste(),getO()% int + # k/,getSrediste(),getP()% Isto vri0-di i 3a do7ivan0- podataka o 7o0i9 Coja b # k/,getCoja()% String boja # b,getCoja()% odnosno skra-no9 String boja # k/,getCoja(),getCoja()% /ada+i. +0 1reira/te klase ,tranica i :il/eznica kao ' navedeno% &ri%/er'0 1o%&ilira/te i &o! krenite &rogra% te &ro%otrite rez'ltat0 Za o3/ekte &ozovite i %etod' is&isi,tranic'240 )0 - klasi ,tranica kreira/te %etod' vrati,tranic'24 ko/o/ se &rosl/e<'/e int 23ro/ stra! nice40 .etoda vraa o3/ekt klase ,tranica0 1reira/te %etod' vrati,ve,tranice24 ko/a vraa o3/ekt klase Drra"List0 Pozovite navedene %etode iz klase :il/eznica0 60 Iz%i/enite klas' :il/eznica tako da '%/esto konte/nera Drra"List &ostavite Mash! .a&0 1ao kl/' &ostavite 3ro/,tranice0 80 1reira/te klase :o/a( ,rediste i 1r'g kao ' &ri%/er'0 1o%&ilira/te i &okrenite &ro! gra%0 1reira/te /o5 nekoliko o3/ekata klase 1r'g0 3/ekte doda/te ' konte/ner Mash! ,et te ih kroz nek' &etl/' izv'cite iz konte/nera i is&i5ite0 : A@ : 9#*# Na'lje=i!anje )asl0-5ivan0- 0- 0-dan od osnovniC konc-pata o70-ktno:ori0-ntirano! pro!ramira: n0a. U nasl0-5ivan0. s.d0-l.0. natklasa i potklas-. &snovna natklasa . Javi 0- klasa &70-ct ko0a s- nala3i . pak-t. 0ava.lan!. Ukoli: ko kr-iramo vlastit. klas. ko0a n- nasl0-5.0- niti 0-dn. klas., onda 0- si!.rno da ona nasl0-5.0- 7ar-m klas. &70-ct, iako s- to . kod. i3ri"ito n- navodi. &snovna karakt-ristika nasl0-5ivan0a 0- da klas- ko0- nasl0-5.0. n-k. klas. nas: l0-5.0. i sva svo0stva t- klas-, to"ni0- vari0a7l- i m-tod-. &snovna sintaksa 0- sl0-d-a9 class 5 { } class C e1tends 5 { } rim0-r9 public class Retverokut { int a8 b8 c8 d% public Retverokut(){ } public Retverokut(int a8 int b8 int c8 int d) { tDis,a # a% tDis,b # b% tDis,c # c% tDis,d # d% } void ispisStranica(){ S+stem,out,println(-a#-4a4- b#-4b4- c#-4c4- d#-4d)% } public static void main(String[] args) { Retverokut cetverokut # ne) Retverokut((8/8@8<)% cetverokut,ispisStranica()% } } public class 0ravokutnik e1tends Retverokut {