Klase u Javi

download Klase u Javi

of 61

Transcript of Klase u Javi

  • 8/18/2019 Klase u Javi

    1/61

    Objektno orijentisano programiranjevežbe, školska 2012/13

    Univerzitet u Beogradu, atemati!ki "akultet

    Biljana #tojanovi$

  • 8/18/2019 Klase u Javi

    2/61

    %lase u &avi

  • 8/18/2019 Klase u Javi

    3/61

    %lase u &avi

    %lasa je spe'i"ika'ija svojstava odre(ene vrsteobjekata)Klasa definiše novi tip )*e"ini'ija klase se koristi za kreiranje objekata

    tog klasnog tipa)%reirani objekti sadrže sve komponente koje suspe'i"ikovane u klasi)Primer: klasa String predstavlja de"ini'iju ilispe'i"ika'iju za String objekte sa svimopera'ijama koje se mogu izvršavati nad njima)%ad god se kreira novi objekat klase #tring, onima sve karakteristike koje su de"inisane u klasi)

  • 8/18/2019 Klase u Javi

    4/61

    *e"ini'ija klase

    *e"ini'ija klase sadrži+promenljive polja- . mogu biti primitivnog

    tipa ili mogu da re"erišu na objekteproizvoljnog klasnog tipa, uklju!uju$i i onajkoji de"inišemo

    azlikujemo tri vrste promenljivi +instancneklasne ili statičke (static)

    finalne ili konstantne (final)metode . de"inišu opera'ije koje se mogu

    primeniti nad objektima te klase, obi!no nadpromenljivim iz klase

  • 8/18/2019 Klase u Javi

    5/61

    nstan'ne promenljive

    #vaka instan'a objekat- klase ima svojukopiju instan'ne promenljive u memoriji)nstan'ne promenljive razlikuju objekte

    me(usobno)azivamo i i nestati!kim promenljivim )nstan'nim promenljivim predstavljene

    su najbitnije karaktristike objekata klase,tj) one koje i jednozna!no identi"ikuju)

  • 8/18/2019 Klase u Javi

    6/61

    %lasne stati!ke- promenljive

    ezane su za klasu i dele i svi objekti klase)4ostoji samo jedna ovakva promenljiva u memorijibez obzira koliko je objekata te klase kreirano)

    apomena+ ne kreira se za svaki objekat posebna kopija

    ovakve promenljive, ve$ svi objekti dele jednu istupromenljivu u memoriji)%lasna promenljiva postoji u memoriji !ak i kadnijedan objekat klase nije kreiran)*eklarišu se klju!nom re!ju static )

  • 8/18/2019 Klase u Javi

    7/61

    5inalne promenljive

    *eklarišu se klju!nom re!ju final )Ove promenljive imaju konstantnuvrednost koja se zadaje kao ini'ijalnavrednost u deklara'iji)

    Obi!no se koriste za predstavljanje nekikonstantni vrednosti koje u nekom smislukarakterišu objekte klase)#vaki objekat ima$e svoju kopiju final promenljive osim ako nije deklarisanapomo$u static -)

  • 8/18/2019 Klase u Javi

    8/61

    4rimer

  • 8/18/2019 Klase u Javi

    9/61

    Upotreba stati!ki promenljivi

    Napomena ! aj!eš$a primena stati!kipromenljivi je za !uvanje vrednosti koje suzajedni!ke svim objektima klase)

    Primer: ako je potrebno brojati koliko je objekataneke klase kreirano u programu, najbolje rešenje jeda se za to iskoristi statička promenljivaPošto ona postoji i kada nijedan objekat klase nijekreiran, mo!e da se iskoristi kao brojač koji prekreiranja objekata ima vrednost " Svaki put kada

    se instancira primerak klase, vrednost ove promenljive se uve#a za $ Pristup i promena njenevrednosti su mogu#i, jer je ona zajednička za sveobjekte

  • 8/18/2019 Klase u Javi

    10/61

    etodi u de"ini'iji klase

    4ostoje dve vrste metoda+nstan'ni metodi . mogu se izvršavati samo

    u odnosu na konkretan objekat klase)%lasni metodi . mogu se izvršavati i kada ne

    postoji nijedan objekat klase) *eklarišu seklju!nom re!ju static i nazivamo i i statičkimmetodima )

  • 8/18/2019 Klase u Javi

    11/61

    %lasni stati!ki- metodi

    U de"ini'iji stati!ki metoda ne smeju se koristitiinstan'ne promenljive)

    4ošto stati!ki metodi mogu da se izvršavaju i kada nepostoje objekti, može se desiti da se operiše nadpromenljivim koje ne postoje u memoriji) U tom slu!aju

    kod se ne$e prevesti, dobi$e se poruka o greš'i)etod main() je uvek deklarisan kao stati!ki )Pre nego što neka aplikacija počne da se izvršava, ne

    postoji ni jedan kreirani objekat (bilo koje klase) umemoriji%a bi aplikacija mogla da se pokrene, neop&odan nam je

    metod koji mo!e da se izvrši čak i kada nema objekata,dakle, statički metod

  • 8/18/2019 Klase u Javi

    12/61

    apomene6

    ako se instan'ni metodi vezuju za objekat, u memorijipostoji #7 O &8* 7 kopija svakog instan'nog metoda kojudele svi objekti odgovaraju$e klase)

    emorijski resursi bi u velikoj meri bili zauzeti kada bi se za svakinovi objekat kreirala i nova kopija instan'nog metoda)

    4oseban me anizam omogu$uje da, svaki put kada semetod pozove, njegov kod se izvršava na na!in spe'i"i!anza konkretan objekat )4ored main() metoda, naj!eš$a situa'ija kada koristimostati!ke metode je kada se klasa koristi kao kontejner zagomilu korisni metoda)

    matemati!ke "unk'ije su implementirane kao klasni metodi ustandardnoj klasi java lang 'at&ovi metodi nemaju nikakve veze sa objektima, ve$ samo operišunad primitivnim tipovima) %lasa 'at& sadrži i neke klasnepromenljive koje su zapravo korisne matemati!ke konstante . 4 ,8, itd)

  • 8/18/2019 Klase u Javi

    13/61

    4ristup !lanovima klase

    Obi!no promenljivim i metodima pristupamoizvan klase u kojoj su deklarisani)4romenljive i metode je mogu$e deklarisati itako da im pristup izvan klase nije mogu$)

    4osebno $emo razmotriti pristup stati!kim, aposebno pristup nestati!kim !lanovimapromenljivim i metodima- klase)

  • 8/18/2019 Klase u Javi

    14/61

    4ristup stati!kim !lani'ama klase

    #tati!kom !lanu klase pristupamo koriste$i nota'iju+ime klase ime članice double koren 9 at )s:rt at )4 -;

    ože se pristupiti i preko promenljive koja re"erišena konkretan objekat klase+

    referenca na objekat ime članice

    ogu se import naredbom uklju!iti imena stati!ki!lanova klase promenljivi i metoda- i može sekasnije re"erisati na nji bez kvali"ikovanja imenom

    klase, samo navo(enjem nji ovi imena)import stati' java)util)7rra

  • 8/18/2019 Klase u Javi

    15/61

    4ristup nestati!kim !lani'ama klase

    nstan'nim promenljivim i metodima sepristupa samo koriste$i re"eren'e nakonkretne objekte)

    referenca na objekat član

    4rimer+double povrsina%upe 9 kupa)povrsina -;

  • 8/18/2019 Klase u Javi

    16/61

    *e"inisanje klase

    ?a de"inisanje klase koristimo klju!nu re! class koju prati imeklase i u okviru viti!asti zagrada detalji de"ini'ije)'lass me%lase @// !lanovi promenljive i metodi-

    A4o konven'iji, imena klasa u &avi po!inju velikim slovom)?a promenljive, kako stati!ke tako i nestati!ke, u de"ini'iji klasemogu se postaviti ini'ijalne vrednosti)Ukoliko se ne navede ini'ijalna vrednost, prilikom kreiranjaobjekta bi$e pridružena podrazumevana vrednost)%ada o$emo da "iksiramo ini'ijalnu vrednost promenljive, tj) da

    je u!inimo konstantnom, treba da deklarišemo promenljivuklju!nom re!ju final 7ko ne stoji final , ini'ijalna vrednost možebiti promenjena)

  • 8/18/2019 Klase u Javi

    17/61

    *e"inisanje metoda

    etodi su zapravo "unk'ije i na taj na!in se ide"inišu)

    ip vrednosti koju metod vra$a može bitivoid , proizvoljan primitivni tip ili klasni tipCokalne promenljive metoda se neini'ijalizuju automatski, ve$ se moraekspli'itno izvršiti nji ova ini'ijaliza'ija)

    etodima se u &avi svi argumenati prenose

    po vrednosti )

  • 8/18/2019 Klase u Javi

    18/61

    4renošenje argumenata primitivnog tipametodima

    7ko je argument metoda primitivnog tipa, kopijaargumenta se prenosi metodu preko imenaparametra, a ne originalna vrednost) z tog razlogametod ne može promeniti nji ovu vrednost uprogramu)

  • 8/18/2019 Klase u Javi

    19/61

    4renošenje argumenata klasnog tipametodima

    %ada je argument metoda klasnog tipa,metodu se prosle(uje kopija re"eren'e naobjekat tog tipa , a ne kopija samog objekta)4ošto kopija re"eren'e tako(e ukazuje na istioriginalni objekat, objekat može bitipromenjen od strane metoda)

  • 8/18/2019 Klase u Javi

    20/61

    4renošenje argumenata klasnogtipa metodima

  • 8/18/2019 Klase u Javi

    21/61

    5inal parametri metoda

    #vaki od parametara metoda može sedeklarisati kao final , što ima e"ekatspre!avanja promene njegove vrednosti pripozivu metoda)

    4ošto me anizam prenosa po vrednosti pravikopije vrednosti primitivnog tipa, ima smislakoristiti "inal samo kada se primenjuje naparametre koji su re"eren'e na objekte klasa )Napomena: final spre!ava slu!ajnu promenure"eren'e na objekat koja se prosle(ujemetodu, ali ne spre!ava promenu samogobjekta666

  • 8/18/2019 Klase u Javi

    22/61

    4romenljiva t is

    #vaki instan'ni metod sadrži promenljivu t&is%ada se metod pozove nad nekim objektom klase, t&is re"eriše na taj objekat)%ompajler koristi t&is impli'itno kada se u telu metodakoristi instan'na promenljiva)%ompajler impli'itno ume$e objektnu re"eren'u t&is ispred imena instan'ne promenljive) #vako pojavljivanjeimena instan'ne promenljive zapravo sadrži pre"iks t&is)

    7ko je pom instan'na promenljiva, u telu metoda joj se zapravopristupa pomo$u t&is pom)

    double zapremina 9 s"era)zapremina -; /Dsfera je objekat klase Sfera ; promenljiva t&is u metodu

    zapremina() re"eriše na objekat sfera , tako da $e upravoinstan'na promenljiva radius iz objekta sfera biti

    iskoriš$ena u izra!unavanju) D/

  • 8/18/2019 Klase u Javi

    23/61

    4romenljiva t&is i nestati!ki metodi

    4romenljiva t&is omogu$uje da postojisamo jedna kopija svakog instan'nogmetoda u memoriji !ak i kad postoji ve$ibroj objekata klase-)

    Upravo ona omogu$uje da metod radikorektno za svaki objekat klase)#vaki put kad se pozove instan'ni metodnad nekim objektom, promenljiva t&is sepostavlja da re"eriše na taj objekat) %odunutar metoda $e se odnositi upravo na!lanove tog objekta)

  • 8/18/2019 Klase u Javi

    24/61

    8kspli'itna upotreba promenljive t&is

    ?a lokalnu promenljivu ili parametar metoda može sekoristiti isto ime kao i ime neke instan'ne promenljive)U tom slu!aju mora ekspli'itno da se koristi t&is da bise re"erisalo na instan'nu promenljivu unutar metoda)

    me promenljive bez pre"iksa t&is se odnosi na lokalnu

    promenljivu metoda, ne na atribut klase)void c&ange adius(double radius) *t&is radius + radius-t&is radius se odnosi na atribut klase, a radius naparametar metoda

  • 8/18/2019 Klase u Javi

    25/61

    ni'ijaliza'ioni blokovi

    a isti na!in kao i stati!ke, mogu seini'ijalizovati i nestati!ke instan'ne promenljive)7ko ini'ijaliza'ija podrazumeva više izraza,!esto se ini'ijaliza'ija radi blokom inicijalizacije )

    4ostoje dve vrste blokova za ini'ijaliza'iju+Statički blok za inicijalizaciju . blok de"inisanklju!nom re!ju static i izvršava se samo jednomkada se klasa u!itava) On može da ini'ijalizujesamo stati!ke promenljive).estatički blok za inicijalizaciju . izvršava se zasvaki objekat koji se kreira i stoga može daini'ijalizuje instan'ne promenljive)

  • 8/18/2019 Klase u Javi

    26/61

    %onstruktor

    4ravljenje objekata klase vrši se pozivomposebnog metoda, tzv) konstruktora )%onstruktor nema povratni tip i ne piše se ništa,!ak ni void)

    ma isto ime kao i klasa)ože imati proizvoljan broj argumenata)ni'ijaliza'ioni blokovi koji su eventualno

    de"inisani u klasi uvek se izvršavaju pre telakonstruktora)4rimarna svr a konstruktora je da izvršiini'ijaliza'iju instan'ni promenljivi )

  • 8/18/2019 Klase u Javi

    27/61

    4odrazumevani konstruktor 7ko se za klasu ne de"iniše konstruktor,kompajler obezbe(uje podrazumevani(default) konstruktor koji ne radi ništa i nemanijedan argument)

    Eime klaseF -@A7ko je de"inisan neki konstruktor u klasi,kompajler ne$e obezbediti podrazumevanikonstruktor i on se po potrebi mora ekspli'itnode"inisati)

  • 8/18/2019 Klase u Javi

    28/61

    4ravljenje objekata klase 1-

    4rimer+ #"era lopta;/D ovde se ne poziva konstruktor jer nikakav objekat još uvek nije

    napravljen, ve$ je samo deklarisana promenljiva koja može da !uvare"eren'u na objekat klase Sfera D/

    *a bismo napravili objekat klase koristimo operatorne/ za kojim sledi poziv konstruktora+ lopta 9 neG #"era 1, 2, 1)0, 1)0-;/D pravi se novi objekat klase Sfera sa datim vrednostima za

    instan'ne promenljive) D/

    #"era lopta 9 neG #"era 1, 2, 1)0, 1)0-;/D deklariše se promenljiva lopta i istovremeno kreira objekat nakoji ona re"eriše D/

  • 8/18/2019 Klase u Javi

    29/61

    4ravljenje objekata klase 2-

  • 8/18/2019 Klase u Javi

    30/61

    HIivotni vekJ objekata rajanje objekta je odre(eno promenljivom koja re"eriše na njega, akopostoji samo jedna) 7ko više promenljivi re"eriše na jedan isti objekat,objekat HživiJ sve dok negde postoji promenljiva koja re"eriše na objekat)4ro'es osloba(anja od Hmrtvi J objekata radi tzv) Karbage Lolle'tor i ovajpro'es je automatizovan) Objekti se ne uklanjaju iz memorije odma nakonšto postanu nedostupni, ve$ može pro$i neko vreme, ali to ne uti!e nakorisni!ki program)

    aredbom lopta 9 null; resetujemo promenljivu lopta tako da više nepokazuje na konkretan objekat) Ukoliko je to bila jedina promenljiva koja jere"erisala na taj objekat, on postaje nedostupan i bi$e uništen)4romenljiva lopta , me(utim, nastavlja da postoji i može se koristiti dare"eriše na neki drugi objekat iste klase)

  • 8/18/2019 Klase u Javi

    31/61

    4reoptere$enje overloading- metoda

    ogu$e je de"inisati više metoda klase sa istimimenom sve dok svaki metod ima jedinstven skupparametara) o se naziva preoptere#enje metoda )

    me metoda, zajedno sa tipom i redosledomparametara !ini potpis metoda )

    0a potpis metoda bitan je broj, tip i redosled parametara, a ne nji&ova imena4otpis svakog metoda u klasi mora biti jedinstvenkako bi kompajler mogao u svakom trenutku daodredi koji metod pozivamo)

    ip povratne vrednosti metoda nema uti'aja napotpis metoda)4rimer+ value1f() metodi klase String . postoji po

    jedan za svaki primitivni tip podataka i sli!no)

  • 8/18/2019 Klase u Javi

    32/61

    4reoptere$enje konstruktora

    %onstruktori se mogu preopteretiti, kao ibilo koji drugi metodi klase)Ovo je zgodno u situa'ijama kada želimoda napravimo objekte na osnovu razli!itiskupova ini'ijalni vrednosti)%ompajler bira koji konstruktor $e koristitina osnovu prosle(eni argumenata)

  • 8/18/2019 Klase u Javi

    33/61

    4oziv konstruktora iz drugog konstruktora &edan konstruktor klase može pozivati drugikonstruktor iste klase)4oziv se vrši uvek u prvoj izvršnoj naredbi)Omogu$uje se ušteda na ponovnom pisanju

    koda)?a re"erisanje drugog konstruktora iste klasekoristi se t&is kao ime metoda pra$enodgovaraju$im argumentima izme(u zagrada)

    t is )))-

  • 8/18/2019 Klase u Javi

    34/61

    HLop< . konstruktorJ 1-

    Mesto se javlja potreba za pravljenjemidenti!ne kopije objekta)4ravimo objekat klase Sfera +#"era lopta1 9 neG #"era 10)0, 10)0, 0)0-;

    7ko kasnije u programu želimo da napravimoobjekat lopta2 identi!an objektu lopta$ inapišemo #"era lopta2 9 lopta1;

    to ne$e biti ono što želimo, ve$ $e samo obepromenljive lopta2 i lopta$ re"erisati na istiobjekat)

  • 8/18/2019 Klase u Javi

    35/61

    HLop< . konstruktorJ 2-

    ?a pravljenje identi!ne kopije objekta, trebade"inisati novi konstruktor koji kao argumentprima postoje$i objekat klase npr) klase #"era- ikopira vrednosti njegovi instan'ni promenljiviu odgovaraju$e instan'ne promenljive novogobjekta)4rimer+

    #"era "inal #"era original- @radius 9 original)radius;NLenter 9 original)NLenter;

  • 8/18/2019 Klase u Javi

    36/61

    4ristup !lanovima klase dostupnost-#vaka klasa ima direktan pristup svim ostalimklasama istog paketa, ali promenljive i metodikoji su !lanovi ti klasa ne moraju nužno bitidostupni)*ostupnost se kontroliše atributima pristupa

    a''ess attributes-)%lasama koje ne deklarišemo kao public možese pristupiti samo iz istog paketa)

  • 8/18/2019 Klase u Javi

    37/61

    4ristupni atributi za !lanove klasa

    4ostoje P mogu$nosti za atribute pristupa!lani'ama klase+• bez pristupnog atributa . dopušten pristup iz

    metoda proizvoljne klase iz istog paketa• publi' . dopušten pristup iz metoda proizvoljne

    klase ne nužno iz istog paketa-, sve dok je klasa!iji je to !lan deklarisana kao public

    • private . dostupan samo iz metoda unutar klase)ikakav pristup izvan klase

    • prote'ted . dopušten pristup iz metodaproizvoljne klase istog paketa i iz proizvoljnepotklase ne nužno iz istog paketa-

  • 8/18/2019 Klase u Javi

    38/61

    4rimer Q klase u istom paketu

  • 8/18/2019 Klase u Javi

    39/61

    4rimer Q razli!iti paketi

  • 8/18/2019 Klase u Javi

    40/61

    zbor pristupni atributa 1-

    aj!eš$e, promenljive u public klasi treba da budu private , a metodi koji $e se pozivati izvan klase public )zuze'i+

    • za klase paketa koje nisu public , a time nisu dostupne izvanpaketa, konven'ija je dozvoliti drugim klasama paketadirektan pristup promenljivim

    • ako imamo final atribute koji su verovatno korisni izvanklase, možemo i deklarisati kao public• metode klase koje $e interno koristiti samo drugi metodi iste

    klase treba de"inisati kao private• u klasama poput 'at& koja je samo kontejner za korisne

    "unk'ije i standardne vrednosti podataka, sve treba da bude public

    • akon uvo(enja potklasa, još neke stvari se morajuuzeti u obzir)

  • 8/18/2019 Klase u Javi

    41/61

    zbor pristupni atributa 2-Uobi!ajeno je da instan'ne promenljive budu

    private tako da im se ne može direktnopristupati, niti se mogu direktno menjati izvanklase) &edini na!in da im se pristupi ili da senji ove vrednosti promene jeste pomo$umetoda iste klase)

    rednosti private instan'ne promenljive izvanklase pristupa se tzv) pristupnim (accessor)metodom klase)

  • 8/18/2019 Klase u Javi

    42/61

    4ristupni metodi . getD - metodi4rimer+publi' double getR -@ return N;A

    a ovaj na!un vrednost instan'ne promenljivepostaje dostupna svuda, ali se može menjatisamo unutar klase)4ristupni metodi se obi!no zovu getD -)

  • 8/18/2019 Klase u Javi

    43/61

    setD - metodietodi koji dopuštaju menjanje vrednosti

    private instan'ni promenljivi )ji ova imena su obi!no oblika setD -) ova vrednost atributa se prosle(uje kao

    argument metodu)

    publi' void setR double inputR-@ N 9 inputR;

    A

  • 8/18/2019 Klase u Javi

    44/61

    4rednost setD - metoda?ašto koristiti public metod da bismo menjalivrednost private instan'ne promenljive kadamožemo jednostavno da je deklarišemo kao

    public S

    Klavna prednost koriš$enja setD - metoda jeste što je mogu$e vršiti proveru novevrednosti i spre!iti pridruživanjeneodgovaraju$i vrednosti instan'nimpromenljivim)

  • 8/18/2019 Klase u Javi

    45/61

    4aketi4aket predstavlja jedinstveno imenovanukolek'iju klasa)

    mena klasa jednog paketa ne$e se mešatisa imenima klasa nekog drugog paketa jerse imena klasa paketa kvali"ikuju imenomtog paketa) pr) puno ime klase String izpaketa java lang je java lang String7ko bismo de"inisali svoju klasu sa istimimenom, String , koriš$enje imena Stringodnosilo bi se na tu našu klasu, dok bismose standardnoj klasi String morali obra$atisa java lang String

  • 8/18/2019 Klase u Javi

    46/61

    4aketi Q nastavak#vaka klasa u &avi je sadržana u nekompaketu, a ako se ne navede ekspli'itno, našeklase se smeštaju u podrazumevani de"ault-paket koji nema ime)#tandardne &ava klase su sadržane u paketimatako što se u jednom paketu nalaze klase kojesu na neki na!in povezane)

  • 8/18/2019 Klase u Javi

    47/61

    4aketi i struktura direktorijuma4aketi su usko povezani sa strukturomdirektorijuma u kojoj se !uvaju)

    ožemo generisati class "ajl za neku klasu izpaketa u drugom direktorijumu, ali taj direktorijumtako(e mora imati isto ime kao i paket)

    me paketa može biti složeno, npr)geometrija geometrija3% , što zna!i da jegeometrija3% poddirektorijum direktorijumageometrija

    me može biti proizvoljne složenosti, ali treba daodražava strukturu direktorijuma gde je paketsmešten)

  • 8/18/2019 Klase u Javi

    48/61

    4aketi i struktura direktorijuma Q nastavaka primer, ako pravimo više kolek'ija klasa

    koje se ti!u jedne iste oblasti geometrija -,možemo da kreiramo više paketa+geometrija2% , geometrija3% , )))

    4odrazumeva se da se klase iz prvogpaketa nalaze u direktorijumugeometrija2% , iz drugog u direktorijumugeometrija3% i da su geometrija2% igeometrija3% poddirektorijumidirektorijuma geometija )

  • 8/18/2019 Klase u Javi

    49/61

    %ompajliranje paketa%oriš$enjem &*% pod TindoGsQom

    komandna linija-+4utanja do direktorijuma paketa mora bitiekspli'itno nazna!ena kompajleru pomo$uvrednosti koja se postavlja za evironmentpromenljivu LC7##47 !ak i kada teku$idirektorijum sadrži paket)

    ajjednostavniji na!in za postavljanjeLC7##47 Qa je navo(enjem op'ijeQ'lasspat pri pozivu kompajlera) Ovajna!in se i preporu!uje6

  • 8/18/2019 Klase u Javi

    50/61

    %ompajliranje paketa Q nastavak

    4utanja do direktorijuma paketa je putanja dodirektorijuma koji sadrži direktorijum paketa, dakle, neuklju!uje sam direktorijum) a primer+• ako smo izvorne datoteke za klase paketa

    geometrija smestili u direktorijum sa putanjomL+V&ava4rogVgeometrija , putanja do direktorijuma

    geometrija je L+V&ava4rog, a 8L+V&ava4rogVgeometrija

    • java' Q'lasspat WL+V&ava4rogW *uz)javaputanju je neop odno smestiti izme(u dvostrukinavodnika ako sadrži beline

    • java' Q'lasspat WL+V&ava4rogW D)javakompila'ija sv izvorni datoteka

  • 8/18/2019 Klase u Javi

    51/61

    4ristup paketima7ko su nam class "ajlovi u originalnomdirektorijumu paketa postoje dve op'ije+

    putanja do paketa se mora pojaviti u stringu kojimse postavlja LC7##47 environment promenljivakoristiti Q'lasspat op'iju u komandnoj liniji kadase poziva kompajler ili interpreter

  • 8/18/2019 Klase u Javi

    52/61

    4ristup paketima Q nastavak7ko se odlu!imo za LC7##47promenljivu, ona treba da sadrži putanjesamo do naši , ne i do standardni paketa)4classpat& primer+

    java' Q'lasspat W);L+V

  • 8/18/2019 Klase u Javi

    53/61

    *odavanje klasa iz paketa u program7ko su de"inisane sa klju!nom re!ju public ,možemo dodati proizvoljnu ili sve klase izimenovanog paketa kodu našeg programakoriš$enjem import deklara'ija)

    U programu zatim možemo re"erisati klasekoje smo u!inili dostupnim import deklara'ijama samo navo(enjem nji oviimena)import deklara'ije se navode na po!etku"ajla, a posle package deklara'ije)

  • 8/18/2019 Klase u Javi

    54/61

    4rimerimport geometrija)geometrija3*)D;

    • uklju!uje sve klase paketageometrija geometrija3%

    • #ada možemo re"erisati proizvoljnu public klasu iz paketa navo(enjem samo njenogimena

    • Obi!no je bolje WimportovatiW samo klasepaketa koje $e se koristiti, npr) za klasu#"era import geometrija)geometrija3*)#"era;

  • 8/18/2019 Klase u Javi

    55/61

    4aketi i imena u našim programimaUnutar jednog paketa možemo davatiimena klasama bez brige da li ta imena ve$postoje negde izvan paketa)

    &ava tretira ime paketa kao deo imenaklase, zapravo kao njegov pre"iks)

    pr) klasa Sfera iz paketageometija geometija3% ima puno imegeometija geometija3% Sfera Ukoliko nekoristimo import deklara'iju, ovu klasumožemo koristiti navo(enjem njenogpunog imena)

  • 8/18/2019 Klase u Javi

    56/61

    mportovanje stati!ki !lanova klase

    ogu se importovati imena stati!ki !lanovaklase iz imenovanog paketa u naš program)#tati!ki !lanovi se zatim mogu koristiti prostonavo(enjem nji ovi nekvali"ikovani imena)npr)

    import stati' java)lang) at )4 ;)))return P)0/3)0D4 DradiusDradiusDradius;

    importovanje svi stati!ki !lanova klase 'at& +

    import stati' java)lang) at )D; Napomena! import stati!ki !lanova klase nije mogu$ za klase koje se

    nalaze u de"ault . bezimenom paketu) 4aket mora imati ime6

  • 8/18/2019 Klase u Javi

    57/61

    #tandardne klase koje enkapsuliraju primitivne tipovepodataka klase omota!i-

    Boolean, B

  • 8/18/2019 Klase u Javi

    58/61

    #tandardne klase koje enkapsulirajuprimitivne tipove podataka Q nastavak

    #vaka klasa tako(e de"iniše i metod value() kojivra$a vrednost enkapsuliranu objektom kaovrednost odgovaraju$eg primitivnog tipa)

    *ouble number;number)value - QF double

    #vaka numeri!ka klasa ima static final konstante7RX 7CU8 i X 7CU8 koje de"inišu najve$u inajmanju vrednost koje mogu biti predstavljene

    tim tipom)6loating4point klase imaju i de"inisane konstante+

    4O# 8X 5 Y, 8K7 8X 5 Y i akoje se mogu koristiti za poredjenja prilikomizra!unavanja)4ostoje i stati!ke metode is n"inite - i is an - zatestiranje floating4point vrednosti)

  • 8/18/2019 Klase u Javi

    59/61

    7U OBOR K vrednosti primitivni tipova7ko se metodu, koji kao argument za tevare"eren'u na objekat, prosledi vrednostprimitivnog tipa, ukoliko okolnosti dozvoljavaju,kompajler $e izvršiti automatsku konverzijuvrednosti primitivnog tipa u odgovaraju$i klasnitip)%onverzije primitivnog tipa u odgovaraju$i klasnitip zovu se bo7ing konverzije, a automatskekonvetrzije ove vrste zovu se autobo7ing%ompajler takodje radi i inverzne konverzije .

    re"eren'u na objekat klase koja enkapsuliraprimitivni tip konvertuje u vrednost koju onenkapsulira unbo7ing -)

  • 8/18/2019 Klase u Javi

    60/61

    ?ada'i za vežbu

    1) apisati klasu %rug koja od instan'ni promenljivi sadrži+ N i

  • 8/18/2019 Klase u Javi

    61/61

    ?ada'i za vežbu Q nastavak

    2) apisati klasu a'ka kojom se de"inise ta!ka u dvodimenzionoj ravni)apisati klasu 4ravougaonik koja od instan'ni promenljivi sadrži+ dveta!ke koje predstavljaju koordinate gornjeg levog i donjeg desnog temenapravougaonika) Obezbediti+

    konstruktor sa odgovaraju$a !etiri parametra N i < koordinata gornjeg levogtemena i N i < koordinata donjeg desnog temena-,konstruktor sa dva parametra dva objekta klase a'ka na osnovu koji sekreiraju temena pravougaonika-,konstruktor sa jednim objektom klase 4ravougaonik kojim se pravi kopijapostoje$eg pravougaonika-)metod koji za pravougaonik nad kojim se poziva i za pravougaonik kojipredstavlja argument metoda vra$a pravougaonik koji i obu vata)metod koji ispisuje ta!ke koje de"inišu pravougaonik)

    apisati posebnu klasu est4ravougaonik za testiranje Q u metodu main -kreirati P pravougaonika, postepeno i kombinovati kako bi se na krajudobio pravougaonik koji i sve obu vata) spisati i ta!ke koje de"inišsu svaP pravougaonika)