Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wykład 07

Wielkość: px
Rozpocząć pokaz od strony:

Download "Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wykład 07"

Transkrypt

1 Plan Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wykład 07 T. Romańczukiewicz Jagiellonian University 2009/2010

2 Plan Plan 1 JAXB

3 Plan JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw 1 JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodawanie Nowych elementów Marshalling Podsumowanie

4 JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw XML, poprawnie sformuowanie Sposoby opisu XML DTD XML Schema XPATH Sposoby prezentacji CSS XSLT DOM SAX

5 DOM JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw DOM i SAX Parser DOM wczytuje cały dokument do pamięci i tworzy obiekt DOM przechowujac dane w strukturze drzewa. DOM pozwala na swobodne poruszanie się po drzewie dokumentu. W przypadku przetwarzania dużych i skomplikowanych plików XML moga zostać zużyte spore zasoby pamięciowe. SAX nie wczytuje całego dokumentu lecz działa jak parser strumieniowy sterowany zdarzeniami. Zdarzenia sa zgłaszane gdy zostanie napotkany np element, dane tekstowe czy przestrzeń nazw. Obsługę zdarzeń należy zaimplementować. SAX nie umożliwia uzyskania swobodnego dostępu do dokumentu XML Przetwarzanie z użyciem SAX jest jednokierunkowe - wcześniej przetworzone dane nie moga być ponownie odczytane bez ponownego uruchomienia całej procedury. Wymagania pamięciowe SAX sa znacznie mniejsze niż DOM.

6 JAXB JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw JAXB - Java Architecutre for XML Binding Kolejny standard definiujacy dostęp do plików XML-owych z poziomu języka programowania. Obecnie najbardziej promowany jest przez Suna, ale dostępne sa również inne implementacje. JAXB nie posiada nie ma tu ogólnego interfejsu do parsowania plików. Interfejs tworzony na podstawie DTD lub XML-Schemy. Dostajemy kompilator schematów (lub dtd), który z tych schematów generuje klasy - dla każdego elementu XML powstaje jedna klasa. Inne podobne narzędzia: Castor, XMLBeans (Apache),

7 JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw JAXB a SAX i DOM Zalety w stosunku do DOM-a: mniejsze wymagania pamięciowe, dzięki temu, że nie ma narzutu na generyczność DOM-a, w pamięci jest tylko to co trzeba bardziej intuicyjny dostęp do dokumentu, dzięki temu nie trzeba znać struktury dokumentu DTD nie jest interpretowane, tylko zaszyte w kodzie - dzięki temu większa wydajność Zalety w stosunku do SAX-a: łatwiejszy dostęp do pliku - cały plik jest w pamięci SAX jest read-only, a JAXB umożliwia modyfikację i zapisywanie do pliku. Model danych w SAX trzeba było tworzyć samodzielnie.

8 JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw Podstawowe operacje udostępniane przez JAXB Generowanie klas. XML Schema jest używana przez kompilator JAXB binding compiler xjc do wygenerowania klas w oparciu o XML Schema Kompilowanie klas. Unmarshalling - zamiana pliku XML na obiekty Javove Modyfikacja dokumentu XML (na kopii z pamięci) Walidacja - sprawdzenie poprawności z DTD (także dokonywane na dokumencie w pamięci) Marshalling - zamiana obiektów Javy na dokument XML

9 JAXB - Przykład JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw Listing 1: hello.xsd 1 <?xml version="1.0" encoding="utf-8"?> 2 <xsd:schema xmlns:xsd=" 3 xmlns:jxb=" jxb:version="2.0"> 4 5 <xsd:element name="greetings" type="greetinglisttype"/> 6 <xsd:complextype name="greetinglisttype"> 7 <xsd:sequence> 8 <xsd:element name="greeting" type="greetingtype" maxoccurs="unbounded"/ > 9 </xsd:sequence> 10 </xsd:complextype> <xsd:complextype name="greetingtype"> 13 <xsd:sequence> 14 <xsd:element name="text" type="xsd:string"/> 15 </xsd:sequence> 16 <xsd:attribute name="language" type="xsd:language"/> 17 </xsd:complextype> 18 </xsd:schema>

10 JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw Listing 2: Wywołanie kompilatora JAXB Schema 1 $ xjc -p hello hello.xsd 2 parsing a schema... 3 compiling a schema... 4 hello/greetinglisttype.java 5 hello/greetingtype.java 6 hello/objectfactory.java Zostały wygenerowane trzy klasy (wraz z dokładnym javadociem), GreetingType i GreetingListType odpowiadajace zadeklarowanym typom w schemacie oraz ObjectFactory: Listing 3: GreetingType 1 public class GreetingType { 2 (...) 3 public String gettext() { return text; } 4 public void settext(string value) { this.text = value; } 5 public String getlanguage() { return language; } 6 public void setlanguage(string value) { this.language = value; } 7 (...) 8 } Klasa GreetingType posiada metody do odczytywania i modyfikowania zawartości tekstowej elementu oraz atrybutu.

11 JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw Listing 4: GreetingListType 1 public class GreetingListType { 2 = "Greeting", required = true) 4 protected List<GreetingType> greeting; 5 6 public List<GreetingType> getgreeting() { 7 if (greeting == null) { 8 greeting = new ArrayList<GreetingType>(); 9 } 10 return this.greeting; 11 } 12 } Aby dodać element do listy: getgreeting().add(newitem);

12 JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw Listing 5: ObjectFactory 1 public class ObjectFactory { 2 private final static QName _Greetings_QNAME = new QName("", "Greetings"); 3 public ObjectFactory() {} 4 / C r e a t e an i n s t a n c e o f G r e e t i n g L i s t T y p e / 5 public GreetingListType creategreetinglisttype() 6 { return new GreetingListType(); } 7 public GreetingType creategreetingtype() 8 { return new GreetingType(); } 9 = "", name = "Greetings") 11 public JAXBElement<GreetingListType> creategreetings(greetinglisttype value) 12 { return new JAXBElement<GreetingListType>(_Greetings_QNAME, GreetingListType.class, null, value); } } Obiekt zawiera metody wytwórcze (ang. factory methods) dla każdego interfejsu zawartości i elemetu ObjectFactory pozwala tworzyć nowe instancje reprezentacji dokumentu XML

13 Przykładowe użycie JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw Listing 6: Hello 1 public class Hello { 2 3 private ObjectFactory of; 4 private GreetingListType grlist; 5 6 public Hello(){ 7 of = new ObjectFactory(); 8 grlist = of.creategreetinglisttype(); 9 } public void make( String t, String l ){ 12 GreetingType g = of.creategreetingtype(); 13 g.settext( t ); 14 g.setlanguage( l ); 15 grlist.getgreeting().add( g ); 16 } public void marshal() { 19 try { 20 JAXBElement<GreetingListType> gl = of.creategreetings( grlist ); 21 JAXBContext jc = JAXBContext.newInstance( "hello" ); 22 Marshaller m = jc.createmarshaller(); 23 m.marshal( gl, System.out ); 24 } catch( JAXBException jbe ){ 25 / / } 27 } 28 }

