27
1 SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA SEMINAR Programiranje u Javi i tehnologija Java apleta Blaženko Davidović Voditelj: Mr. sc. Marko Čupić Zagreb, lipanj, 2011.

Programiranje u Javi i tehnologija Java apleta

  • Upload
    others

  • View
    11

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Programiranje u Javi i tehnologija Java apleta

1

SVEUČILIŠTE U ZAGREBU

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

SEMINAR

Programiranje u Javi i tehnologija Java apleta

Blaženko Davidović

Voditelj: Mr. sc. Marko Čupić

Zagreb, lipanj, 2011.

Page 2: Programiranje u Javi i tehnologija Java apleta

2

1. Uvod ................................................................................................................ 3

2. O Javi ............................................................................................................... 4

2.1 Ciljevi programskog jezika Java ............................................................................... 4

2.2 Jednostavnost i sličnost u odnosu na druge jezike ................................................... 5

2.3 Pouzdanost i sigurnost............................................................................................ 5

2.4 Neovisnost o arhitekturi računala ........................................................................... 6

2.5 Performanse .......................................................................................................... 6

2.6 Prevođenje, procesiranje, dinamičnost ................................................................... 6

3. Paradigma objektno - orijentiranog programiranja .......................................... 8

3.1 Što su to objekti? ................................................................................................... 8

3.2 Pojam razreda ........................................................................................................ 9

3.3 Stvaranje novih objekata ...................................................................................... 10

3.4 Konstruktori ......................................................................................................... 10 3.4.1 Varijabla this ................................................................................................................... 11

3.5 Metode i komunikacija među objektima ............................................................... 11

3.6 Podrazredi i nadrazredi ......................................................................................... 13

3.7 Dozvole pristupa .................................................................................................. 14

3.8 Razredni atributi i razredne metode ...................................................................... 15

3.9 Osvrt na dosad naučeno ....................................................................................... 16

4. Apleti ............................................................................................................. 17

4.1 Hello world! aplet ................................................................................................ 18

4.2 Ideja događaja ..................................................................................................... 19

4.3 Komponente korisničkog sučelja ........................................................................... 22 4.3.1 Gumbi ................................................................................................................................. 22 4.3.2 Padajući izbornik ................................................................................................................ 23 4.3.3 Lista .................................................................................................................................... 23 4.3.4 Tekstualno polje ................................................................................................................. 23 4.3.5 Tekstualni prostor .............................................................................................................. 24

5. Zaključak ....................................................................................................... 25

6. Literatura ...................................................................................................... 26

7. Sažetak .......................................................................................................... 27

Page 3: Programiranje u Javi i tehnologija Java apleta

3

1. Uvod U današnje vrijeme brz razvoj interneta i sadržaja na njemu je posve normalna stvar. Ljudi

konstantno teže ka napretku i naše želje su svakoga dana sve veće. Ostati suvremen i konkurentan u takvoj okolini predstavlja velik izazov i nerijetko smo svjedoci neuspjelih pokušaja.

Mnogi se pitaju: „Kako preživjeti u takvom svijetu?“

Pa, odgovor je vrlo jednostavan – Java.

U ovom seminaru ću se pozabaviti sa više stvari a sve su vezane uz programski jezik Java.

U prvome dijelu ću napraviti uvod u Javu općenito: kada je nastala i zašto, objasniti ću njezine prednosti i nedostatke, pokazati zašto je upravo ona izbor mnogih programera diljem svijeta.

U drugome dijelu ću obraditi paradigmu objektno-orijentiranog programiranja – bitne stavke u savladavanju osnova programiranja u Javi. Pošto je java isključivo objektno-orijentiran jezik bitno je upoznati osnovne pojmove i sintaksu jednog takvog jezika. Jednom kada to savladamo moći ćemo prijeći na sljedeću i konačnu cjelinu – tehnologiju apleta.

Apleti (engl. applet) su programska podrška koja nam nudi mnogo toga. Njihova primarna zadaća je ponuditi korisniku što zanimljiviji i interaktivniji sadržaj. Veoma se često susrećemo sa njima u svakodnevnom životu i vjerujem da su veoma zanimljiva cjelina unutar programskog jezika Jave. Baš zbog toga sam odlučio pokazati osnovne primjere apleta, postupak njihove izrade i implementacije.

Vjerujem da će Vam ovaj seminar pružiti dostatne informacije kao i potaknuti želju za daljnjim učenjem programiranja u Javi.

Page 4: Programiranje u Javi i tehnologija Java apleta

4

2. O Javi Java je ujedno i platforma i programski jezik koji je razvila tvrtka zvana Sun Microsystems a

koju danas posjeduje korporacija Oracle. Glavni akter iza nastanka Jave je James Gosling, koji je 1995. godine objavio Java platformu, glavnu komponentu tadašnjeg Sun Microsystema.

Programski jezik Java je dizajniran s namjerom rješavanja raznih zadataka i izazova koji nastaju prilikom razvoja aplikacija u okolišu kakvog nam nude internet i široko rasprostranjene mreže. Jedan od glavnih problema bio je siguran prijenos aplikacija koje zauzimaju minimum resursa, neprestano se mijenaju i nadograđuju i koje se mogu izvršavati na mnogim fizičkim i programskim platformama.

Java je nastala iz tadašnjeg projekta kojemu je cilj bio izrada napredne programske podrške namijenjene širokom spektru mrežnih uređaja i ugradbenih sustava. Krajnji cilj je bila mala, pouzdana, prijenosna i lako dostupna platforma. U to vrijeme, glavni izbor programskog jezika je bio C++. No, s vremena na vrijeme, poteškoće s jezikom C++ su dovele do točke gdje je najjednostavnije bilo napraviti novu jezičnu platformu.

