Otvren računarstv 4. labratrijska vježba Java Igr Čavrak
Priprema za vježbu Naučiti prgramski jezik Java :) Riješiti labratrijsku vježbu 2 Otvren računarstv - Java
Zadatak txt aplikacija xml 1. Stvriti ulaznu tekstualnu datteku 2. Oblikvati i implementirati razrede za pis pdataka dmene prblema 3. Oblikvati i implementirati razrede za stvaranje pdatkvne strukture iz TXT i zapis pdatkvne strukture u XML 4. Glavni prgram 3 Otvren računarstv - Java
Cilj vježbe Upznavanje s snvama jezika i platfrme Java Izrada jednstavne Java aplikacije Objektn-usmjeren blikvanje Rad s klekcijama bjekata u jeziku Java Stvaranje/phrana pdatkvne strukture iz/u različite frmate zapisa (implementirana funkcinalnst bit će krištena u vježbi sa servletima) 4 Otvren računarstv - Java
Radna klina Prepručam Eclipse Mže i cmmand line klina, pažnja u pstavljanju path i classpath varijabli kline! 5 Otvren računarstv - Java
Odakle učiti Javu, št se mra znati? Java tutrial: http://dcs.racle.cm/javase/tutrial/ 6 Prepručene cjeline: Trails Cvering the Basics Getting started Learning the Java language Essential classes (Exceptins, Basic I/O, The platfrm envirnment -> Path and Classpath) Ak vas baš zanima: Ostala pglavlja iz Essential classes Cllectins Deplyment -> Packaging Prgrams in JAR files Otvren računarstv - Java
Ali tk će t sve pručiti... i jš napraviti vježbu?!?!?!?!? paaa, Vi ;) Uz tekst zadatka dan kstur rješenja za pkaznu inačicu ppis studentskih kartica Svi bitni elementi rješenja primjenjeni u rješenju pkazne inačice 7 Otvren računarstv - Java
Ppis pametnih kartica Svaka kartica ima pridružene pdatke: Id kartice JMBAG Ime krisnika Prezime krisnika Knfiguracija kartice Serija kartica Vrijeme valjansti Ppis usluga na kartici: Šifra usluge Ime usluge Verzija (Java!) appleta Šifra vlasnika usluge 8 Otvren računarstv - Java
Zapis pdataka u txt datteci 0095457354009452376 0050578887 Matilda Skk SXAA 1 110930 1,krisnik,01,0000 ; 2,eindeks,01,0000 ; 3,menza,01,0001 - delimiter plja prve razine ; - delimiter elemenata liste, - delimiter plja elementa liste Ptrebn parsirati redak p redak datteke: - ak redak zapčinje s # - preskčiti ga - ak je redak prazan, ignrirati ga - inače razdvjiti elemente retka, stvriti bjekte 9 Otvren računarstv - Java
Mdel dmene prblema 10 Razred 1: Lista pametnih kartica Sadrži sve pametne kartice Razred 2: pametna kartica Sadrži pdatke kartici, listu usluga Razred 3: usluga Sadrži pdatke pjedinj usluzi Paket u kjem se razredi mdela nalaze: mdel (mdel.cardlist, mdel.card, mdel.service) Otvren računarstv - Java C a r d L i s t - c a r d s + a d d ( ) + r e m v e ( ) + c a r d s ( ) p r i p a d a s a d r ž i - i d - j m b a g - f i r s t N a m e - l a s t N a m e - c n f i g u r a t i n - s e r i e s - v a l i d T - s e r v i c e s + g e t I D ( ) + s e t I D ( ) + g e t J M B A G ( ) + s e t J M B A G ( ) + g e t F i r s t N a m e ( ) + g e t L a s t N a m e ( ) + s e t C n f i g u r a t i n ( ) + g e t C n f i g u r a t i n ( ) + g e t S e r i e s ( ) + s e t S e r i e s ( ) + g e t V a l i d T ( ) + s e t V a l i d T ( ) + s e r v i c e s ( ) + a d d S e r v i c e ( ) + r e m v e S e r v i c e ( ) C a r d p r i p a d a p r u ž a S e r v i c e - I D - n a m e - v e r s i n - w n e r + g e t S e r v i c e I D ( ) + s e t S e r v i c e I D ( ) + g e t N a m e ( ) + s e t N a m e ( ) + g e t V e r s i n ( ) + s e t V e r s i n ( ) + g e t O w n e r ( ) + s e t O w n e r ( )
Stvaranje mdela, phrana mdela Znanje zapisu bjekta mdela (pr et cntra): Unutar bjekta mdela Unutar vanjskg bjekta Paralelna hijerarhija razreda Ista imena razreda, paket mdel.factry Svaki razred zna kak restaurirati i phraniti bjekt mdela u neki d frmata zapisa Statičke metde: frmtext() txml() 11 Otvren računarstv - Java
Izlazni XML <cardlist> <card cardid="8745884582322454342"> <JMBAG>0036435543</JMBAG>s <firstname>vlatk</firstname> <lastname>pks</lastname> <cnf>sxaa</cnf> <series>1</series> <validt>110930</validt> <services> <service id="1" versin="1"> <name>krisnik</name> <wner>0</wner> </service> <service id="2" versin="1"> <name>e-indeks</name> <wner>0</wner> </service> <service id="3" versin="1"> <name>menza</name> <wner>1</wner> </service> </services> </card>... 12 Otvren računarstv - Java
Parsiranje txt datteke java.util.stringtkenizer StringTkenizer st = new StringTkenizer(input, " ");... kartica.setjmbag(st.nexttken().trim());... //usluge... st = new StringTkenizer(input, ";"); while(st.hasmreelements() == true) { } String usluga = (String) st.nextelement(); mdel.service usl = mdel.factry.service.frmtext(usluga); if(usl!= null) kartica.addservice(usl); Delegacija parsiranja pdelementa 13 Otvren računarstv - Java
Glavni prgram //stvaranje pdatkvne strukture čitanjem tekstualne datteke mdel.cardlist cardlist = null; try { cardlist = mdel.factry.cardlist.frmtext(reader); } catch(exceptin e) { //serijalizacija pdatkvne strukture u datteku try { mdel.factry.cardlist.txml(cardlist, writer); } catch(ioexceptin e) { 14 Otvren računarstv - Java
Tkvi pdataka (paket java.i.*) Tkvi bajtva (8-bitni - byte streams) pdržani prek razreda i pdrazreda java.i.inputstream i java.i.outputstream Tkvi znakva (16 bitni character streams) implementirani su krz razrede i pdrazrede java.i.reader i java.i.writer apstraktni razredi najviše razine vezani uz tkve znakva (character-stream based classes) Primjer prefiksa: za čitanje znakva iz datteke - java.i.filereader za čitanje bajtva (binarni pdatci - slike, zvukvi) kristim java.i.fileinputstream 15 Otvren računarstv - Java
Tkvi pdataka Blje je kristiti Reader i Writer (character streams): skup znakva Unicde (16 bita) kdirani p nrmi UTF- 8 (ne uvijek - serijalizacija bjekata kristi nestandardni UTF-8) internacinalnije - ne vise specifičnm kdiranju zbg tehnike buffering efikasnije d byte streams. neg InputStream i OutputStream (byte streams): skup znakva graničenih na ISO-Latin-1 (8 bita) 16 Otvren računarstv - Java
Tkvi pdataka - Primjer 17 Pstupci (metde) za čitanje/pisanje su: int read(), int read(char cbuf[]), int read(char cbuf[], int ffset, int length) int write(int c), int write(char cbuf[]), int write(char cbuf[], int ffset, int length) //ispis sadržaja datteke(naredba cat ili type) p uzru na C imprt java.i.*; public class Cat{ public static vid main(string args[])thrws Exceptin{ FileReader ulaz = new FileReader(args[0]); PrintWriter izlaz = new PrintWriter(System.ut,true); char c[] = new char[4096]; int brj = 0; while ((brj = ulaz.read(c))!= -1) izlaz.write(c, 0, brj); ulaz.clse(); izlaz.clse(); } } Otvren računarstv - Java
Znakvni tkvi snvni razredi: Reader Writer Writer 18 Otvren računarstv - Java
Pdatkvni tkvi snvne razredi: InputStream OutputStream 19 Otvren računarstv - Java
Osnvne metde I znakvni i pdatkvni tkvi definiraju slične metde: int read() int read(char cbuf[]) int read(char cbuf[], int ffset, int length) java.i.reader int read() java.i.inputstream int read(byte cbuf[]) int read(byte cbuf[], int ffset, int length) int write(int c) int write(char cbuf[]) int write(char cbuf[], int ffset, int length) java.i.writer int write(int c) java.i.outputstream int write(byte cbuf[]) int write(byte cbuf[], int ffset, int length) 20 Otvren računarstv - Java
Ulančavanje tkva pdataka Čitanje pdataka pmću razreda Reader -mžem učitavati: znak p znak N znakva djednm Št ak želim učitavati redak p redak? učitavati znak p znak, prvjerati znaku kraja retka? učitati N znakva pa tražiti znake kraja retka? NE!, pstje razredi kje t mgu blje 21 Otvren računarstv - Java
Ulančavanje tkva pdataka Tkvi pdataka mgu se ulančavati npr. razred BufferedReader mže čitati pdatke d InputStreamReader-a: BufferedReader breader = null; breader = new BufferedReader(new FileReader(f)); String redak=breader.readline(); čitanje jedng retka: sim ddatnih metda, pstiže se i ubrzanje rada i drugi tkvi se mgu ulančavati /Primjer/Likvi/Citac.java 22 Otvren računarstv - Java
Rad s dattekama 23 Razred java.util.file predstavlja IME datteke ili kazala uključujući put (puni ili relativni) Datteka ili kazal ne mraju pstjati Ima metde kje mgućuju: prvjere: Otvren računarstv - Java da li datteka/kazal pstji da li je mguće čitanje ili pisanje stvaranje datteka brisanje datteka i kazala dhvaćanje sadržaja kazala stvaranje kazala prmjenu imena etc... /Primjeri/TurnArund.java
Imena datteka na različitim OS-ima Interni zapis imena datteke ili kazala nevisan je peracijskm sustavu Prilikm pretvrbe tg apstraktng zapisa imena u niz znakva (String), kriste se sbine platfrme na kjj se izvdi aplikacija System.getPrperty()) Linux kristi '/' za razdvajanje kazala Windwsi kriste '\' Plje java.i.file.pathseparatr /Primjeri/PrintThySelf.java 24 Otvren računarstv - Java
Otvaranje i zatvaranje svi tkvi se autmatski tvaraju pri stvaranju, a zatvaraju: eksplicitnim pzivm clse() ili implicitn kad više nisu ptrebni (garbage cllectr) 25 Otvren računarstv - Java
Standardni tkvi pdataka u C-u: stdin, stdut, stderr u Javi: public final class System { //... //standardni ulaz public final static InputStream in=...; //standardni izlaz public final static PrintStream ut=...; //standardni izlaz za greske, ispisuje //na knzlu (ka i ut) public final static PrintStream err=...; //... } System.ut.println("123") Stvara ih virtualni strj java.lang.system 26 Otvren računarstv - Java
Pitanja? Otvren računarstv - Java