14 JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw Konstruktor tworzy obiekt korzystajac z metody wytwórczej aby stworzyć element główny XML typu GreetingListType. Metoda make dodaje element do listy wraz z tekstem i atrybutem language. wywołujac metodę marshal lista zamieniana jest na XML i wypisywana na standardowe wyjście. Listing 7: Użycie 1 Hello h = new Hello(); 2 h.make( "Bonjour, madame", "fr" ); 3 h.make( "Hey, you", "en" ); 4 h.make( "Yo nopot, kivanok", "hu" ); 5 6 h.marshal();

15 JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw Co prawda dane w XML sa przechowywane zawsze jako tekst, ale dzięki schematom można dokładniej określić typ tych danych. Dane te moga być mapowane na typy Javy. Przykład: Listing 8: Typy 1 <xsd:simpletype name="grouptype"> 2 <xsd:restriction base="xsd:int"> 3 <xsd:mininclusive value="1"/> 4 <xsd:maxinclusive value="255"/> 5 </xsd:restriction> 6 </xsd:simpletype> Listing 9: Wynik xjc 1 public class ElementType { 2 protected int group; 3 public int getgroup() { return group; } 4 public void setgroup(int value) { this.group = value; } 5 } Typ <xsd:restriction base="xsd:int"> został zinterpretowany jako int, ale w całej klasie nie ma obsługi ograniczeń podanych w schemacie. Uwaga! JAXB nie dostarcza mechanizmów chroniacych zakres, pattern i inne zawężenia schematu. Wszystko to jest sprawdzane dopiero w momencie walidacji.

16 JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw XML Schema Type xsd:string xsd:integer xsd:int xsd.long xsd:short xsd:decimal xsd:float xsd:double xsd:boolean xsd:byte xsd:qname xsd:datetime xsd:base64binary xsd:hexbinary xsd:unsignedint xsd:unsignedshort xsd:unsignedbyte xsd:time xsd:date xsd:anysimpletype Java Data Type java.lang.string java.math.biginteger int long short java.math.bigdecimal float double boolean byte javax.xml.namespace.qname java.util.calendar byte[] byte[] long int short java.util.calendar java.util.calendar java.lang.string

17 JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw Listing 10: Listy 1 <xsd:simpletype name="numberlisttype"> 2 <xsd:list itemtype="xsd:int"/> 3 </xsd:simpletype> 4 5 <xsd:simpletype name="stringlisttype"> 6 <xsd:list itemtype="xsd:string"/> <! dangerous! > 7 </xsd:simpletype> W pierwszym przypadku zostanie utworzona lista protected List<Integer>numbers = new ArrayList<Integer>(); Analogiczie w drugim przypadku, ale w XML reprezentacja będzie lista wartości oddzielonych białymi znakami. Jeśli wartości będa posiadały białe spacje to może być problem. Zaleca się zatem stosowanie typów złożonych.

18 JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw Również <xsd:all>, <xsd:union>, <xsd:choice> oraz <xsd:sequence> moga być powiazane z niektórymi strukturami danych Javy takimi jak array, list, structure (lub record) i union. Listing 11: sequence 1 <xsd:complextype name="pointtype"> 2 <xsd:sequence> 3 <xsd:element name="x" type="xsd:int"/> 4 <xsd:element name="y" type="xsd:int"/> 5 </xsd:sequence> 6 </xsd:complextype> wynik kompilowania Listing 12: sequence w javie 1 public class PointType { 2 protected int x; 3 protected int y; 4 5 public int getx() { return x; } 6 public void setx(int value) { this.x = value; } 7 public int gety() { return y; } 8 public void sety(int value) { this.y = value; } 9 }

19 JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw Listing 13: xsd:union 1 <xsd:simpletype name="speedornumbertype"> 2 <xsd:union> 3 <xsd:simpletype> 4 <xsd:restriction base="xsd:int"> 5 </xsd:restriction> 6 </xsd:simpletype> 7 <xsd:simpletype> 8 <xsd:restriction base="xsd:string"> 9 <xsd:pattern value="+?d+"/> 10 </xsd:restriction> 11 </xsd:simpletype> 12 </xsd:union> 13 </xsd:simpletype> Jako typ prosty unia zostanie powiazana ze zmienna typu String. Listing 14: xsd:all 1 <xsd:complextype name="dinnertype"> 2 <xsd:all> 3 <xsd:element name="starter" type="xsd:string" minoccurs="0"/> 4 <xsd:element name="soup" type="xsd:string" minoccurs="0"/> 5 <xsd:element name="entree" type="xsd:string"/> 6 <xsd:element name="dessert" type="xsd:string" minoccurs="0"/> 7 </xsd:all> 8 </xsd:complextype> Zostanie utworzona klasa zawierajaca zmienne starter, soup itd. Uwaga! maxoccurs nie może mieć wartości większej niż 1.

20 JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw Listing 15: xsd:enumeration 1 <xsd:simpletype name="ixltype"> 2 <xsd:restriction base="xsd:string"> 3 <xsd:enumeration value="estwa"/> 4 <xsd:enumeration value="estws"/> 5 <xsd:enumeration value="spdrl"/> 6 <xsd:enumeration value="spdrs"/> 7 <xsd:enumeration value="vgs80"/> 8 </xsd:restriction> 9 </xsd:simpletype> 10 \begin{lstlisting} Listing 16: xsd:enumeration w Javie 1 public enum IXLType { 2 3 E_STW_A("eStwA"), 4 E_STW_S("eStwS"), 5 SP_DR_L("SpDrL"), 6 SP_DR_S("SpDrS"), 7 VGS_80("VGS80"); 8 9 private final String value; IXLType(String v) { 12 value = v; 13 } public String value() { 16 return value; 17 } 18 }

21 JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw Listing 17: xsd:enumeration 1 <xsd:simpletype name="ixltype"> 2 <xsd:restriction base="xsd:string"> 3 <xsd:enumeration value="estwa"/> 4 <xsd:enumeration value="estws"/> 5 <xsd:enumeration value="spdrl"/> 6 <xsd:enumeration value="spdrs"/> 7 <xsd:enumeration value="vgs80"/> 8 </xsd:restriction> 9 </xsd:simpletype> Listing 18: xsd:enumeration w Javie 1 public enum IXLType { 2 3 E_STW_A("eStwA"), 4 E_STW_S("eStwS"), 5 SP_DR_L("SpDrL"), 6 SP_DR_S("SpDrS"), 7 VGS_80("VGS80"); 8 9 private final String value; 10 IXLType(String v) { value = v;} 11 public String value() { return value; } 12 } Nazwy zostały zmienione.