Rezultat je Java – jezična platforma koja se pokazala idealnom u izradi sigurnih, lako dobavljivih aplikacija namijenih krajnjim korisnicima mreža i interneta.

2.1 Ciljevi programskog jezika Java Na dizajniranje Jave je utjecala priroda računalnog okoliša u kojem se programi izvode. Velik

napredak i rast interneta i mreža doveo je do potpuno novog načina izrade i preuzimanja programske podrške. Kako bi preživjela u takvom svijetu, Java je morala omogućiti izradu snažnih i sigurnih

aplikacija, visokih performansi, koje se mogu izvršavati na svim platformama unutar heterogenih,

dijeljenih mreža.

Rad na različitim platformama u takvim mrežama podrazumijeva tradicionalan način izdavanja binarnog koda, distribucije, nadogradnje te održavanje istoga. Da bi Java ostala konkurentna u takvoj okolini, mora biti neovisna o arhitekturi, prijenosna te dinamički prilagodljiva.

Sustav koji je nastao zbog tih razloga morao je biti:

- jednostavan, da bi svi programeri mogli raditi u njemu, - poznat, sličan već viđenome, da bi postojeći programeri mogli lako naučiti nov jezik, - objektno-orijentiran, da bi se uklopio i iskoristio prednosti izrade aplikacija takvim

modernim načinom rada, - morao je podržavati višedretvenost, da bi omogućio visoke performanse aplikacijama

koje obavljaju više zadaća odjednom te - interpretiran, da bi pružio maksimalne prijenosne i dinamičke sposobnosti.

Zajedno, prethodno navedeni zahtjevi uvode poprilično velik skup novih posebnosti, koje ćemo pobliže proučiti te otkriti njihove prednosti.

Page 5: Programiranje u Javi i tehnologija Java apleta

5

2.2 Jednostavnost i sličnost u odnosu na druge jezike

Glavna karakteristika programskog jezika Jave jest jednostavan jezik koji omogućuje programiranje bez velikog treninga i napora, a pritom omogućuje programeru da zadrži sve navike iz dosadašnje prakse. Osnovni koncept Jave se lako pamti : programeri mogu biti produktivni od samog početka.

Java je dizajnirana sa namjerom da bude objektno-orijentirana od samoga početka. Objektno-orijentirano programiranje je napokon pronašlo svoje mjesto u suvremenom svijetu, nakon dugog perioda od 30 godina. U svijetu gdje je potražnja za aplikacijama namijenjenim klijentu sve veća, gdje do izražaja dolaze kompleksni problemi, programer mora konstantno biti u toku, što podrazumijeva prihvaćanje načina rada koje nudi objektno-orijentirano programiranje. Java u skladu s time nudi veoma efikasnu i „čistu“ platformu za razvoj.

Programeri koristeći Javu, mogu se služiti postojećim bazama podataka i arhiva, koje nude razne objekte, od jednostavnih mogućnosti poput unosa i ispisa podataka, pa sve do izrade grafičkog sučelja. Arhive se lako mogu proširivati, što nudi mogućnost napredovanja i drukčijeg ponašanja.

Iako je C++ odbijen kao implementacijski jezik, izradom Jave po uzoru na C++ ostvarilo se to da Java bude u samom startu poznata, a da pritom izgubi sve nepotrebne kompleksnosti i probleme koje je pružao C++. Zadržavajući isti onaj „osjećaj“ kojeg nudi C++, omogućilo je programerima da se lako prebace na rad u Javi, te da na što brži način postanu produktivni.

2.3 Pouzdanost i sigurnost Programski jezik Java je jezik namijenjen izradi krajnje pouzdanog softwarea. Provjera cijelog

koda prilkom gradnje, kojeg prati još jedna provjera prilikom pokretanja, čine ju veoma pouzdanom, dok rad u njoj vodi programere ka usvajanju pozitivnih i poželjnih navika u programiranju.

Upravljanje memorijom je veoma jednostavno: objekti se stvaraju operatorom new. Rad sa pokazivačima je ukinut. Jednostavna organizacija memorije eliminira cijelu jednu domenu grešaka koje su mučile programere jezika C i C++. Java nudi okoliš u kojem postoji visoka razinu otkrivanja grešaka prilikom izrade, i koji ne dopušta da se velike greške potkradu jednom kada je vaš kod objavljen.

Java je namijenjena okolini u kojem je dijeljenje i distribucija primaran cilj, što znači da je sigurnost od presudne važnosti. Sa sigurnosnim mogućnostima implementiranim u jezik i sustav, Java tehnologija nudi izradu aplikacija koje ne mogu biti napadnute izvana. U mrežnoj tehnologiji, aplikacije napisane u Javi su sigurne od pokušaja upada neautoriziranim kodom, napada virusa i njihovog oštećivanja podataka.

Page 6: Programiranje u Javi i tehnologija Java apleta

6

2.4 Neovisnost o arhitekturi računala Java je dizajnirana da podrži sve aplikacije koje se mogu pojaviti u raznolikim mrežnim

okružjima. To uvjetuje da se aplikacije i programi mogu pokretati na širokom spektru sistemskih arhitektura. Unutar te šarolike grupe, aplikacije se moraju također izvršavati i na različitim operacijskim sustavima te komunicirati sa sučeljima drugih programskih jezika. Da bi izašao na kraj sa svim zahtjevima, Javin kompajler generira posebnu vrstu koda (engl. bytecode) – arhitekturno neovisni format dizajniran da efikasno prenosi kod između različitih sistemskih i programskih platformi. Interpretiran kod rješava problem distribucije kao i problem verzije platforme – isti bytecode će se izvršavati na bilo kojoj platformi.

