Laboratorijske vježbe iz kolegija “Programiranje u programskoj jeziku Java” 2006/2007
Stranica 1/13
Politehnički specijalistički diplomski stručni studij Tehničko veleučilište u Zagrebu
1. Laboratorijske vježbe 1.1. UPOZNAVANJE S JAVA RAZVOJNIM OKRUŽENJEM Svrha laboratorijske vježbe je upoznavanje s razvojnim okruženjem koje će se koristiti prilikom rješavanja zadataka, te savladavanje osnovnih akcija kao što su unos, prevođenje i izvođenje jednostavnih gotovih primjera. Zadaci za laboratorijske vježbe rješavati će se pomoću razvojnog alata Eclipse SDK (engl. Software Development Kit), alata zajednice otvorenog koda (engl. open source community) koji se može besplatno download-ati sa web stranica www.eclipse.org. Osim njega, za obavljanje laboratorijskih vježbi potrebno je izvršno okruženje za Javu (engl. Java Runtime Environment) što se također može download-ati sa stranica http://java.sun.com/. Radna površina razvojnog alata Eclipse SDK izgleda kao na slici 1-1. Na lijevoj strani označen je Package explorer pogled (engl. view) na kojem se vidi naziv Java projekta (MyFirstJavaProject), mapa za spremanje izvornog koda (src), paket hr.tvz.programiranje.java.labosi.prvi, te datoteka HelloWorld.java koja sadržava programski kod. Sadržaj datoteke, odnosno tijelo klase, može se vidjeti na radnoj površini za pisanje programskog koda. Također se može vidjeti i inačica JRE-a.
Slika 1-1. Radna površina razvojnog alata Eclipse SDK © Autor: Aleksander Radovan, dipl. ing., e-mail:
[email protected]
Laboratorijske vježbe iz kolegija “Programiranje u programskoj jeziku Java” 2006/2007
Stranica 2/13
Politehnički specijalistički diplomski stručni studij Tehničko veleučilište u Zagrebu
Ispod radne površine za pisanje programskog koda nalazi se Console pogled u kojem se može vidjeti ispis programa. U klasi HelloWorld koristi se naredba System.out.println() koja ispisuje poruku “Hello world!”. Na desnoj strani označen je Outline pogled na kojem se mogu vidjeti sve metode i klase koje se koriste u trenutno prikazanoj datoteci. Ovaj pogled je vrlo koristan za pretraživanje ukoliko u datoteci postoji veliki broj metoda ili klasa. Ukoliko želimo kreirati radno okruženje (engl. workspace) prikazano na slici 1-1, prvo moramo pokrenuti Eclipse SDK. Nakon toga moramo izabrati radno okruženje u kojemu želimo kreirati novi projekt. U slučaju na slici 1-2. radno okruženje se nalazi na lokaciji “C:\eclipse-SDK\laboratorijskeVjezbe”.
Slika 1-2. Odabir radnog okruženja
Nakon uspješnog otvaranja radnog okruženja, pojavljuje se radna površina sličan onoj koja je prikazana na slici 1-1. Ukoliko je zadano radno okruženje koje nije postojalo otprije, umjesto radne površine sa slike 1-1, pojavljuje se “Welcome” ekran koji služi za upoznavanje s Eclipse SDK okruženjem. Ako se taj prozor zatvori pritiskom na “x”, opet se dobije radna površina sličan onoj koja je prikazana na slici 1-1. Nakon što smo dobili radnu površinu koja je prikazana na slici 1-1, može se kreirati projekt u kojem će se nalaziti programski kod. Iako Eclipse SDK podržava i druge vrste projekata, za potrebe laboratorijskih vježbi potrebno je kreirati Java projekt. To je moguće napraviti pomoću opcije File -> New -> Project... Nakon toga na ekranu pojavljuje se prozor za odabir tipa projekta na kojem je moguće odabrati Java Project (slika 1-3). Pritiskom na tipku Next pojavljuje se prozor na kojem je moguće specificirati i ostala svojstva projekta (slika 1-4) kao što je kreiranje novog projekta u radnom okruženju ili kreiranje projekta iz postojećeg izvora, izbor JRE-a koji će koristiti projekt, te izgled strukture samog projekta. Pretpostavljene (engl. default) postavke ne moraju se mijenjati za potrebe laboratorijskih vježbi pa je nakon upisivanja imena projekta u polje Project name dovoljno pritisnuti tipku Finish.
© Autor: Aleksander Radovan, dipl. ing., e-mail:
[email protected]
Laboratorijske vježbe iz kolegija “Programiranje u programskoj jeziku Java” 2006/2007
Stranica 3/13
Politehnički specijalistički diplomski stručni studij Tehničko veleučilište u Zagrebu
Slika 1-3: Kreiranje novog projekta
Slika 1-4: Određivanje imena projekta
Svaki dobro organizirani projekt svoj sadržaj ima podijeljen u logičke cjeline. Zbog toga je dobro da se cijeli programski kod smjesti u mapu koja je namijenjena baš za to. Eclipse SDK posjeduje vrstu mape koja je predviđena za spremanje programskog koda, a to je Source Folder. Može se kreirati tako da se na simbolu novokreiranog Java projekta unutar Package explorer pogleda desnim klikom miša odabere opcija New -> Source Folder nakon čega se pojavljuje prozor na slici 1-5.
Slika 1-5. Kreiranje mape za spremanje programskog koda
Poslije odabira prikladnog imena za mapu u koju će se spremati programski kod, potrebno je pritisnuti Finish. © Autor: Aleksander Radovan, dipl. ing., e-mail:
[email protected]
Laboratorijske vježbe iz kolegija “Programiranje u programskoj jeziku Java” 2006/2007
Stranica 4/13
Politehnički specijalistički diplomski stručni studij Tehničko veleučilište u Zagrebu
Jedna od vrlo važnih karakteristika programskog jezika Java je organizacija datoteka s programskim kodom u pakete (engl. package). Paketi su logičke cjeline koje sadržavaju datoteke s programskim kodom i pomoćnih datoteka. Naziv paketa sastoji se od nekoliko dijelova odijeljenim točkama, gdje svaki od njih jednoznačno označava neku logičku cjelinu. Na primjer, ukoliko želimo kreirati paket za datoteke s programskim kodom za prvu laboratorijsku vježbu, prvo je potrebno odrediti te logičke cjeline. U paketu će se nalaziti programski kod za labose iz programiranja u Javi, prvi zadatak, a obrazovna ustanova je Tehničko veleučilište iz Zagreba (Hrvatska). Bold-ane logičke cjeline se koriste u kreiranju imena paketa: hr.tvz.programiranje.java.labosi.prvi. Važno je napomenuti da naziv paketa mora sadržavati isključivo mala slova abecede. Prema tom nazivu paketa vrlo je lako ustanoviti koja ustanova je autor tog koda, u koja je namjena programskog koda. Nakon određivanja naziva paketa, klikom desne tipke miša na prethodnu kreiranu mapu za spremanje programskog koda i odabiranjem opcije New -> Package otvara se dijalog za kreiranje paketa na slici 1-6. Upisivanjem imena paketa i pritiskom na tipku Finish kreira se paket.
Slika 1-6. Kreiranje paketa
Na kraju preostaje još samo kreiranje datoteke s programskim kodom, odnosno klase, koja će se nalaziti u prethodno kreiranom paketu. Najjednostavniji primjer programskog koda je tzv. Hello world program koji korisniku ispisuje jednostavnu pozdravnu poruku. Prije kreiranja same klase potrebno je odrediti njen naziv. Ukoliko je namjenu klase nužno opisati u nekoliko riječi, koristi se konvencija imenovanja koja ne sadrži prazna mjesta, već svaka nova riječ počinje velikim slovom. Samo ime klase također mora započeti velikim slovom. Na primjer, ako želimo kreirati klasu koja će generirati vozni red tramvaja, nazvat ćemo je GeneratorVoznogRedaTramvaja. Ukoliko želimo imenovati klasu koja će korisniku ispisati pozdravnu poruku “Hello world!”, nazvat ćemo je HelloWorld. Slično kao i do sada, dijalog za kreiranje klase može se aktivirati klikom desne tipke miša na prethodno kreirani paket i odabirom opcije New -> Class. Na slici 1-7. prikazan je dijalog za kreiranje klase, a sadrži niz postavki od kojih su najvažnije ime klase koja se želi kreirati (u našem slučaju je to HelloWorld), superklasa (engl. Superclass) koju će nasljeđivati naša nova klasa, te sučelja (engl. Interfaces) koja će klasa implementirati. Također je moguće odrediti koje metode će klasa sadržavati (označavanjem checkbox elemenata). U našem primjeru je potrebna metoda public static void main(String args[]), jer će to ujedno biti i klasa koju ćemo © Autor: Aleksander Radovan, dipl. ing., e-mail:
[email protected]
Laboratorijske vježbe iz kolegija “Programiranje u programskoj jeziku Java” 2006/2007
Stranica 5/13
Politehnički specijalistički diplomski stručni studij Tehničko veleučilište u Zagrebu
izvršiti da bi dobili ispis pozdravne poruke na ekran. Nakon upisivanja imena klase, te označavanja opcije za kreiranje main metode, pritisak na tipku Finish kreira se klasa u paketu i pojavljivanje same klase u radnoj površini na slici 1-1.
Slika 1-7. Kreiranje klase
Posljednji korak u kreiranju projekta je upisivanje koda u novootvorenu klasu HelloWorld. Čarobnjak za kreiranje klase (engl. Class creation wizard) unaprijed je kreirao većinu potrebnog programskog koda pa ga je potrebno dopuniti s dva retka unutar main metode: package hr.tvz.programiranje.java.labosi.prvi; public class HelloWorld { /** * @param args */ public static void main(String[] args) { String poruka = "Hello world!"; System.out.println(poruka); } }
Nakon izmjena potrebno je spremiti promjene (opcija File -> Save) i pokrenuti klasu. To je moguće napraviti klikom desne tipke miša na samoj klasi i odabirom opcije Run As - > 1 Java Application. Čim završi izvršavanje programskog koda, u Console pogledu može se vidjeti ispis pozdravne poruke kao na slici 1-1. © Autor: Aleksander Radovan, dipl. ing., e-mail:
[email protected]
Laboratorijske vježbe iz kolegija “Programiranje u programskoj jeziku Java” 2006/2007
Stranica 6/13
Politehnički specijalistički diplomski stručni studij Tehničko veleučilište u Zagrebu
1.2. KORIŠTENJE NAPREDNIH OPCIJA U ovom dijelu opisuju se neke napredne opcije koje se također mogu iskoristiti tijekom razvijanja aplikacije i mogu uvelike poboljšati i olakšati aktivnosti programera (engl. developer). 1.2.1. Importiranje postojećih projekata u korisničko radno okruženje Osim kreiranja projekata od samog početka, Eclipse SDK podržava i opciju importiranja postojećih projekata u korisničko radno okruženje. To je moguće postići pomoću opcije Import->General ->Existing Projects into workspace, koja se prikazuje ukoliko se pritisne desna tipka miša na površini Package explorer pogleda (dijalog je isti kao i na slici 1-3, samo što je potrebno odabrati drugu opciju). Nakon odabira spomenute opcije, prikazuje se dijagol kao na slici 1-8. Na njemu potrebno je pomoću Browse tipke pronaći mapu projekta na lokalnom računalu (u našem slučaju to je mapa “C:\eclipse-SDK\laboratorijskeVjezbe\Factoriel”).
Slika 1-8. Dodavanje postojećeg projekta u korisničko okruženje
Nakon završetka procesa importiranja projekta, na njemu je moguće obavljati sve operacije kao i s projektima koji su kreirani “korak po korak” od samog početka. 1.2.2. Ugrađivanje dodataka Eclipse SDK u svojoj osnovnoj inačici (engl. version) nema ugrađene posebne opcije, već je ostavio mogućnost korisnicima da sami proširuju svoje radno okruženje u skladu s potrebama, željama i navikama. Zbog toga postoji opcija ugrađivanja dodataka (engl. plugins) koja je krajnje jednostavna. Svaki dodatak ima svoju web stranicu i može se besplatno download-ati, a proces © Autor: Aleksander Radovan, dipl. ing., e-mail:
[email protected]
Laboratorijske vježbe iz kolegija “Programiranje u programskoj jeziku Java” 2006/2007
Stranica 7/13
Politehnički specijalistički diplomski stručni studij Tehničko veleučilište u Zagrebu
ugrađivanja sastoji se u kopiranju download-anih datoteka na određenja mjesta unutar mape u kojoj je instaliran sam Eclipse SDK. Dodaci se mogu sastojati od features i plugins dodataka, o čemu ovisi na koju lokaciju je potrebno kopirati datoteke. Ako je Eclipse SDK instaliran u mapu “C:\eclipse-SDK”, onda se vrste dodataka moraju razmjestiti na lokacije “C:\eclipse-SDK\features” te “C:\eclipse-SDK\plugins”. Upute za instaliranje samih dodataka mogu se pronaći na lokacija gdje se i download-aju. Nakon što je kopiranje završilo, potrebno je samo ponovno pokrenuti (engl. restart) Eclipse SDK razvojno okruženje i time je proces ugrađivanja dodataka završen. Za potrebe laboratorijskih vježbi ugradit će se dva dodatka: Checkstyle i AnyEdit. Checkstyle dodatak je vrlo koristan za početnike u Javi jer potiče programera da programski kod kreira u skladu s konvencijama u pisanju koda. Dodatak samo upozorava programera ukoliko je prekršio neko od pravila pisanja koda, dok je sam programski kod ispravan i može se izvoditi. Kod razvijanja nekog projekta vrlo je bitno da je programski kod vrlo pregledan, dokumentiran i uredan, te da omogućuje lako snalaženje i uključivanje novih članova projektnog tima. Checkstyle dodatak svojim upozorenjima unaprijeđuje baš taj segment programerskog posla – nasljedivost koda dovodi se do jedne zavidne razine. AnyEdit dodatak koristan je kad se koristi u paru s Checkstyle dodatkom, ali i u konfiguriranju postavki editora za pisanje koda. Na primjer, Checkstyle potiče korisnika da umjesto tabulatora (tipke TAB) koristi razmak za strukturiranje koda, dok AnyEdit radi pretvorbu tabulatora u prazna mjesta i time olakšava autoru koda samo strukturiranje i u slučaju ako je naviknuo korištenje tabulatora. Instalacija navedenih dodataka započinje pronalaženjem web stranica na kojima se oni nalaze. Kako ne postoji neka središnja web stranica na kojoj se mogu dohvatiti svi dodaci, najbolje je koristiti pretaživač (npr. Google) s ključnim riječima “eclipse plugin Checkstyle”, odnosno “eclipse plugin Anyedit”. Na pronađenim stranicama potrebno je pronaći download sekciju i spremiti dodatak na lokalno računalo. Dodatak za Checkstyle dolazi u obliku arhivirane datoteke naziva sličnog com.atlassw.tools.eclipse.checkstyle_4.3.0-bin.zip (ovisno o samoj inačici dodatka), u kojoj se nalaze dvije mape: features i plugins. Sadržaj tih mapa (a ne cijele mape) potrebno je kopirati na lokacije “C:\eclipse-SDK\features”, odnosno “C:\eclipse-SDK\plugins”. Dodatak za AnyEdit dolazi u obliku samo jedne datoteke s imenom de.loskutov.anyedit.AnyEditTools_1.7.0.jar koju je potrebno kopirati u mapu “C:\eclipse-SDK\plugins”. Nakon toga potrebno je samo ponovno pokrenuti Eclipse SDK razvojno okruženje. Nakon instalacije potrebno je konfigurirati dodatke. Što ti tiče Checkstyle dodatka, potrebno ga je najprije aktivirati. To je moguće učiniti pritiskom desne tipke miša na površini Package explorer pogleda i odabirom opcije Properties. Na dijalogu koji je pojavljuje potrebno je s lijeve strane odabrati opciju Checkstyle, te označiti checkbox uz koji stoji tekst Checkstyle active for this project. Nakon toga je potrebno pritisnuti tipku Ok (slika 1-9) čime su izabrane konvencije koje je definirao sam Sun.
© Autor: Aleksander Radovan, dipl. ing., e-mail:
[email protected]
Laboratorijske vježbe iz kolegija “Programiranje u programskoj jeziku Java” 2006/2007
Stranica 8/13
Politehnički specijalistički diplomski stručni studij Tehničko veleučilište u Zagrebu
Slika 1-9. Konfiguriranje Checkstyle dodatka
Nakon aktiviranja Checkstyle dodatka potrebno je pravila zadanih konvencija primijeniti na programski kod. Eclipse SDK automatski prepoznaje potrebu za rekompajliranje (engl. recompile, rebuild) i upozorava korisnika na potrebu obavljanja te akcije (slika 1-10). Potvrdan odgovor pokreće primjenjivanje zadanih konvencija na programski kod.
Slika 1-10. Potvrda aktiviranja Checkstyle dodatka
Prethodno importirani projekt Factoriel pisan je u skladu sa svim definiranim konvencijama koje su primijenjene na programski kod. Cijeli programski kod s detaljnim komentarima je dan u nastavku: package hr.tvz.programiranje.java.labosi.prvi; /** * Program racuna faktorijel nekog broja. */ public final class Factoriel { /** * Privatni konstruktor. */ © Autor: Aleksander Radovan, dipl. ing., e-mail:
[email protected]
Laboratorijske vježbe iz kolegija “Programiranje u programskoj jeziku Java” 2006/2007
Stranica 9/13
Politehnički specijalistički diplomski stručni studij Tehničko veleučilište u Zagrebu
private Factoriel() { } /** * Metoda za izracunavanje faktorijela. * * @param x broj za koji se izracunava faktorijela * * @return izracunata x! faktorijela */ public static double factoriel(final int x) { //provjera neispravnog ulaznog parametra //ukoliko je broj < 0, funkcija vraća 0.0 if (x < 0) { return 0.0; } //početak s inicijalnom vrijednosti double fact = 1.0; //pomoćna varijabla da ne pregazimo vrijednost x int pom = x; //petlja koja se obavlja sve dok je x > 1 while (pom > 1) { //množenje faktorijela fact = fact * pom; //dekrementiranje pomoćne varijable (koja je prije bila x) pom = pom - 1; } // vraćanje rezultata return fact; } /** * Glavni metoda za pokretanje programa. * * @param args ulazni argumenti - prvi argument oznacava broj za koji * je potrebno izracunati faktorijel */ public static void main(final String[] args) { //dohvaćanje ulaznog argumenta za koji je potrebno računati faktorijel int input = Integer.parseInt(args[0]); //računanje faktorijela double result = factoriel(input); System.out.println(result); } }
Međutim, kako bi se demonstriralo kršenje tih konvencija, liniju 40 klase Factoriel potrebno je promijeniti iz © Autor: Aleksander Radovan, dipl. ing., e-mail:
[email protected]
Laboratorijske vježbe iz kolegija “Programiranje u programskoj jeziku Java” 2006/2007
Stranica 10/13
Politehnički specijalistički diplomski stručni studij Tehničko veleučilište u Zagrebu
fact = fact * pom;
u fact = fact *pom;
odnosno, izbrisati prazno mjesto između znaka za operaciju množenja “*”, te varijable “pom”. Ukoliko se spreme promjene, s lijeve strane u tom retku pojavljuje se oznaka povećala koja ispisuje poruku upozorenja ukoliko se miš pozicionira iznad nje (slika 1-11):
Slika 1-11. Poruka Checkstyle dodatka zbog kršenja konvencija
Poruka “'*' is not followed by whitespace.” govori upravo o tome da nedostaje prazno mjesto koje je obrisano. Što se tiče dodatka AnyEdit, njega je također potrebno aktivirati, barem što se tiče korisne opcije za pretvaranje tabulatora u prazna mjesta. To je moguće učiniti pritiskom desne tipke miša na površini Package explorer pogleda i odabirom opcije Properties. Na dijalogu koji je pojavljuje potrebno je s lijeve strane odabrati opciju AnyEdit Tools, te označiti checkbox uz koji stoji tekst Convert tabs <-> spaces (slika 1-12). Nakon toga potrebno je pritisnuti tipku Ok i zadana konverzija je aktivirana.
Slika 1-12. Konfiguriranje AnyEdit dodatka
© Autor: Aleksander Radovan, dipl. ing., e-mail:
[email protected]
Laboratorijske vježbe iz kolegija “Programiranje u programskoj jeziku Java” 2006/2007
Stranica 11/13
Politehnički specijalistički diplomski stručni studij Tehničko veleučilište u Zagrebu
1.2.3.Generiranje javadoc dokumentacije Eclipse SDK omogućava generiranje Javadoc dokumentacije na krajnje jednostavan način. Ukoliko imamo projekt koji je detaljno dokumentiran (kao što je projekt Factoriel koji smo prethodno importirali), moguće je generirati Javadoc dokumentaciju. Automatizirani proces generiranja moguće je pokrenuti pritiskom desne tipke miša na ime projekta za koji želimo Javadoc te odabirom opcije Export...->Javadoc (slika 1-13):
Slika 1-13. Odabir opcije za generiranje Javadoc dokumentacije
Nakon pritiska na tipku Next pojavljuje se dijalog kao na slici 1-14. Najprije je potrebno upisati lokaciju programa za generiranje Javadoc dokumentacije (Javadoc command), tj. javadoc.exe izvršnog programa koji se nalazi u mapi gdje je instalirano Java okruženje za razvijanje programskog koda (engl. Java Software Development Kit) koje se također može download-ati sa web stranica http://java.sun.com/. Ukoliko je to mapa C:\j2sdk1.4.2_07, onda se javadoc.exe nalazi u podmapi bin. Još je potrebno zadati samo lokaciju (Destination) gdje će se spremiti Javadoc dokumentacija (u našem slučaju to je “C:\eclipse-SDK\laboratorijskeVjezbe\Factoriel\doc”), te pritiskom na tipku Finish pokrenuti proces generiranja dokumentacija. U Console pogledu također je moguće pratiti i proces generiranja Javadoc dokumentacije. Nakon što je generiranje završilo, dokumentacija u HTML formatu može se pregledavati u bilo kojem HTML pregledniku (Internet explorer, Mozilla Firefox, Opera...), a datoteka koja se pokreće zove se index.html i nalazi se na lokaciji koja je specificirana prije početka samog procesa generiranja dokumentacije (“C:\eclipse-SDK\laboratorijskeVjezbe\Factoriel\doc”). Izgled Javadoc dokumentacije u HTML pregledniku prikazan je na slici 1-15. © Autor: Aleksander Radovan, dipl. ing., e-mail:
[email protected]
Laboratorijske vježbe iz kolegija “Programiranje u programskoj jeziku Java” 2006/2007
Stranica 12/13
Politehnički specijalistički diplomski stručni studij Tehničko veleučilište u Zagrebu
Slika 1-14. Generiranje Javadoc dokumentacije
Slika 1-15. Izgled Javadoc dokumentacije u HTML pregledniku
1.2.4. Pokretanje aplikacije s ulaznim parametrima Ukoliko želimo pokrenuti Java aplikaciju koja prima ulazne parametre, potrebno je kreirati konfiguraciju za pokretanje (engl. launch configuration) koja osim pokretanja same aplikacije predaje i ulazne parametre. Na primjer, importirani projekt Factoriel sadrži klasu koja se mora pokrenuti s ulaznim parametrom jer se u suprotnom dogodi pogreška. Za kreiranje konfiguracije za pokretanje potrebno je označiti klasu Factoriel, pritisnuti desnu tipku miša, te odabrati Run As>Run... Nakon toga je na dijalogu za kreiranje konfiguracije za pokretanje (slika 1-16) potrebno s lijeve strane označiti opciju Java application i odabrati opciju za kreiranje nove konfiguracije (ikona kod koje se nalazi tekst Press the 'New' button to create a configuration of the selected type). Nakon kreiranja nove konfiguracije potrebno se prebaciti na konfiguraciju argumenata (Arguments) © Autor: Aleksander Radovan, dipl. ing., e-mail:
[email protected]
Laboratorijske vježbe iz kolegija “Programiranje u programskoj jeziku Java” 2006/2007
Stranica 13/13
Politehnički specijalistički diplomski stručni studij Tehničko veleučilište u Zagrebu
Slika 1-16. Kreiranje nove konfiguracije za pokretanje
i upisati vrijednost ulaznog parametra, odnosno broja za koji se želi izračunati faktorijel, te pritisnuti tipku Run (slika 1-17) nakon čega se u Console pogledu može vidjeti rezultat izračuna.
Slika 1-17. Postavljanje ulaznih argumenata © Autor: Aleksander Radovan, dipl. ing., e-mail:
[email protected]