22 JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw Można też w taki sposób: Listing 19: xsd:enumeration 1 <xsd:simpletype name="ixltype"> 2 <xsd:restriction base="xsd:string"> 3 <xsd:enumeration value="estwa"/> 4 <xsd:annotation><xsd:appinfo> 5 <jxb:typesafeenummember name="estwa"/> 6 </xsd:appinfo></xsd:annotation> </xsd:restriction> 9 </xsd:simpletype> Uwaga: w schemacie musi zostać dołaczona przestrzeń nazw xmlns:jxb=" Listing 20: xsd:enumeration w Javie 1 public enum IXLType { 2 3 estwa, 4 estws, 5 SpDrL, 6 SpDrS, 7 VGS80; 8 9 public String value() { return name(); } }

23 Unmarshalling JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw Po powiazaniu klas Javy z typami XML Schema przy pomocy xjc można przystapić do wczytywania danych. Unmarshalling czyli zamiana pliku XML na obiekty Javy Najporościej utworzyć obiekt JAXBContext, następnie Unmarshaller i wywołać metodę unmrshal. Obiekt JAXBContext zawiera informacje wiaż ace informacje pomiędzy XML i Java. Można go utworzyć przy pomocy metody newinstance z parametrem będacym nazwa pakietu utworzonego przez xjc Z tego kontekstu można utworzyć obiekt Unmarshaller, którego metoda unmarshal zwraca obiekt JAXBElement powiazany z elementem głównym dokumentu. Listing 21: xsd:enumeration w Javie 1 public <T> T unmarshal( Class<T> docclass, InputStream inputstream ) 2 throws JAXBException { 3 String packagename = docclass.getpackage().getname(); 4 JAXBContext jc = JAXBContext.newInstance( packagename ); 5 Unmarshaller u = jc.createunmarshaller(); 6 JAXBElement<T> doc = (JAXBElement<T>)u.unmarshal( inputstream ); 7 return doc.getvalue(); 8 }

24 Walidacja JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw Przed przekształceniem danych z dokumentu XML na obiekty Javy można wykonać walidacji. Sam JAXB nie stosuje się do ograniczeń narzuconych przez schemat. Należy zatem tę operację przeprowadzić przed procedura unmarshal i po marshal. Służa do tego obiekt klasy javax.xml.validation.schema, który zostaje przekazany do obiektu Unmarshaller. Listing 22: Walidacja 1 Schema myschema; 2 SchemaFactory sf = 3 SchemaFactory.newInstance( XMLConstants.W3C_XML_SCHEMA_NS_URI ); 4 try { 5 myschema = sf.newschema( file ); 6 } catch( SAXException saxe ){ 7 / /... ( e r r o r h a n d l i n g ) 8 myschema = null; 9 } JAXBContext jc = JAXBContext.newInstance( packagepath ); 12 Unmarshaller u = jc.createunmarshaller(); 13 u.setschema( myschema ); W przypadku gdy walidacja zawiedzie zostanie rzucony wyjatek. Wyjatki takie mogę być obsługiwane przez interfejs javax.xml.bind.validationeventhandler

25 Kontekst JAXB JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw Obiekt JAXBContext tworzony jest na samym poczatku operacji wczytywania pliku XML. Można go utworzyć np. JAXBContext ctxt = JAXBContext.newInstance( "some foo:more.bar"); gdzie dwukropkiem oddziela się pakiety. Każdy pakiet musi zawierać klasę ObjectFactory lub plik jaxb.index: Listing 23: jaxb.index 1 # package some. f o o 2 # class some. foo. Foo 3 Foo 4 # inner class some. foo. Foo. Boo 5 Foo.Boo zawierajacy listę klas w danym pakiecie. Klasy ObjectFactory sa generowane ze schematu Innym sposobem utworzenia kontekstu jest podanie listy wszystkich klas: JAXBContext ctxt = JAXBContext.newInstance( Foo.class, Bar.class );

26 Użycie danych JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw Dane można odczytywać przy pomocy metod typu get a zapisywać przy pomocy metod typu set. Wygodniej jest jednak stworzyć klasy obsługujace poszczególne typy schematu. Ich metody moga przetwarzać atrybuty i elementy potomne wywołujac ich handlery. Listing 24: XML Schema 1 <xsd:complextype name="persontype"> 2 <xsd:sequence> 3 <xsd:element name="name" type="nametype"> 4 <xsd:element name="addr" type="addrtype" minoccurs="0"> 5 <xsd:element name="child" type="childtype" minoccurs="0" maxoccurs=" unbounded"> 6 </xsd:sequence> 7 <xsd:attribute name="resident" type="xsd:boolean"/> 8 </xsd:complextype> 9 10 <xsd:complextype name="childtype"> 11 <xsd:complexcontent> 12 <xsd:extension base="persontype"/> 13 </xsd:complexcontent> 14 </xsd:complextype>

27 Użycie danych c.d JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw Listing 25: Handler classes 1 abstract class Handler { 2 protected static Map<Class<?>,Handler> ourclass2conv = new HashMap<Class<?>, Handler>(); 3 4 static { 5 ourclass2conv.put( PersonType.class, new PersonHandler() ); 6 ourclass2conv.put( NameType.class, new NameHandler() ); 7 ourclass2conv.put( AddrType.class, new AddrHandler() ); 8 ourclass2conv.put( ChildType.class, new ChildHandler() ); 9 / / } 11 public abstract void handle( Object o ); 12 protected void process( Object obj ){ 13 if( obj!= null ){ 14 Handler h = ourclass2conv.get( obj.getclass() ); 15 if( h!= null ){ h.handle( obj ); } 16 } 17 } protected <T> void processlist( List<T> list ){ 20 for( T obj: list ){ 21 Handler h = this.gethandler( obj ); 22 h.process( obj ); 23 } 24 } 25 }

28 Użycie danych c.d JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw Listing 26: Handler classes 1 class PersonHandler extends Handler { 2 public void handle( Object o ){ 3 PersonType p = (PersonType)o; 4 process( p.getname() ); 5 if( p.isresident() ){ process( p.getaddr() ); } 6 processlist( p.getchild ); 7 } 8 }

29 ObjectFactory JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw Jedna z klas wygenerowanych przez xjc jest klasa ObjectFactory. Klasa ta zawiera metody do tworzenia elementów reprezentowanych przez objekty JAXBElement<?>: Listing 27: ObjectFactory 1 ObjectFactory objfact = new ObjectFactory(); 2 RulebaseType rulebase = objfact.createrulebasetype(); 3 JAXBElement<RulebaseType> doc = objfact.createrulebase( rulebase ); rulebase - znacznik elementu głównego. proste elementy nie potrzebuja JAXBElement<?>. Można je utworzyć bezpośrednio z wywołania metody: ModuleType module = objfact.createmoduletype(); Objekt JAXBElement<?> jest wymagany w przypadku elementów zawierajacych sekwencję elementów tego samego typu ale o innych znacznikach: Listing 28: Przykład 1 <xsd:complextype name="foobarlisttype"> 2 <xsd:sequence> 3 <xsd:choice minoccurs="0" maxoccurs="unbounded"> 4 <xsd:element name="foo" type="foobartype"/> 5 <xsd:element name="bar" type="foobartype"/> 6 </xsd:choice> 7 </xsd:sequence> 8 </xsd:complextype>