Arhitekturna neovisnost je samo jedan dio tog neovisnog sustava. Java tehnologija ide korak dalje i pomiče granice neovisnosti strogim definiranjem osnovnog jezika – određuje veličine osnovnih vrsta podataka kao i ponašanje aritmetičkih operatora. Sve to omogućuje da se programi izvršavaju na svim platformama potpuno jednako. Ne postoje razlike u vrstama podataka između sistemske i programske arhitekture.

Takva platforma temelji se na uporabi Java virtualnog stroja(engl. Java Virtual Machine, JVM). To je apstraktna platforma za koju prevodioci Jave mogu generirati kod. JVM je zasnovan na sučelju POSIX. To je industrijski standard koji omogućava interoperabilnost na razini programskog koda. Implementiranje virtualnog stroja na novim arhitekturama nadalje je relativno lagan posao, dok god nove platforme nude osnovne zahtjeve za pokretanje, poput višedretvenosti.

2.5 Performanse Java platforma postiže zavidne performanse koristeći sheme po kojima prevodioc može raditi

punom brzinom bez potrebe za iznova pregledava kod. U pozadini se izvršava tzv. sakupljač smeća

(engl. Automatic Garbage Collector) koji konstantno osigurava dovoljan prostor u memoriji te pritom vodi do boljih performansi. Aplikacije kojima je potrebna velika računalna moć, u smislu da iziskuju puno resursa zbog svoje opsežnosti, mogu biti izvedene na takav način da se dijelovi koda kojima je potrebno dulje vrijeme računanja i izvođenja prepisuju u izvornom kodu te se po potrebi predaju Java platformi.

Ukratko, korisnici imaju osjećaj da se aplikacije izvršavaju glatko i reagiraju brzo iako se u isto vrijeme interpretiraju.

2.6 Prevođenje, procesiranje, dinamičnost Javin prevodioc može izvršiti bilo koji bytecode direktno na bilo kojoj virtualnoj platformi. Na

platformi poput one koja se bazira na Java tehnologiji, faza povezivanja programa je jednostavna i ne zauzima puno resursa. Profitira se nad tradicionalnim načinom izvršavanja koda (kompajliranje, povezivanje, testiranje) koji su zamijenjeni drukčijim procesima (prototipom, eksperimentom i brzim razvojem).

Page 7: Programiranje u Javi i tehnologija Java apleta

7

Moderne mrežne aplikacije, poput web-preglednika namijenjenog internetu, često moraju izvršiti više stvari od jednom – pokrenuti više animacija u isto vrijeme, dok se skida slika ili pjesma a pritom se navigira po sadržaju stranice. Tehnologija višedretvenosti nudi sredstva za izradu aplikacija koje odjednom izvršavaju više dretvi. To rezultira visokom razinom interakcije s krajnjim korisnikom, što je jako bitno.

Dok je Javin kompajler veoma određen i striktan za vrijeme faze kompajliranja, jezik i sistem koji izvršava kod su dinamični u fazi povezivanja. Klase se povezuju samo kada su potrebne. Novi moduli se mogu povezati iz različitih resursa, čak i sa druge lokacije na mreži. U primjeru web-preglednika, interaktivan izvršni kod se može dobaviti sa bilo koje lokacije što omogućuje providno unaprijeđivanje aplikacija. Rezultat su internet usluge koje mogu ostati inovativne i svježe, privući nove kupce i potaknuti razvoj elektroničkog poslovanja putem interneta.

Page 8: Programiranje u Javi i tehnologija Java apleta

8

3. Paradigma objektno - orijentiranog programiranja

Da bi se jezik smatrao objekno orijentiranim, mora posjedovati najmanje 4 karakteristike, opisane u nastavku.

- Enkapsulacija – tehnologija koja implementira sakrivanje i modularnost informacija (apstrakcija).

- Polimorfizam – ista poruka poslana dvoma različitim objektima rezultira različitim efektom, ovisno o prirodi objekta koji ju prima.

- Naslijeđivanje – definiranje novih klasa i metoda po uzoru na postojeće klase, sa ciljem ponovnog korištenja istog koda i bolje organizacije koda.

- Dinamičko povezivanje – objekti mogu doći iz bilo kojeg izvora, čak i sa druge lokacije na mreži, internetu. Ono omogućuje slanje informacija objekatima bez potrebe da se unaprijed zna njihova specifikacija. Pruža maksimalnu fleksibilnost za vrijeme izvođenja programa.

Java u potpunosti posjeduje sve od navedenih mogućnosti i dodaje podršku za vrijeme izvođenja programa što čini proces izrade jednostavnijim.

3.1 Što su to objekti? Najjednostavnije objašnjeno, objektno-orijentirana paradigma jest skup programerskih

metodologija koje se fokusiraju na modeliranje karakteristika i ponašanja objekta u svakodnevnom životu. Doduše, ova se definicija čini pomalo neshvatljivom, pa probajmo ju pobliže objasniti.

Objekti su programski modeli. U svakodnevnom životu okruženi smo objektima: auti, aparati za kavu, životinje, drveća ... Programske aplikacije posjeduju objekte: gumbe, tablice, padajuće izbornike... Svi ti objekti imaju svoja stanja i ponašanja – metode. Njih možemo predstaviti programskim implementacijama koje zovemo objektima i oni isto tako imaju stanja i metode.

U svakodnevnom životu koristimo auto kao sredstvo za prijevoz i njega možemo modelirati u objekt. Auto ima svoja stanja – brzina kojom se kreće, u kojem smjeru ide, potrošnja goriva itd. i ima svoja ponašanja – kreće, staje, skreće, proklizuje, zabija se u drvo.

Page 9: Programiranje u Javi i tehnologija Java apleta

9