30 ObjectFactory c.d. JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw Listing 29: ObjectFactory 1 FooBarListType fblelem = objfact.createfoobarlisttype(); 2 List<JAXBElement<FooBarType>> fblist = fblelem.getfooorbar(); 3 4 / / create a " foo " element 5 FooBarType foo = objfact.createfoobartype(); 6 / /... ( add a t t r i b u t e s and components t o f o o ) 7 / / Create the element <foo >... < / foo > 8 JAXBElement<FooBarType> fooelem = objfact.createfoobartypefoo( foo ); 9 / / Add i t t o i t s p a r e n t s l i s t. 10 fblist.add( fooelem ); / / create a " bar " element 13 FooBarType bar = objfact.createfoobartype(); 14 / /... ( add a t t r i b u t e s and components t o bar ) 15 / / Create the element <bar >... < / bar> 16 JAXBElement<FooBarType> barelem = objfact.createfoobartypebar( bar ); 17 / / Add i t t o i t s p a r e n t s l i s t. 18 fblist.add( barelem );

31 JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw Aby dodać element potomny x wewnatrz elementu current (np. głównego) należy Stworzyć element xelem przy pomocy metody createx. Dodać nowo stworzony current.setx( xelem ). Powtórzyć ten proces rekurencyjnie dla elementów potomnych nowego elementu Listing 30: Dodawanie nowych obiektów 1 / / Create o r d e r and i n s e r t i n top l e v e l document, a l i s t o f o r d e r s 2 OrderType orderelem = objfact.createordertype(); 3 folder.getorders().add( orderelem ); 4 5 / / Create and i n s e r t the customer element. 6 CustomerType custelem = objfact.createcustomertype(); 7 orderelem.setcustomer( custelem ); 8 / / Complete customer. 9 custelem.setid( custid ); 10 custelem.setname( custname ); / / Create and add item elements. 13 List<ItemType> itemlist = orderelem.getitems(); 14 for( Item item: items ){ 15 ItemType itemelem = objfact.createitemtype(); 16 itemlist.add( itemelem ); 17 itemelem.setid( item.id ); 18 itemelem.setquantity( item.qtty ); 19 }

32 JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw Dodawanie Nowych elementów c.d. Listing 31: schemat 1 <xsd:complextype name="customertype"> 2 <xsd:sequence> 3 <xsd:element name="id" type="xsd:int"/> 4 <xsd:element name="name" type="xsd:string"/> 5 </xsd:sequence> 6 </xsd:complextype> 7 8 <xsd:complextype name="itemtype"> 9 <xsd:sequence> 10 <xsd:element name="id" type="xsd:string"/> 11 <xsd:element name="quantity" type="xsd:int"/> 12 </xsd:sequence> 13 </xsd:complextype> <xsd:complextype name="ordertype"> 16 <xsd:sequence> 17 <xsd:element name="customer" type="customertype"/> 18 <xsd:element name="items" type="itemtype" maxoccurs="unbounded"/> 19 </xsd:sequence> 20 </xsd:complextype> <xsd:element name="folder"> 23 <xsd:complextype> 24 <xsd:sequence> 25 <xsd:element name="orders" type="ordertype" maxoccurs="unbounded"/> 26 </xsd:sequence> 27 </xsd:complextype> 28 </xsd:element>

33 Marshalling JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw Końcowym etapem tworzenia lub modyfikowania dokumentu XML jest procedura zwana Marshalling. Po utworzeniu obiektu Marshaller z obiektu JAXBContext można ustawić szereg właściwości (np ustawianie formatowania wydruku, sposobu dołaczenia schematu, strony kodowej itp.) Listing 32: Marshalling 1 import java.io.*; 2 import javax.xml.bind.* 3 4 void writedocument( Object document, String pathname ) 5 throws JAXBException, IOException { 6 Class<T> clazz = document.getvalue().getclass(); 7 JAXBContext context = 8 JAXBContext.newInstance( clazz.getpackage().getname() ); 9 Marshaller m = context.createmarshaller(); 10 m.setproperty( Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE ); 11 m.marshal( document, new FileOutputStream( pathname ) ); 12 }

34 JAXB JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw JAXB jest architektura powiazań pomiędzy XML i klasami Javy Najpierw na podstawie XML Schema generowane sa klasy odpowiadajace typom zadeklarowanym w schemacie. Klasy te zawieraja metody do czytania i manipulacji obiektami reprezentujacymi elementy XML Typy Javy nie zachowuja restrykcji nakładanych w schemacie. Przed wczytaniem danych lub po ich zapisaniu do pliku możliwa jest walidacja. Generowana jest też klasa ObjectFactory pozwalajaca tworzyć nowe instancje reprezentacji dokumentu XML Dokument XML wczytywany jest w trakcie procedury Unmarshalling na podstawie kontekstu zawierajacego informacje o pakiecie. Po modyfikacji zmiennych można zapisać dane do pliku przy pomocy metody Marshalling.

35 JAXB a DOM i SAX JAXB Przypomnienie Wstęp Przykład Typy danych Unmarshalling Dodaw DOM wczytywał cały dokument do pamięci Dane przechowywane były w uniwersalnej strukturze drzewa Dzięki odpowiednim metodom można się było poruszać po całym drzewie dokumentu SAX przetwarzał dokument w trakcie czytania. Aby stworzyć model danych należało samemu go zaimplementować. SAX przetwarzał dokument jednokierunkowo. JAXB sam tworzy strukturę danych na podstawie istniejacego już schematu. Do danych jest dostęp cały czas.

Katalog książek cz. 2

Katalog książek cz. 2 Katalog książek cz. 2 Odczytywanie danych z XML Do ćwiczenia dołączony jest plik books.xml zawierający pełen katalog książek. Poniższy listing zawiera przykładowy fragment danych w stosowanym formacie.

Bardziej szczegółowo

- wewnątrz elementów prostych występuje tylko jeden typ danych, wewnątrz złoŝonych nie moŝemy dokładnie określić liczby wystąpień elementu

- wewnątrz elementów prostych występuje tylko jeden typ danych, wewnątrz złoŝonych nie moŝemy dokładnie określić liczby wystąpień elementu XML Schema DTD a XML Schema DTD jako opis dokumentu XML: - pozwala stworzyć jedynie bardzo ogólny schemat dokumentu - w standardzie DTD dostępne mamy jedynie rozróŝnienie na elementy proste i złoŝone -

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

Plan prezentacji. Przetwarzanie dokumentów XML JAXP SAX JAXP SAX DOM STAX XSLT. Przedmiot: XML i jego zastosowania. Dr inż. Stanisław Polak JAXB

Plan prezentacji. Przetwarzanie dokumentów XML JAXP SAX JAXP SAX DOM STAX XSLT. Przedmiot: XML i jego zastosowania. Dr inż. Stanisław Polak JAXB Plan prezentacji Przedmiot: XML i jego zastosowania Dr inż. Stanisław Polak JAXP SAX DOM STAX XSLT Akademia Górniczo - Hutnicza w Krakowie, Katedra Informatyki http://www.icsr.agh.edu.pl/~polak/ JAXB Inne

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych

Bardziej szczegółowo

Zaawansowane aplikacje WWW - laboratorium

Zaawansowane aplikacje WWW - laboratorium Zaawansowane aplikacje WWW - laboratorium Przetwarzanie XML (część 2) Celem ćwiczenia jest przygotowanie aplikacji, która umożliwi odczyt i przetwarzanie pliku z zawartością XML. Aplikacja, napisana w

Bardziej szczegółowo

Extensible Markup Language (XML) Wrocław, Java - technologie zaawansowane

Extensible Markup Language (XML) Wrocław, Java - technologie zaawansowane Extensible Markup Language (XML) Wrocław, 15.03.2019 - Java - technologie zaawansowane Wprowadzenie XML jest językiem znaczników (ang. markup language) używanym do definiowania zbioru zasad rozmieszczenia

Bardziej szczegółowo

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016 Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 5 Marcin Młotkowski 23 marca 2017 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 50 Historia Początkowe założenia Projekt OAK Sterowanie urządzeniami

Bardziej szczegółowo

Język XML Schema. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

Język XML Schema. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz Język Schema Po zrealizowaniu materiału student będzie w stanie Stworzyć formalny opis dokumentu Deklarować elementy i atrybuty Określić strukturę elementów w dokumencie Operować dostępnymi typami danych

Bardziej szczegółowo

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Java - tablice, konstruktory, dziedziczenie i hermetyzacja Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja

Bardziej szczegółowo

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl Narzędzia i aplikacje Java EE Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl Niniejsze opracowanie wprowadza w technologię usług sieciowych i implementację usługi na platformie Java EE (JAX-WS) z

Bardziej szczegółowo

JAVA W SUPER EXPRESOWEJ PIGUŁCE

JAVA W SUPER EXPRESOWEJ PIGUŁCE JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie

Bardziej szczegółowo

Perl a XML. Narzędzia informatyczne w językoznawstwie. Generowanie danych XML - Przykład. Generowanie danych XML. Perl - Przetwarzanie XML

Perl a XML. Narzędzia informatyczne w językoznawstwie. Generowanie danych XML - Przykład. Generowanie danych XML. Perl - Przetwarzanie XML Perl a XML Narzędzia informatyczne w językoznawstwie Perl - Przetwarzanie XML Marcin Junczys-Dowmunt junczys@amu.edu.pl Zakład Logiki Stosowanej http://www.logic.amu.edu.pl 31 modułów w CPAN zawiera w

Bardziej szczegółowo

Integracja Obieg Dokumentów - GiS Spis treści

Integracja Obieg Dokumentów - GiS Spis treści Integracja Obieg Dokumentów - GiS Spis treści 1.Opis integracji.... 2 2.Interfejs po stronie Obiegu Dokumentów... 4 3.Interfejs po stronie Gis-u.... 7 4.Schematy przesyłanych plików xml.... 8 1 1. Opis

Bardziej szczegółowo

Wykorzystywanie parsera DOM w programach Java i PL/SQL

Wykorzystywanie parsera DOM w programach Java i PL/SQL Wykorzystywanie parsera DOM w programach Java i PL/SQL Maciej Zakrzewicz mzakrz@cs.put.poznan.pl http://www.cs.put.poznan.pl/~mzakrz/ Parser DOM Aplikacja DOM API Parser DOM Dokument XML Drzewo DOM Parser

Bardziej szczegółowo

KLASY, INTERFEJSY, ITP

KLASY, INTERFEJSY, ITP KLASY, INTERFEJSY, ITP ZAGADNIENIA: Klasy, modyfkatory dostępu, pakiety. Zmienne i metody statyczne. Klasy abstrakcyjne, dziedziczenie. Interfejsy. Komentarze i javadoc, http://th-www.if.uj.edu.pl/zfs/ciesla/

Bardziej szczegółowo

Klasy i obiekty cz II

Klasy i obiekty cz II Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Klasy i obiekty cz II Hermetyzacja, mutatory, akcesory, ArrayList Rozwijamy aplikację Chcemy, aby obiekty klasy

Bardziej szczegółowo

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h] 1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie

Bardziej szczegółowo

akademia androida Składowanie danych część VI

akademia androida Składowanie danych część VI akademia androida Składowanie danych część VI agenda 1. SharedPreferences. 2. Pamięć wewnętrzna i karta SD. 3. Pliki w katalogach /res/raw i /res/xml. 4. Baza danych SQLite. 5. Zadanie. 1. SharedPreferences.

Bardziej szczegółowo

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017 Wykład 13 14 czerwiec 2017 Java vs cpp - podobieństwa Podobny sposób definiowania klas. Występowanie typów podstawowych: boolean, char, byte, short, int, long, float, double. Podobna zasada definiowania

Bardziej szczegółowo

1 Atrybuty i metody klasowe

1 Atrybuty i metody klasowe 1 Atrybuty i metody klasowe Składowe klasowe (statyczne) Każdy obiekt klasy posiada własny zestaw atrybutów. Metody używają atrybutów odpowiedniego obiektu. Czasem potrzeba atrybutów wspólnych dla wszystkich

Bardziej szczegółowo

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,

Bardziej szczegółowo

extensible Markup Language, cz. 4 Marcin Gryszkalis, mg@fork.pl

extensible Markup Language, cz. 4 Marcin Gryszkalis, mg@fork.pl extensible Markup Language, cz. 4 Marcin Gryszkalis, mg@fork.pl XML 5 XML Schema Projektowany jako rozszerzenie i uzupełnienie DTD Jest w stanie odwzorować dowolną definicję DTD (ale nie odwrotnie!) Bardzo

Bardziej szczegółowo

Programowanie w Internecie. Java

Programowanie w Internecie. Java Programowanie w Internecie Java Autor: dr inż. Zofia Kruczkiewicz Literatura: L. Lemay, R. Cadenhead P. Naughton Krzysztof Barteczko Boone Barry Java 2 dla każdego Podręcznik Języka Programowania Java

Bardziej szczegółowo

Metody dostępu do danych