Slika 1. Grafički prikaz objekta

Slika 1. se često koristi da bi grafički zorno prikazala objekt. Ilustrira koncept strukture programskog objekta – poput stanice je, unutrašnja jezgra je obavijena vanjskom membranom koja omogućuje kontakt sa vanjskim svijetom.

Ponašanje objekata je definirano metodama. Metode manipuliraju varijablama (podacima) da bi stvorile nova stanja.

Atributi su zapakirani, enkapsulirani podaci unutar objekta. Okruženi su metodama. U nekim slučajevima metode su jedini način kojima drugi objekti mogu pristupiti vrijednostima pohranjenim u varijablama. U Javi, razredi deklariraju varijable na način da ih čine javnima (engl. public), te u tom slučaju varijabli može pristupiti bilo koji objekt.

Pojam stvaranja novog objekta naziva se instanciranje.

3.2 Pojam razreda Razredom se naziva programski kod koji definira stanja (podatke) i metode (ponašanja)

pojedinih objekata koji su nastali iz tog razreda. U Javi, metode i stanja nastaju iz razreda. Stanja su podaci unutar razreda a metode utječu na njih.

Stanja su specifična za neki objekt – svaki objekt nastao iz istog razreda imat će vlastitu kopiju tog stanja. Takva stanja su poznatija kao atributi. Srodno tome, novonastale metode su predodređene da utječu na atribute nastale iz tog razreda i zato su poznatije kao instancirane

metode.

Razred je poput nacrta koji definira kako će se objekt ponašati i kako će izgledati jednom kad ga instanciramo iz definicije koju deklarira klasa. Instanciranjem dobivamo konkretne objekte za tu definiranu klasu. Instancirati možemo koliko god želimo objekata iz iste klase, baš kao što možemo izgraditi koliko god kuća želimo iz istog nacrta.

Primjer deklaracije razreda zvanog Point.

Page 10: Programiranje u Javi i tehnologija Java apleta

10

Deklaracija definira nacrt po kojem nastaju novi objekti.

3.3 Stvaranje novih objekata Jednom kada smo odredili veličinu i oblik razreda Point lako možemo stvoriti novi objekt tipa

Point – instancu razreda Point. U nastavku je pokazano stvaranje novog objekta.

Jednom kada smo instancirali novi objekt Point, možemo pristupiti njegovim atributima.

Ovaj način referenciranja, sličan onome u jeziku C, radi zato što smo stanja unutar definicije razreda Point deklarirali kao javna. Da ih nismo deklarirali javnima, objekti izvana ne bi mogli pristupiti atributima na ovakav direktan način. U tom slučaju bi trebali omogućiti metode pristupa kojima bi postavili i pristupili varijablama. O ovome malo više kasnije.

3.4 Konstruktori Kada deklariramo razred u Javi, možemo deklarirati i konstruktore koji vrše inicijalizaciju

jednom kada instanciramo objekte iz tog razreda.

Metode istog imena kao ime razreda, unutar koda tog razreda, zovu se konstruktori. Kada instanciramo, stvaramo objekt iz razreda Point, poziva se metoda konstruktora koja izvodi potrebnu inicijalizaciju.

Page 11: Programiranje u Javi i tehnologija Java apleta

11

Sljedeći primjer zorno pokazuje način na koji možemo postaviti početne vrijednosti pojedinog instanciranog objekta, ili dopustiti konstruktoru da to učini umjesto nas i postavi ih na početne vrijednosti. Odabir konstruktora koji se koristi ovisi o načinu pozivanja naredbom new.

3.4.1 Varijabla this Što je ova varijabla this koju smo naveli u primjeru malo iznad? This se odnosi na objekt u kojem se trenutno nalazimo. Drugim riječima, odnosi se na objekt

koji prima vrijednost. Koristimo ga da bi pojasnili na koju varijablu ciljamo. U metodi Point koja ima dva parametra, this.x označava atribut x novonastalog objekta, a ne parametar x metode Point. U primjeru, konstruktori su više konvencija unutar razreda Point.

No postoje slučajevi gdje su konstruktori potrebni, pogotovo onda kada poziv objekta zahtjeva instanciranje nekih drugih, dodatnih objekata. Pokažimo to na primjeru gdje deklariranje razreda Pravokutnik koristi dva objekta Point da bi definiralo svoje granice:

U ovom primjeru, konstruktor Pravokutnik je nužno potreban da bi osigurao instanciranje dvaju objekata Point u isto vrijeme kada je i objekt Pravokutnik instanciran, dok bi u suprotnom instanciranjem objekta Pravokutnik došlo do referenciranja nečega što još nije bilo alocirano te ne bi uspjelo.

3.5 Metode i komunikacija među objektima Ako objekt želi od nekog drugog objekta da izvrši neki zadatak ili da odradi njegov dio posla,

onda po prirodi objektno orijentiranog programiranja, taj objekt šalje poruku traženom objektu. Kao odgovor, drugi objekt odabire odgovarajuću metodu za poziv. Pozivi metoda su slični funkcijama u programskom jeziku C ili C++.

Page 12: Programiranje u Javi i tehnologija Java apleta

12

Koristeći paradigmu slanja poruka, možemo izgraditi čitavu mrežu objekata koji će međusobno slati poruke i mijenjati svoja stana. Ova tehnika programiranja je jedan od najboljih načina da bi se modelirao i simulirao rad stvarnih kompleksnih sustava, poput recimo ljudskog mozga.

Slika 2. Grafički prikaz komunikacije između objekata

Deklarirajmo razred Point iz prijašnjeg primjera, tako da su njegovi atributi tipa private i pridodajmo joj metode pristupa – get i set.

Page 13: Programiranje u Javi i tehnologija Java apleta