Metody dostępu do danych Metody dostępu do danych dr inż. Grzegorz Michalski Na podstawie materiałów dra inż. Juliusza Mikody Jak działa JDO Podstawowym zadaniem JDO jest umożliwienie aplikacjom Javy transparentnego umieszczenia

Bardziej szczegółowo

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1) MAS dr. Inż. Mariusz Trzaska Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1) Zagadnienia o Podstawy o Kontrolowanie sterowania o Klasy o Interfejsy o Obsługa błędów o Pojemniki o System

Bardziej szczegółowo

Automatyczne generowanie kodu. Marek.Berkan@e-point.pl. 4Developers, 26 marca 2010

Automatyczne generowanie kodu. Marek.Berkan@e-point.pl. 4Developers, 26 marca 2010 4Developers, 26 marca 2010 Zakres wykładu O czym zamierzam opowiedzieć: Przyspieszenie tworzenia aplikacji Ułatwienie utrzymania aplikacji Budowanie kontraktów pomiędzy developerami a innymi uczestnikami

Bardziej szczegółowo

Platformy Programistyczne Podstawy języka Java

Platformy Programistyczne Podstawy języka Java Platformy Programistyczne Podstawy języka Java Agata Migalska 6 maja 2014 Plan wykładu 1 Sztuka wysławiania się w języku Java 2 Cały świat jest obiektem 3 Kolekcje 4 Zmienne i metody statyczne 5 Słowo

Bardziej szczegółowo

Dokumentacja do API Javy.

Dokumentacja do API Javy. Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu

Bardziej szczegółowo

Programowanie i projektowanie obiektowe

Programowanie i projektowanie obiektowe Programowanie i projektowanie obiektowe Klasy i obiekty Paweł Daniluk Wydział Fizyki Jesień 2011 P. Daniluk (Wydział Fizyki) PO w. V Jesień 2011 1 / 13 Typy danych (w Javie) Typy pierwotne typ wartości

Bardziej szczegółowo

Języki i metody programowania Java. Wykład 2 (część 2)

Języki i metody programowania Java. Wykład 2 (część 2) Języki i metody programowania Java INF302W Wykład 2 (część 2) Autor Dr inż. Zofia Kruczkiewicz 1 Struktura wykładu 1. Identyfikacja danych reprezentowanych przez klasy podczas opracowania koncepcji prostego

Bardziej szczegółowo

JAVA I XML ZAGADNIENIA: DOM, SAX, JAXB, XMLDecoder i XMLEncoder, ANT.

JAVA I XML ZAGADNIENIA: DOM, SAX, JAXB, XMLDecoder i XMLEncoder, ANT. JAVA I XML ZAGADNIENIA: DOM, SAX, JAXB, XMLDecoder i XMLEncoder, ANT. MATERIAŁY: http://www.mkyong.com/tutorials/java-xml-tutorials/ http://ant.apache.org http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA,

Bardziej szczegółowo

SWING c.d. przydatne narzędzia: JFileChooser, JOptionPane. drag'n drop, menu kontekstowe.

SWING c.d. przydatne narzędzia: JFileChooser, JOptionPane. drag'n drop, menu kontekstowe. SWING c.d. ZAGADNIENIA: przydatne narzędzia: JFileChooser, JOptionPane. drag'n drop, menu kontekstowe. MATERIAŁY: http://docs.oracle.com/javase/tutorial/uiswing/dnd/ http://th-www.if.uj.edu.pl/zfs/ciesla/

Bardziej szczegółowo

Aplikacje w środowisku Java

Aplikacje w środowisku Java Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - wprowadzenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 Klasa zbiór pól i metod Obiekt

Bardziej szczegółowo

Podstawy programowania obiektowego

Podstawy programowania obiektowego Podstawy programowania obiektowego Technologie internetowe Wykład 5 Program wykładu Podejście obiektowe kontra strukturalne do tworzenie programu Pojęcie klasy i obiektu Składowe klasy: pola i metody Tworzenie

Bardziej szczegółowo

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r. Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r. Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to

Bardziej szczegółowo

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji. JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod

Bardziej szczegółowo

Platformy Programistyczne Wykład z Javy dla zaawansowanych

Platformy Programistyczne Wykład z Javy dla zaawansowanych Platformy Programistyczne Wykład z Javy dla zaawansowanych Agata Migalska 20 maja 2014 Plan wykładu 1 Polimorfizm i dziedziczenie 2 Życie i śmierć obiektu 3 Poziomy oraz modyfikatory dostępu 4 Obsługa

Bardziej szczegółowo

XML w.net. Dominik Baś nr alb. 160345. Wrocław, 29 maja 2007

XML w.net. Dominik Baś nr alb. 160345. Wrocław, 29 maja 2007 XML w.net Dominik Baś nr alb. 160345 Wrocław, 29 maja 2007 Przetwarzanie dokumentów XML API: SAX Simple Api for XML - przetwarzanie strumieniowe DOM - Document Object Model - odwzorowanie dokumentu XML

Bardziej szczegółowo

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej Programowanie obiektowe Interfejsy Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Interfejsy Autor: Paweł Rogaliński Instytut Informatyki,

Bardziej szczegółowo

Multimedia JAVA. Historia

Multimedia JAVA. Historia Multimedia JAVA mgr inż. Piotr Odya piotrod@sound.eti.pg.gda.pl Historia 1990 rozpoczęcie prac nad nowym systemem operacyjnym w firmie SUN, do jego tworzenia postanowiono wykorzystać nowy język programowania

Bardziej szczegółowo

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków mgr inż. Maciej Lasota Version 1.0, 13-05-2017 Spis treści Wyjątki....................................................................................