13

Deklaracije ovih metoda daju naslutiti kako razred Point pruža pristup vanjskom svijetu ka svojim atributima. Ukoliko drugi objekti žele utjecati na atribute razreda Point, sada to moraju učiniti preko metoda pristupa:

Čineći atribute javnima ili privatnima prilikom deklariranja je situacija u kojoj programer mora donijeti odluku – ako učini atribute javnima, izlaže informacije koje se nalaze unutar razreda drugim objektima, što u budućnosti uvjetuje većom efikasnošću koda kao i konzinstencijom izraza. No ako ih učini privatnima, ukoliko se u budućnosti pojavi potreba za izmjenom komponenata razreda to je moguće učiniti na veoma lagan način, bez izmjene trenutnog koda u kojemu se koristi dotični razred.

3.6 Podrazredi i nadrazredi Podrazredi su načini kojima možemo definirati nove, poboljšane objekte po uzoru na već

postojeće. Uzmimo jedan primjer - zebru. Ako želimo stvoriti objekt tipa zebre, primjetimo da je ona poput konja, samo što još dodatno ima i pruge. U poimanju objektno orijentiranog programiranja, stvorili bi novi razred zvan Zebra, koji bi u tom slučaju bio podrazred razreda Konj. U smislu Jave, nastao bi sljedeći kod.

Definicija razreda Konj, kakva god da je, definirati će sve metode sa ciljem da bi opisala ponašanje konja: jede, spava, glasa se, trči, galopira... Jedina metoda koju moramo mijenjati jest metoda koja opisuje krzno. To nam daje prednost da iskoristimo već napisan kod, koji čini sav posao za nas. Ne moramo „izmišljati kotač“, ili u ovom slučaju, krzno.

Ključna riječ extends govori prevodiocu Jave da je razred Zebra podrazred razreda Konj. U tom slučaju, razred Konj se naziva nadrazredom.

Pogledajmo primjer izrade podrazreda, koji je varijanta našeg razreda Point iz prijašnjih primjera. Stvoriti ćemo trodimenzionalnu verziju razreda Point, zvanog Trostruka.

Page 14: Programiranje u Javi i tehnologija Java apleta

14

Primjetimo da razred Trostruka dodaje novi atribut zbog koordinate z te točke. Atributi x i y su naslijeđeni iz originalnog razreda Point, te zbog toga nema potrebe da ih deklariramo u novonastalom razredu Trostruka. Svejedno, primjetimo da smo morali deklarirati varijable razreda point Point kao protected umjesto private kao u dosadašnjim primjerima. Da smo ih ostavili privatnima, svi podrazredi ne bi bili u mogućnosti pristupiti tim varijablama i prevođenje programa ne bi uspjelo.

Svi razredi u Javi na poslijetku naslijeđuju iz početnog razreda, u našem slučaju razreda Object. On je izvorni razred. Novi razredi koje deklariramo jednostavno nadodaju različite funkcionalnosti postojećim nadklasama. Što se dalje odmičemo po hijerarhiji od onog izvornog razreda, to se naši objekti, nastali iz novih podrazreda, sve više konkretiziraju, specijaliziraju.

Podrazredi nam omogućuju generičko korištenje koda koji je otprije proizveden i što je još bitnije, koji je testiran i zasigurno radi. Jednostavno nadodajemo ili mijenjamo dijelove razreda koji nam daju specifično ponašanje. Na taj način dobivamo iskoristiv kod – štedimo na dizajnu, vremenu izrade i testiranja koda.

3.7 Dozvole pristupa Kada deklariramo novi razred u Javi, možemo odrediti razinu pristupa njezinim članovima –

odnosno atributima i metodama. Java nudi četiri razine pristupa od kojih tri razine moraju biti eksplicitno navedene.

- Public – javna, gdje su članovi deklarirani ovim načinom na raspolaganju bilo kojim drugim razredima, bilo gdje.

Page 15: Programiranje u Javi i tehnologija Java apleta

15

- Protected – zaštićena, gdje su članovi deklarirani na ovaj način pristupačni su samo podrazredima onom razredu u kojem se dogodila deklaracija i nigdje drugdje.

- Private – privatna, članovima deklariranim na ovaj način se može pristupiti samo iz razreda u kojem su deklarirani i nigdje drugdje, pa čak niti iz podrazreda nastalih iz tog razreda.

3.8 Razredni atributi i razredne metode Java prati konvencije drugih objektno-orijentiranih jezika, te pruža mogućnost stvaranja

razrednih metoda i atributa. U normalnom slučaju, varijable koje definiramo u definiciji razreda su obični atributi – u svakom instanciranom objektu nastalom iz tog razreda, nalazi se po jedna takva varijabla. Razredni atribut, u drugu ruku, je lokalan za sam razred – samo je jedna kopija te varijable i dijele je svi objekti koji su instancirani iz tog razreda.

Da bi deklarirali razredne atribute i metode u Java programima, moramo ih deklarirati kao static.

Kratak kod u nastavku ilustrira deklaraciju razrednih atributa.

Razred Pravokutnik deklarira dva razredna atributa tipa static, kako bi definirao verziju i reviziju tog razreda. Svaka instanca razreda Pravokutnik koju stvorimo dijelit će upravo ove atribute. Obratimo pozornost da su atributi također definirani kao final, zato što želimo da budu konstantni.

Po uzoru na razredne atribute, razredne metode su zajedničke za cijeli razred. Kada bismo koristili razredne metode?

Onda kada imamo ponašanje zajedničko za sve objekte nastale iz tog razreda. Pretpostavimo da imamo razred Prozor. Korisna informacija koju možemo saznati iz razreda jest na primjer koliko je prozora otvoreno, a koliko zatvoreno. Ovu informaciju dijele sve instance Prozora, a dostupna je preko informacija dobivenih od drugih instanci. Zbog toga je potrebno da imamo samo jednu razrednu metodu koja će vraćati broj otvorenih prozora.