Bardziej szczegółowo

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java Aplikacje Internetowe Podstawy języka Java Najprostsza aplikacja class Hello { public static void main(string[] args) { System.out.println("Hello World!"); Komponenty Javy JRE Java Runtime Environment

Bardziej szczegółowo

Załącznik nr 14 Struktura logiczna korekty informacji podsumowującej o dokonanych wewnątrzwspólnotowych dostawach/nabyciach towarów (VAT-UEK)

Załącznik nr 14 Struktura logiczna korekty informacji podsumowującej o dokonanych wewnątrzwspólnotowych dostawach/nabyciach towarów (VAT-UEK) Załącznik nr 14 Struktura logiczna korekty informacji podsumowującej o dokonanych wewnątrzwspólnotowych dostawach/nabyciach towarów (VAT-UEK) Nazwa pliku XSD: http://e-deklaracje.mf.gov.pl/repozytorium/deklaracje/vat/vat-uek(1)_v2-0.xsd

Bardziej szczegółowo

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static), Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Krzysztof Lemay, Naughton Barteczko R. Cadenhead JAVA, Java Podręcznik 2 wykłady dla kaŝdego Języka i ćwiczenia Programowania

Bardziej szczegółowo

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019 Wykład 3 22 marca 2019 Klasy wewnętrzne Klasa wewnętrzna class A {... class B {... }... } Klasa B jest klasa wewnętrzna w klasie A. Klasa A jest klasa otaczajac a klasy B. Klasy wewnętrzne Właściwości

Bardziej szczegółowo

Wykład 7: Pakiety i Interfejsy

Wykład 7: Pakiety i Interfejsy Wykład 7: Pakiety i Interfejsy Plik Źródłowy w Javie Składa się z: instrukcji pakietu (pojedyncza, opcjonalna) instrukcji importujących (wielokrotne, opcjonalne) deklaracji klasy publicznej (pojedyncza,

Bardziej szczegółowo

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java   1 / 13 Klasy Klasa to grupa obiektów, które mają wspólne właściwości, a obiekt jest instancją klasy. Klasa w języku Java może zawierać: pola - reprezentują stan obiektu (odniesienie do pola z kropką), methods

Bardziej szczegółowo

Obiektowy model dokumentu. Katedra Mikroelektroniki i Technik Informatycznych

Obiektowy model dokumentu. Katedra Mikroelektroniki i Technik Informatycznych Katedra Mikroelektroniki i Technik Informatycznych Łódź, 14 października 2005 roku Wstęp DOM Document Object Model zapewnia: Zbiór obiektów reprezentujących dokumenty XML i HTML. Model łączenia obiektów.

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.

Bardziej szczegółowo

Programowane refleksyjne i serializacja

Programowane refleksyjne i serializacja 1 Programowane refleksyjne i serializacja 1. Programowanie refleksyjne: przegląd wybranych klas z pakietu java.lang i java.lang.reflect, dynamiczne obiekty proxy. 2. Serializacja interfejs Serializable,

Bardziej szczegółowo

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018 Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy

Bardziej szczegółowo

Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej

Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej dr inż. Paweł Czarnul pczarnul@eti.pg.gda.pl Architektury usług internetowych laboratorium

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Problem: Jak zaimplementować stos? Co się stanie gdy dodamy do stosu obiekt typu Czlowiek? Co się stanie, gdy spróbujemy ten obiekt odczytać

Bardziej szczegółowo

Systemy Rozproszone - Ćwiczenie 6

Systemy Rozproszone - Ćwiczenie 6 Systemy Rozproszone - Ćwiczenie 6 1 Obiekty zdalne Celem ćwiczenia jest stworzenie obiektu zdalnego świadczącego prostą usługę nazewniczą. Nazwy i odpowiadające im punkty końcowe będą przechowywane przez

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;

Bardziej szczegółowo

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016 Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa

Bardziej szczegółowo

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie Języki Programowania II Wykład 3 Java podstawy Przypomnienie Analiza, projektowanie, programowanie, testowanie, wdrażanie Iteracyjnie nie kaskadowo Przypadki użycia = opowiastki o używaniu systemu = wymagania

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe III. Refleksja Małgorzata Prolejko OBI JA16Z03 Plan Klasa Class. Analiza funkcjonalności klasy. Podstawy obsługi wyjątków. Zastosowanie refleksji do analizy obiektów. Wywoływanie

Bardziej szczegółowo

Procesowanie dokumentów XML

Procesowanie dokumentów XML Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej Procesowanie dokumentów XML Programowanie w Javie 2 mgr inż. Michał Misiak Cechy XML Sformalizowany zapis informacji restrykcyjne

Bardziej szczegółowo

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu. Wstęp Java Zadanie Celem laboratorium jest zapoznanie się z podstawami platformy oraz języka Java. W ramach zadania należy przygotować aplikację zarządzania notatkami użytkownika obsługiwaną z konsoli.

Bardziej szczegółowo

Plan wykładu CORBA. Cechy aplikacji rozproszonych. Aplikacje rozproszone

Plan wykładu CORBA. Cechy aplikacji rozproszonych. Aplikacje rozproszone Plan wykładu CORBA Wprowadzenie Architektura CORBA IDL język definicji interfejsów ORB Object Request Broker Usługi i POA Aplikacje CORBA tworzenie serwera tworzenie klienta Aplikacje rozproszone Cechy

Bardziej szczegółowo

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu. Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu. Dr inż. Zofia Kruczkiewicz Dwa sposoby tworzenia apletów Dwa sposoby

Bardziej szczegółowo

Podstawy i języki programowania

Podstawy i języki programowania Podstawy i języki programowania Laboratorium 8 - wprowadzenie do obsługi plików tekstowych i wyjątków mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 11 grudnia 2017 1 / 34 mgr inż. Krzysztof

Bardziej szczegółowo

Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wykład 06

Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wykład 06 Plan Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wykład 06 T. Romańczukiewicz Jagiellonian University 2009/2010 Plan Plan 1 SAX 2 Podsumowanie Plan SAX Podsumowanie Przypomnienie Wstęp Obsługa

Bardziej szczegółowo

Podstawy Języka Java

Podstawy Języka Java Podstawy Języka Java Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to paradygmat programowania, w którym programy definiuje się za pomocą obiektów elementów łączących

Bardziej szczegółowo

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU Konstrukcja obiektów Niszczenie obiektów i zwalnianie zasobów

Bardziej szczegółowo

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016 Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac

Bardziej szczegółowo

Aplikacje RMI. Budowa aplikacji rozproszonych. Część 2.

Aplikacje RMI. Budowa aplikacji rozproszonych. Część 2. Aplikacje RMI Część 2 Budowa aplikacji rozproszonych http://java.sun.com/j2se/1.5.0/docs/guide/rmi/socketfactory/index.html I. Implementacja gniazd dziedziczących po Socket i ServerSocket oraz produkcji

Bardziej szczegółowo

Aplikacje RMI Lab4

Aplikacje RMI   Lab4 Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Lab4 Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych 1 1. Koncepcja budowy aplikacji RMI (aplikacja rozproszonych

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Polimorfizm, metody wirtualne i klasy abstrakcyjne Programowanie obiektowe Polimorfizm, metody wirtualne i klasy abstrakcyjne Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Polimorfizm,

Bardziej szczegółowo

Technologie i usługi internetowe cz. 2

Technologie i usługi internetowe cz. 2 Technologie i usługi internetowe cz. 2 Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 15 luty 2014 r. 1 Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to paradygmat programowania,

Bardziej szczegółowo

Wprowadzenie do języka Java

Wprowadzenie do języka Java WSNHiD, Programowanie 2 Lab. 1 [ część 1 ] Wprowadzenie do języka Java Wprowadzenie Język programowania Java jest obiektowym językiem programowania. Powstał w 1995 i od tej pory był intensywnie rozwijany.

Bardziej szczegółowo

XML we własnych aplikacjach

XML we własnych aplikacjach XML we własnych aplikacjach Patryk Czarnik Instytut Informatyki UW XML i nowoczesne technologie zarzadzania treścia 2008/09 Patryk Czarnik 09 Programy XML 2008/09 1 / 1 Wprowadzenie XML we własnych aplikacjach

Bardziej szczegółowo

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Informatyka I Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 1 Plan wykładu

Bardziej szczegółowo

Schematy XML. Tomasz Traczyk. ttraczyk@ia.pw.edu.pl http://www.ia.pw.edu.pl/~ttraczyk/

Schematy XML. Tomasz Traczyk. ttraczyk@ia.pw.edu.pl http://www.ia.pw.edu.pl/~ttraczyk/ Schematy XML Tomasz Traczyk ttraczyk@ia.pw.edu.pl http://www.ia.pw.edu.pl/~ttraczyk/ Plan prezentacji Dlaczego schematy? Przykład schematu XML Schema nieco szczegółów Rola schematów XML Problemy z DTD

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Przygotował: Jacek Sroka 1 Programowanie obiektowe Wykład 3 Java podstawy Przygotował: Jacek Sroka 2 Przypomnienie Analiza, projektowanie, programowanie, testowanie, wdrażanie Iteracyjnie nie kaskadowo

Bardziej szczegółowo

Podstawy XML-a. Zaawansowane techniki programowania

Podstawy XML-a. Zaawansowane techniki programowania Podstawy XML-a Zaawansowane techniki programowania Dokumenty XML XML = ang. Extensible Markup Language rozszerzalny język znaczników

Bardziej szczegółowo

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński Java - wprowadzenie Programowanie Obiektowe Mateusz Cicheński O języku Czym jest Java Cechy charakterystyczne języka Przykładowe zastosowania Składnia języka Podstawowe typy Wybrane słowa kluczowe Plan

Bardziej szczegółowo

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1 Obiektowe programowanie rozproszone Java RMI Krzysztof Banaś Systemy rozproszone 1 Java RMI Mechanizm zdalnego wywołania metod Javy (RMI Remote Method Invocation) posiada kilka charakterystycznych cech,

Bardziej szczegółowo

Przykładowy dokument XML

Przykładowy dokument XML Przykładowy dokument XML DTD - wady Ograniczona kontrola nad strukturą dokumentów. Zbyt wysokopoziomowe typy danych: liczby, daty są zawsze reprezentowane jako tekst! Bardzo ogólne metody definiowania

Bardziej szczegółowo

Wzorce prezentacji internetowych

Wzorce prezentacji internetowych Wzorce prezentacji internetowych 1. Model kontrolera widoku (Model View Controller). 2. Kontroler strony (Page Controller). 3. Kontroler fasady (Front Controller). 4. Szablon widoku (Template View). 5.

Bardziej szczegółowo

Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html

Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Dr inż. Zofia Kruczkiewicz wykład 4 Programowanie aplikacji internetowych, wykład 4 1 1. Zadania aplikacji rozproszonych obiektów

Bardziej szczegółowo

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1 Współbieżność i równoległość w środowiskach obiektowych Krzysztof Banaś Obliczenia równoległe 1 Java Model współbieżności Javy opiera się na realizacji szeregu omawianych dotychczas elementów: zarządzanie

Bardziej szczegółowo

Programowanie w języku Java

Programowanie w języku Java Katedra Inżynierii Wiedzy laborki 7 Rysunek: Przykładowa klasa Rysunek: Przykładowa klasa Rysunek: Przykładowa klasa Rysunek: Przykładowa klasa Rysunek: Zapis do pliku Rysunek: Odczyt z pliku Rysunek:

Bardziej szczegółowo

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016 Wstęp - wykład 0 22 lutego 2016 Historia Simula 67 język zaprojektowany do zastosowan symulacyjnych; Smalltalk 80 pierwszy język w pełni obiektowy; Dodawanie obiektowości do języków imperatywnych: Pascal

Bardziej szczegółowo

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run(). Wątki Streszczenie Celem wykładu jest wprowadzenie do obsługi wątków w Javie. Czas wykładu 45 minut. Definiowanie wątków jako klas potomnych Thread Nadpisanie metody run(). class Watek extends Thread public

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Podstawowe cechy i możliwości języka Scala mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 2017 1 / 32 mgr inż. Krzysztof Szwarc Programowanie obiektowe Informacje

Bardziej szczegółowo

Wykład 8: klasy cz. 4

Wykład 8: klasy cz. 4 Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD

Bardziej szczegółowo

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz Aplikacja internetowa zbudowana w oparciu o środowisko Visual Web Java Server Faces. Zarządzanie obiektami typu SesionBeans, RequestBeen i ApplicationBeans, Laboratorium 1 Wzorce oprogramowania lab1, Okres

Bardziej szczegółowo

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami. UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania Diagramy przypadków użycia Przewoznik Zarzadzanie pojazdami Optymalizacja Uzytkownik Wydawanie opinii Zarzadzanie uzytkownikami

Bardziej szczegółowo

Diagramy klas. dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com

Diagramy klas. dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com Diagramy klas dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com O czym będzie? Notacja Ujęcie w różnych perspektywach Prezentacja atrybutów Operacje i metody Zależności Klasy aktywne,

Bardziej szczegółowo

XML i nowoczesne technologie zarządzania treścią

XML i nowoczesne technologie zarządzania treścią XML i nowoczesne technologie zarządzania treścią Egzamin, 7 lutego 2014 r. Imię i nazwisko: Czas: 90 minut. Maksymalna suma punktów: 50. Pytania testowe są wielokrotnego wyboru, można przyjąć że co najmniej

Bardziej szczegółowo

Programowanie w Javie 1 Wykład i Ćwiczenia 2 Przegląd podstawowych klas w Javie (elementy programowania obiektowego) Płock, 16 października 2013 r.

Programowanie w Javie 1 Wykład i Ćwiczenia 2 Przegląd podstawowych klas w Javie (elementy programowania obiektowego) Płock, 16 października 2013 r. Programowanie w Javie 1 Wykład i Ćwiczenia 2 Przegląd podstawowych klas w Javie (elementy programowania obiektowego) Płock, 16 października 2013 r. Czym jest obiekt w programowaniu obiektowym? Programowanie

Bardziej szczegółowo

JAX-RS czyli REST w Javie. Adam Kędziora

JAX-RS czyli REST w Javie. Adam Kędziora JAX-RS czyli REST w Javie Adam Kędziora Webservice Usługa sieciowa (ang. web service) komponent programowy niezależny od platformy i implementacji, dostarczający określonej funkcjonalności. SOAP,UDDI,XML,WSDL

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe IV. Interfejsy i klasy wewnętrzne Małgorzata Prolejko OBI JA16Z03 Plan Właściwości interfejsów. Interfejsy a klasy abstrakcyjne. Klonowanie obiektów. Klasy wewnętrzne. Dostęp do

Bardziej szczegółowo

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie

Bardziej szczegółowo