Generalno, razredne metode mogu utjecati samo na razredne atribute. Razredne metode ne mogu pristupati običnim atributima, niti mogu pozivati njihove metode. Kažemo generalno, zato što je moguće poslati referencu na objekt razrednoj metodi, koja bi tada imala pristup javnim atributima tog objekta, baš kao što bi i mogla pozivati njegove metode. U svakom slučaju, navika je izvršavati operacije nad razredima na nivou razreda a izvršavati operacije nad objektima na nivou objekata.

Poput razrednih atributa, možemo deklarirati razredne metode na način da ih definiramo kao static.

Page 16: Programiranje u Javi i tehnologija Java apleta

16

3.9 Osvrt na dosad naučeno Vidjeli smo osnovne koncepte i paradigmu objektno-orijentiranog programiranja, kao i

implementaciju u Javi. Ponovimo sve u par kratkih natuknica.

- Razredi definiraju predloške po kojima se instanciraju,stvaraju različiti konkretni objekti. - Atributi sadržavaju stanja pojedinog objekta. - Objekti komuniciraju međusobnim slanjem poruka. Objekt odgovara na poruku

pozivanjem određene metode koju izvršava. - Metode definiraju ponašanja objekata instanciranih iz razreda. Putem tih metoda se vrši

manipulacija atributa. Za razliku od regularnih proceduralnih jezika, razredi u objektno orijentiranom jeziku mogu imati metode istih imena kao drugi razredi. Zadani objekt odgovara na poruku na način određen prirodom tog objekta, što pruža polimorfno ponašanje.

- Podrazredi pružaju sredstva pomoću kojih novi razred naslijeđuje atribute kao i metode iz već definiranog razreda. Novonastao razred može dodavati nove varijable (dodatno stanje), nove metode (novo ponašanje), ili može „pregaziti“ metode svojeg nadrazreda (različito ponašanje). Podrazredi omogućuju ponovno korištenje koda.

Zajedno, koncepti objektno orijentiranog programiranja čine moćnu i jednostavnu paradigmu, namijenjenu programerima da dijele i ponovno koriste napisan kod i da grade na temelju tuđeg koda.

Sada kada znamo osnovnu teoriju iza objektno orijentiranog programiranja, kao i sintaksu programskog jezika Java, započnimo sa uvodom u aplete te krenimo ka cilju, odnosno ka izradi konkretnih primjera apleta.

Page 17: Programiranje u Javi i tehnologija Java apleta

17

4. Apleti Java programi dolaze u više različitih inačica, a najčešće izvedbe su samostalne aplikacije. No, u

svijetu gdje je internet zavladao, korištenje apleta postaje sve češće.

Aplet je komad programskog koda koji se odvija pod nadzorom web-preglednika, za razliku od aplikacija kojima je potreban interpreter. Apleti se često koriste da bi poboljšali interaktivnost internet stranice te ponudili sadržaj namijenjen klijentima i krajnjim korisnicima. Appleti se vrte u svojem vlastitom okviru i mogu prikazivati grafiku, primati ulaze sa komponenata GUI-a (engl. Graphic User Interface) pa čak i otvarati internet konekcije i slati podatke. Zbog potencijalne opasnosti prilikom izvođenja apleta, od strane vanjskih izvora, većina internet preglednika ograničava pristup podacima i nameće dodatna ograničenja appletima (npr. da se aplet može spojiti samo na korisnika sa kojeg je aplet skinut..).

No unatoč ograničenjima, ovi programski alati se koriste posvuda, sastavni su dio širokog spektra internet stranica i sigurno ste ih koristili a da pritom niste niti bili svjesni toga. U nastavku ćemo pokazati kako je jednostavno i lako kreirati aplet, implementirati ga na našu internet stranicu baš kao i koristiti ga.

Jednom kada smo spremni za to, krenimo sa izradom našeg prvog apleta.

Trebati će nam Java prevodioc kojeg imamo od prije – Java Development Kit (JDK), a ako to nije slučaj, može ga se skinuti sa stranice:

http://www.oracle.com/technetwork/java/index.html

Sada smo potpuno spremni. Pa krenimo!

Page 18: Programiranje u Javi i tehnologija Java apleta

18

4.1 Hello world! aplet

Aplet započinjemo ubacivanjem triju paleta: java.awt, java.applet te javax.swing. Zatim nasljeđujemo java.swing.JApplet. Paleta java.awt predstavlja „Abstract Windowing Toolkit“, u kojemu se nalaze razredi koji daju apletima i samostojećim aplikacijama mogućnost uređivanja grafike.

Da bi ispisali pozdrav, moramo nadjačati metodu paint. Metoda paint se bavi prikazivanjem grafike na našem apletu – promijeniti ćemo ju da ispisuje našu poruku. Kao parametre, uzima grafičke objekte, g.*. Pomoću g.setColor i g.setBackground namještamo boju slova na plavu, a pozadinu apleta na bijelu. Na kraju, pomoću metode drawString ispisujemo željeni tekst.

U apletima, koordinatni sustav se bazira na početnoj točki (0,0) koja se nalazi u gornjem lijevom kutu apleta. Parametrima koje smo poslali metodi g.drawString (0, getHeight() - 5) počeli smo s ispisom s lijeve strane i blizu dna apleta.

Jednom kada je prevodioc obradio kod apleta, možemo ga implementirati na web stranici te je krajnji rezultat vidljiv na slici 3.

Page 19: Programiranje u Javi i tehnologija Java apleta

19

Slika 3. Implementacija apleta HelloWorld na jednostavnu internet stranicu

I to je to!

Dobili smo željeni rezultat. Jednom kada shvatimo da su mogućnosti beskonačne, sve što treba je pustiti mašti na volju. U nastavku ćemo pokazati još nekoliko osnovnih vrsti apleta.

4.2 Ideja događaja Možemo svoj aplet natjerati da odgovara na akcije korisnika, na način da nadjačamo metode

zadužene za to unutar apleta. Postoji niz različitih metoda za registriranje događaja, baš kao što ćemo pokazati u sljedećem primjeru.

U njemu, aplet će pokazivati tekst koji će se ovisno o događaju mijenjati. Korisnik može pomaknuti svoj kursor iznad apleta, kliknuti na njega ili maknuti kursor izvan apleta.

Kada se radi o događajima, komponentama se daje do znanja da je došlo do neke radnje tako da se pozivaju metode u skladu sa određenim zapisom. Apleti mogu nadjačavati te metode – nudeći

Page 20: Programiranje u Javi i tehnologija Java apleta

20

tako poseban način odgovaranja na korisnikove akcije. Baš kako je pokazano u donjem primjeru, gdje nadjačana metoda mouseMove odgovara na događaje potaknute od strane korisnika.

U ovoj metodi mijenjamo vrijednost varijable (message) i pridodajemo joj vrijednosti u ovisnosti o događaju. Zovemo metodu repaint, te se naš tekst pokazuje korisniku. Ovaj primjer appleta odgovara na tri različita događaja – mouseMove, MouseExit i mouseDown, no postoje i drugi događaji na koje komponente mogu reagirati.

Slika 4. pokazuje neke od bitnijih, te njihove pripadajuće prototipove.

mouseDown (Event evt, intx, inty)

mouseUp (Event evt, intx, inty)

mouseEnter (Event evt, intx, inty)

mouseExit (Event evt, intx, inty)

mouseMove (Event evt, intx, inty)

mouseDrag (Event evt, intx, inty)

gotFocus (Event evt, Object what)

lostFocus (Event evt, Object what)

keyDown (Event evt, int key)

keyUp (Event evt, int key)

action (Event evt, Object what)

Slika 4. Tablica događaja i pripadajućih prototipova

Svaki događaj mora vratiti vrijednost true ili false.. Ako smo na primjer obradili event keyDown, možemo očitati vrijednost pritisnute tipke, te vratiti true ne bi li netko drugi obradio taj isti događaj.

U nastavku je kod primjera.

Page 21: Programiranje u Javi i tehnologija Java apleta

21

import java.awt.*;

import java.applet.*;

import javax.swing.*;

public class AWTEventDemo extends Applet {

private String message = "Waiting for events...";

/* podrazumijevani konstruktor koji poziva nadrazred */

public AWTEventDemo() {

super();

}

/* metoda koja se pokreće prilikom prvog pokretanja apleta */

public void init() {

setBackground(Color.white);

}

/* nadjačana metoda paint */

public void paint (Graphics g){

g.setBackground (Color.white );

g.setColor (Color.blue );

g.drawString ("Hello world!", 0, getHeight() - 5);

}

/* metode za obradu događaja */

public boolean mouseEnter(Event evt, int x, int y){

/* postavi poruku */

message = "mouseEnter - x:" + x + " y: " + y;

/* iznova nacrtaj aplet */

repaint();

/* dojavi da je događaj obrađen */

return true;

}

public boolean mouseExit(Event evt, int x, int y){

message = "mouseExit - x:" + x + " y: " + y;

repaint();

return true;

}

public boolean mouseMove(Event evt, int x, int y){

message = "mouseMove - x:" + x + " y: " + y;

repaint();

return true;

}

public boolean mouseDown(Event evt, int x, int y){

message = "mouseDown - x:" + x + " y: " + y;

repaint();

return true;

}

}

Page 22: Programiranje u Javi i tehnologija Java apleta

22

Na slikama u nastavku možemo vidjeti kako izgleda aplet jednom kada ga implementiramo na stranicu.

Slika 8. Prikaz djelovanja apleta.

4.3 Komponente korisničkog sučelja

4.3.1 Gumbi Gumbi su korisni kada aplikacije mora primiti posebne instrukcije od korisnika prije nego

nastavi sa radom. Na primjer, kada korisnik mora unijeti neke podatke te nakon toga želi izvršiti neku radnju, tipka se može koristiti da kaže apletu da nastavi sa radom jednom kada je unos podataka gotov (npr. registracija korisnika, slanje pošte ...).

Slika 9. (slučaj a) Slika 10. (slučaj b) Slika 11. (slučaj c)

Slika 11. Prikaz djelovanja gumba.

Page 23: Programiranje u Javi i tehnologija Java apleta

23

4.3.2 Padajući izbornik Padajući izbornik zauzima veoma malen prostor na ekranu a korisniku može ponuditi niz opcija

koje korisnik može odabrati. Nedostatak ove komponente je to da se sve ponuđene opcije ne vide odmah već je potrebno kliknuti na izbornik. No na taj način se štedi prostor, ukoliko je to potrebno.

Slika 12. (slučaj a) Slika 13. (slučaj b) Slika 14. (slučaj c)

Slika 11. Prikaz djelovanja padajućeg izbornika.

4.3.3 Lista Komponente unutar liste izvršavaju praktički istu funkciju kao i padajući izbornici. Opcije se

mogu dodavati a vrijednost trenutno odabrane opcije se može vratiti. No, liste zauzimaju veći prostor na ekranu. To nekad može biti korisno jer se više stvari može ponuditi korisniku u isto vrijeme, bez potrebe da se klikne na komponentu. Moguće je i ostvariti višestruki izbor unutar liste.

Slika 15. (slučaj a) Slika 16. (slučaj b)

Slika 17. Prikaz djelovanja liste.

4.3.4 Tekstualno polje Ovaj aplet je koristan za prikupljanje kratkih informacija od korisnika. Ograničen je na unos

podataka u jedan red (za višestruke redove koristi se tekstualni prostor). Kad god korisnik upiše podatak u polje i stisne enter ili promijeni fokus mišem, polje generira event koji se onda može obraditi po želji.

Slika 18. (slučaj a) Slika 19. (slučaj b) Slika 20. (slučaj c)

Page 24: Programiranje u Javi i tehnologija Java apleta

24

Slika 21. Prikaz djelovanja tekstualnog polja.

4.3.5 Tekstualni prostor Ova komponenta je korisna kada od korisnika treba primiti veliku količinu informacija ili kada

treba prikazati velik broj podataka koji se naknadno mogu uređivati i mijenjati. Zauzima više prostora na ekranu nego tekstualno polje ali štedi dosta prostora pošto podržava klizače sa strane.

Slika 22. (slučaj a) Slika 23. (slučaj b)

Slika 24. (slučaj a)

Slika 25. Prikaz djelovanja tekstualnog prostora.

Page 25: Programiranje u Javi i tehnologija Java apleta

25

5. Zaključak Programski jezik Java je u vrijeme nastajanja bio prava senzacija i mislim da sa pravom

možemo reći da i dan danas kotira visoko u svijetu informatike. Njegova svestranost, jednostavnost, sveobuhvatnost i pouzdanost učinile su ga jednim od najzastupljenijih programskih jezika uopće.

Java se koristi posvuda iako često mi toga niti nismo svjesni – na mobilnim aparatima, igraćim konzolama, širom preko interneta za pružanje raznih sadržaja, na serverima u svrhu pružanja usluga korisnicima. Mogućnost da se kod programiran u jeziku Java izvršava na bilo kojoj platformi učinila je svoje, te se Java ukorijenila u specifične grane informatike za koje je definitivno izbor oko kojeg se ne dvoumi.

Potpuna orijentacija ka objektnoj paradigmi je od Jave učinila moderan jezik, spreman da se bori sa nekim novijim objektno-orijentiranim jezicima. Naravno, Java ima svoje mane - naspram nekih jezika je donekle sporija ali i tome se doskočilo kroz povijest. Java svoje nedostatke nadoknađuje tehničkim mogućnostima. Programiranje u Javi putem objekata čini programeru život lakšim, sintaksa je pojednostavljena a način pisanja koda je dotaknuo apstraktnu razinu te dodatno približio programiranje ka ljudskom načinu razmišljanja.

Apleti, kao zasebna cjelina unutar cijelog programskog jezika, nude tržištu nešto novo. Čine svakodnevni život uz računalo prije svega interesantnijim, zabavnijim i potpunijim. Posao onih koji se bave programiranjem olakšavaju i čine ga zanimljivijim. Njihov razvoj je neograničen, ovisi isključivo o ideji pojedinca da ostvari željenu zamisao. Činjenica da svatko može napraviti funcionalan aplet je fenomenalna te danas postoje razni alati za njihovu brzu izradu i razvoj.

Page 26: Programiranje u Javi i tehnologija Java apleta

26

6. Literatura

http://www.javacoffeebreak.com/java101/java101.html

http://download.oracle.com/javase/tutorial/deployment/applet/index.html

http://download.oracle.com/javase/tutorial/java/concepts/index.html

http://java.sun.com/docs/white/langenv/index.html

http://en.wikipedia.org/wiki/Object-oriented_programming

http://en.wikipedia.org/wiki/Java_bytecode

http://en.wikipedia.org/wiki/Java_%28programming_language%29

Page 27: Programiranje u Javi i tehnologija Java apleta

27

7. Sažetak Java je svijetu predstavila nešto novo i pritom postavila standard. Ubrzo je postala odabir

mnogih svjetskih programera kao i trvrtki koje su svoje proizvode htjeli objaviti na internet. Svestranost i kompatibilnost sa svim platformama joj je omogućila konkurentnost na svjetskom tržištu. Unatoč brojnim drugim programskim jezicima i dalje uspjeva ostati u samome vrhu. Kvalitete poput sigurnosti, pouzdanosti, jednostavnosti i neovisnosti o platformi ju čine kompletnim okružjem za razvoj i prodaju današnje programske podrške.

Objektno-orijentirano programiranje je nastalo sa ciljem da približi čovjeka računalnom svijetu. Omogućuje apstraktno pisanje programskog koda koji teži što boljem opisivanju stvari iz svijeta kakvog ga poznajemo. Objekti, metode i atributi omogućuju izražavanje programera na način koji prije nije bio moguć. Ponovno iskorištavanje napisanog koda je postalo glavni način stvaranja kompleksnih aplikacija a modularnost koju objektno-orijentirano programiranje implementira omogućuje upravo to. U svijetu računalne znanosti ono predstavlja izniman skok unaprijed i kao takvo se danas podrazumijeva za standard programiranja.

Apleti su aplikacije koje se izvršavaju na strani klijenata. Njihova svestranost omogućuje laganu implementaciju i korištenje. Pružaju korisnicima visoku razinu interakcije i vizualno su atraktivni. Implementacijom u HTML kodu se postiže jednostavna prezentacija apleta na internetskim stranicama. Aplete je lagano stvarati. Odgovaranje na događaje nudi mogućnost obrade korisnikovih radnji i podataka te je jednostavno programirati željene radnje. Apleti se danas koriste na brojnim stranicama širom interneta i zasigurno će se taj trend i dalje nastaviti.