XML i Java. Technologie zarządzania treścią. dr inż. Robert Perliński rperlinski@icis.pcz.pl

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

Download "XML i Java. Technologie zarządzania treścią. dr inż. Robert Perliński rperlinski@icis.pcz.pl"

Transkrypt

1 XML i Java Technologie zarządzania treścią dr inż. Robert Perliński rperlinski@icis.pcz.pl Politechnika Częstochowska Instytut Informatyki Teoretycznej i Stosowanej

2 XML i Java 2/57 SAX vs. DOM Dwa podstawowe typy API do przetwarzania dokumentów XML: Oparte na drzewach (ang. Tree-based API ) - mapują strukturę dokumentu do drzewa i pozwalają użytkownikowi nawigować po tym drzewie. Oparte na zdarzeniach (ang. Event based API ) - zgłaszają zdarzenia występujące podczas parsowania (np. początek/koniec elementu). Zdarzenia są zgłaszane do aplikacji za pomocą callback u. Aplikacja implementuje metody (handlery) przechwytujace te zdarzenia w sposób podobny do obsługi zdarzeń generowanych przez GUI.

3 XML i Java 3/57 SAX vs. DOM DOM - czesto użyteczne, ale wykorzystują dużo zasobów, szczególnie w przypadku dużych dokumentów. Jesli aplikacje wykorzystują swoje własne struktury danych niekorzystne jest budowanie drzewa tylko po to, żeby na jego podstawie zbudować obiekty wewnętrznych struktur danych. SAX pozwala na parsowanie dokumentów dużo większych niż dostępne zasoby pamięciowe. Własne struktury danych mogą być tworzone za pomocą metod wykorzystywanych do obsługi zdarzeń.

4 XML i Java 4/57 Kiedy używać SAX - przykład ZADANIE: W dokumencie XML wielkosci 20MB znaleźć element zawierający słowo Częstochowa. Wykorzystanie DOM - tworzenie drzewa dla tak dużego dokumentu tylko po to, żeby znaleźć jeden element w zbiorze danych byłoby bardzo niekorzystne. Wykorzystanie SAX - możliwe znalezienie elementu (w metodach obsługi zdarzeń) wykorzystując minimalną ilość pamięci.

5 XML i Java 5/57 SAX - jak to działa. <?xml version="1.0"?> <doc> <para>hello, world!</para> </doc> Podczas przetwarzania dokumentu zgłoszone zostaną zdarzenia: 1 start document 2 start element: doc 3 start element: para 4 characters: Hello, world! 5 end element: para 6 end element: doc 7 end document

6 XML i Java 6/57 SAX SAX nie wymaga cache owania całego dokumentu. Umożliwia przechwytywanie zdarzeń parsowania tak jakby były to zdarzenia interesu użytkownika. Za pomocą API bazujacego na zdarzeniach możliwe jest utworzenie struktury drzewa i zmapowanie dokumentu XML do tej struktury.

7 XML i Java 7/57 Biblioteki XML w języku Java

8 XML i Java 8/57 Wykorzystanie modelu DOM Pakiet org.w3c.dom Interfejsy: Document - reprezentuje cały dokument XML (albo HTML), Node - podstawowy typ danych dla całego DOM, reprezentuje pojedynczy węzeł w drzewie dokumentu, NodeList - uporządkowana kolekcja węzłów (obiekty klasy Node), NamedNodeMap - kolekcja węzłów dostępnych po nazwie elementu, Element - reprezentuje element w dokumencie XML (albo HTML), może zawierać związane z nim atrybuty, dziedziczy po Node, Attr - reprezentuje atrybut w elemencie dokumentu XML.

9 XML i Java 9/57 Model DOM - Document Interfejs org.w3c.dom.document Najważniejsze metody: createelement(string nazwa) - tworzy element o określonej nazwie, createattribute(string nazwa) - tworzy atrybut o podanej nazwie, createtextnode(string data) - pozwala stworzyć węzeł tekstowy o zawartości data, createcomment(string data) - tworzy komentarz o treści data, createcdatasection(string data) - tworzy sekcje CDATA o zawartości data, createprocessinginstruction(string target, String data) - służy do tworzenia instrukcji przetwarzania o zawartości data, target oznacza cel czyli słowo określające aplikację przetwarzającą.

10 XML i Java 10/57 Model DOM - Document Interfejs org.w3c.dom.document Najważniejsze metody: getelementsbytagname(string tagname) - zwraca listę węzłów (NodeList) o nazwie znacznika tagname, getdocumentelement() - pozwala na dostęp do elementu głównego całego dokumentu, getxmlversion() - zwraca informację o wersji XML określonej w deklaracji XML dokumentu, getxmlencoding() - zwraca informację o kodowaniu określonym w deklaracji XML dokumentu, getxmlstandalone() - zwraca informację czy dokument XML jest samodzielny czy nie, setxmlstandalone(boolean xmlstandalone), setxmlversion(string xmlversion) - pozwala ustalić samodzielność i wersję dokumentu XML.

11 XML i Java 11/57 Model DOM - Node Interfejs org.w3c.dom.node, najważniejsze metody (wywoływane dla węzła): getchildnodes() - zwraca listę (NodeList) wszystkich dzieci węzła, getattributes() - zwraca listę atrybutów jako interfejs NamedNodeMap jeśli węzeł jest elementem, hasattributes() - zwraca prawdę jeśli węzeł ma jakiekolwiek atrybuty, haschildnodes() - zwraca prawdę jeśli węzeł ma jakiekolwiek dzieci, getnodename() - zwraca nazwę węzła, getnodevalue() - zwraca wartość węzła, zależnie od typu węzła, setnodevalue(string nodevalue) - pozwala ustalić wartość węzła, zależnie od jego typu, getnodetype() - zwraca typ węzła określny wartością stałej (short), normalize() - normalizauje zawartość tekstową tego węzła i wszyskich jego podwęzłów, normalizacja dotyczy również atrybutów,

12 XML i Java 12/57 Model DOM - Node Interfejs org.w3c.dom.node, najważniejsze metody (wywoływane dla węzła): appendchild(node newchild) - dodaje dziecko newchild do listy dzieci, replacechild(node newchild, Node oldchild) - zamienia węzeł dziecka oldchild węzłem newchild, removechild(node oldchild) - usuwa węzeł dziecka oldchild, insertbefore(node newchild, Node refchild) - wstawia węzeł newchild przed węzłem refchild, getparentnode() - zwraca rodzica daneg węzła, getfirstchild(), getlastchild() - zwraca pierwsze/ostatnie dziecko. getprevioussibling() - zwraca węzeł bezpośrednio poprzedzający dany węzeł, getnextsibling() - zwraca węzeł występujący zaraz po bierzącym węźle.

13 XML i Java 13/57 Model DOM - Node, typy węzła Wybrane stałe określające typ węzła (static short): ATTRIBUTE NODE (2) - Węzeł jest atrybutem. CDATA SECTION NODE (4) - Węzeł jest sekcją CDATA. COMMENT NODE (8) - Węzeł jest komentarzem. DOCUMENT NODE (9) - Węzeł jest całym dokumentem XML (klasa Document). ELEMENT NODE (1) - Wezeł jest elementem. ENTITY NODE (6) - Węzeł jest encją. NOTATION NODE (12) - Węzeł jest notacją. PROCESSING INSTRUCTION NODE (7) - Węzeł jest instrukcją przetwarzania. TEXT NODE (3) - Węzel tekstowy.

14 XML i Java 14/57 Model DOM - Element Interfejs org.w3c.dom.element dziedziczy po interfejsie Node. Najważniejsze unikalne metody: getattribute(string name) - zwraca wartość atrybutu o nazwie name, getattributenode(string name) - zwraca węzeł atrybutu o nazwie name, setattributenode(attr newattr) - dodaje węzeł atrybutu newattr, setattribute(string name, String value) - dodaje atrubyt o nazwie name i wartości value, removeattribute(string name) - usuwa atrybut o nazwie name, removeattributenode(attr oldattr) - usuwa atrybut oldattr, hasattribute(string name) - zwraca prawdę jeśli w elemencie występuje atrybut o nazwie name.

15 XML i Java 15/57 Model DOM - Attr Interfejs org.w3c.dom.attr, najważniejsze metody: getname() - zwraca nazwę atrybutu, getvalue() - zwraca wartość atrybutu, setvalue(string value) - ustala zawartość atrybutu na value, getownerelement() - zwraca element, do którego należy dany atrybut.

16 XML i Java 16/57 Model DOM - NodeList Interfejs org.w3c.dom.nodelist zawiera tylko dwie metody: getlength() - zwraca liczbę wezłów zawartych w liście, item(int index) - zwraca węzeł znajdujący się na pozycji index listy. Interfejs org.w3c.dom.namednodemap, najważniejsze metody: getlength() - liczba węzłow w danej kolekcji, item(int index) - zwraca węzeł znajdujący się na pozycji index, getnameditem(string name) - zwraca węzeł o nazwie name, removenameditem(string name) - usuwa węzeł o nazwie name,

17 XML i Java 17/57 Klasy i intefrejsy modelu DOM Pakiet javax.xml.parsers udostępnia klasy pozwalające na przetwarzanie dokumentów XML. Klasy: DocumentBuilder - pozwala na otrzymanie dokumentu DOM (klasa Document) na podstawie dokumentu XML, DocumentBuilderFactory - klasa pozwala otrzymać parser (klasa DocumentBuilder), który tworzy DOM z dokumentu XML.

18 XML i Java 18/57 Model DOM - tworzenie dokumentu XML Document doc = docbuilder.newdocument(); Element korzen = doc.createelement("korzen drzewa"); doc.appendchild(korzen); Element osoba = doc.createelement("osoba"); Attr attr = doc.createattribute("atrybut"); attr.setvalue("wartość"); osoba.setattributenode(attr); osoba.setattribute("wiek", "31"); korzen.appendchild(osoba); Element nazwisko = doc.createelement("nazwisko"); nazwisko.appendchild(doc.createtextnode("kowalski")); osoba.appendchild(nazwisko); Element imie = doc.createelement("imie"); imie.appendchild(doc.createtextnode("januszek")); osoba.appendchild(imie);

19 XML i Java 19/57 Tworzenie drzewa dokumentu - wynik <?xml version="1.0" encoding="utf-8"?> <korzen drzewa> <osoba atrybut="wartość" wiek="31"> <nazwisko>kowalski</nazwisko> <imie>januszek</imie> </osoba> </korzen drzewa>

20 XML i Java 20/57 Model DOM - drzewo dokumentu z pliku XML Zamiast tworzyć dokument samodzielnie można go stworzyć wczytując/parsując plik XML. Wystarczy klasa File i DocumentBuilder. File fxmlfile = new File("xml/note.xml"); DocumentBuilderFactory docfactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docbuilder = docfactory.newdocumentbuilder(); // tworzenie pustego dokumentu // Document doc = docbuilder.newdocument(); // tworzenie dokumentu z pliku XML Document doc = docbuilder.parse(fxmlfile);...

21 XML i Java 21/57 Przekształcanie drzewa DOM do pliku Pakiet javax.xml.transform udostępnia API pozwalające przekształcić Dokument z modelu DOM do strumienia wyjściowego. Strumieniem wyjściowym może być plik lub ekran (System.out). Klasy: Transformer - pozwala na przekształcenie źródła dokumentu z modelu DOM do strumienia wyjściowego. TransformerFactory - klasa pozwala otrzymać obiekt klasy Transformer.

22 XML i Java 22/57 Zapis dokumentu XML - Transformer try { DocumentBuilderFactory docfactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docbuilder = docfactory.newdocumentbuilder(); Document doc = docbuilder.newdocument();... TransformerFactory transformerfactory = TransformerFactory.newInstance(); Transformer transformer = transformerfactory.newtransformer(); DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(new File("zapisany.xml")); transformer.transform(source, result); catch (ParserConfigurationException pce) { pce.printstacktrace(); catch (TransformerException te) { te.printstacktrace();

23 XML i Java 23/57 Tworzenie drzewa dokumentu - przykład try { DocumentBuilderFactory docfactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docbuilder = docfactory.newdocumentbuilder(); Document doc = docbuilder.newdocument(); Element korzen = doc.createelement("korzen_drzewa"); doc.appendchild(korzen); Element osoba = doc.createelement("osoba"); korzen.appendchild(osoba); Element nazwisko = doc.createelement("nazwisko"); nazwisko.appendchild(doc.createtextnode("kowalski")); osoba.appendchild(nazwisko); Element imie = doc.createelement("imie"); imie.appendchild(doc.createtextnode("januszek")); osoba.appendchild(imie); TransformerFactory transformerfactory = TransformerFactory.newInstance(); Transformer transformer = transformerfactory.newtransformer(); DOMSource source = new DOMSource(doc); // wypisanie dokumentu XML na ekran StreamResult result = new StreamResult(System.out); transformer.transform(source, result); catch (ParserConfigurationException pce) { pce.printstacktrace(); catch (TransformerException te) { te.printstacktrace();

24 XML i Java 24/57 Tworzenie drzewa dokumentu - przykład try { DocumentBuilderFactory docfactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docbuilder = docfactory.newdocumentbuilder(); Document doc = docbuilder.newdocument(); Element korzen = doc.createelement("korzen_drzewa"); doc.appendchild(korzen); Element osoba = doc.createelement("osoba"); korzen.appendchild(osoba); Element nazwisko = doc.createelement("nazwisko"); nazwisko.appendchild(doc.createtextnode("kowalski")); osoba.appendchild(nazwisko); Element imie = doc.createelement("imie"); imie.appendchild(doc.createtextnode("januszek")); osoba.appendchild(imie); TransformerFactory transformerfactory = TransformerFactory.newInstance(); Transformer transformer = transformerfactory.newtransformer(); DOMSource source = new DOMSource(doc); // zapisanie dokumentu XML do pliku StreamResult result = new StreamResult(new File("zapisany.xml")); transformer.transform(source, result); catch (ParserConfigurationException pce) { pce.printstacktrace(); catch (TransformerException te) { te.printstacktrace();

25 XPath i XQuery w języku Java XML i Java 25/57

26 XML i Java 26/57 XPath w języku Java Pakiet javax.xml.xpath. Obsługa xpath jest domyślnie w bibliotekach Javy, inaczej niż XQuery. Interfejsy/Klasy: XPath - interfejs udostępnia dostęp do wyrażeń XPath, XPathFactory - klasa pozwala na stworzenie instancji obiektu XPath, XPathExpressionException - klasa do obsługi błędów w wyrażeniu XPath, XPathConstants - klasa zawiera pola statyczne określające typ zwracanej wartości przez metode evaluate interfejsu XPath. org.xml.sax.inputsource - klasa opakowująca dane wejściowe, np. plik XML w obiekt.

27 XML i Java 27/57 XPath Interfejs javax.xml.xpath.xpath, najważniejsze metody: evaluate(string expression, InputSource source) - przetwarza wyrażenie expression w obszarze określonym przez source, wartość zwracana jako String, evaluate(string expression, InputSource source, QName returntype) - jak wyżej tylko returntype określa typ zwracanej wartości - typy XPathConstants, compile(string expression) - kompiluje wyrażenie XPath do późniejszego użycia, zwraca XPathExpression, reset() - resetuje XPath do stanu jaki miał on zaraz po utworzeniu XPathFactory.newXPath().

28 XML i Java 28/57 Typy XPathConstants Pola klasy XPathConstants (według specyfikacji XPath 1.0): BOLEAN - typ loginczy, DOM OBJECT MODEL - URI dla modelu obiektowego DOM, NODE - typ danych odpowiadający węzłowi, NODESET - typ danych odpowiadający zbiorowi węzłów, NUMBER - wartości liczbowa, STRING - napis, typ string.

29 XML i Java 29/57 XPath w języku Java - nazwa przedszkola // utworzenie obiektu xpath XPath xpath = XPathFactory.newInstance().newXPath(); String expression = "/przedszkole/nazwa"; InputSource inputsource = new InputSource("xml/przedszkole.xml"); try { NodeList nodes = (NodeList) xpath.evaluate( expression, inputsource, XPathConstants.NODESET ); // lista węzłów bo NODESET... Node n = nodes.item(0); // wartości węzła są zawsze w węzłach tekstowych jako dzieci elementu System.out.println( n.getnodename() + " - " + n.getfirstchild().getnodevalue() ); catch (XPathExpressionException e) { e.printstacktrace();

30 XML i Java 30/57 XPath w języku Java - imiona dzieci z grupy drugiej XPath xpath = XPathFactory.newInstance().newXPath(); String expression = "//grupa[@id=2]"; InputSource inputsource = new InputSource("xml/przedszkole.xml"); try { Node grupa = (Node) xpath.evaluate(expression, inputsource, XPathConstants.NODE); System.out.println(grupa.getNodeName()); XPath xpath2 = XPathFactory.newInstance().newXPath(); String expression2 = "dziecko/osoba/imie"; // wyrażnie wybiera dane z wyników pierwrzego wyrażenia - grupa NodeList imiona = (NodeList) xpath2.evaluate( expression2, grupa, XPathConstants.NODESET); for(int i=0; i<imiona.getlength(); ++i) { Node n = imiona.item(i); System.out.println( n.getnodename() + " - " + n.getfirstchild().getnodevalue()); catch (XPathExpressionException e) { e.printstacktrace();

31 XML i Java 31/57 XQuery w języku Java Podstawowe API Javy nie zawiera obsługi XQuery. Aby wykorzystać XQuery w języku Java należy wykorzystać dodatkowy pakiet. Biblioteka Saxonica ( Dokumentacja: Dwa pakiety ( saxon9he.jar - Saxon Home Edition dla Javy saxon9-xqj.jar - XQJ (ang. XQuery API for Java)

32 XML i Java 32/57 XQuery w języku Java Pakiet javax.xml.xquery Interfejs: XQDataSource - pozwala na tworzenie połączenia XQConnection. XQConnection - pozwala na uzyskanie połączenia z odpowiednim mechanizmem XQuery. Połączenie jest uzyskiwane przez objekt XQDataSource. XQExpression - towrzy obiekt wyrażeń z języka XQuery. Metoda executequery() pozwala na wykonanie zapytania. XQSequence - interfejs obsługujący sekwencje pozycji opisanych zgodnie z XDM (ang. XQuery and XPath Data Model) XQDataSource ds = new SaxonXQDataSource(); XQConnection conn = ds.getconnection(); XQExpression exp = conn.createexpression(); XQSequence seq = exp.executequery( "for $i in doc( xml/przedszkole.xml )//nazwa return $i" ); com.saxonica.xqj.saxonxqdatasource - Implementacja XQJ XQDataSource biblioteki Saxon.

33 XML i Java 33/57 XQuery - przykład Dokumentacja Java API: try { XQDataSource ds = new SaxonXQDataSource(); XQConnection conn = ds.getconnection(); XQExpression exp = conn.createexpression(); XQSequence seq = exp.executequery( "for $i in doc( xml/przedszkole.xml )//nazwa return $i"); while (seq.next()) { System.out.println(seq.getSequenceAsString(null)); catch (XQException e) { e.printstacktrace();

34 SAX - Simple API for XML w języku Java XML i Java 34/57

35 SAX - podstawowe API SAX nie działa tak jak DOM. Nie wczytuje dokumentu do pamięci jak również nie tworzy reprezentacji obiektowej dokumentu XML. Zamiast tego SAX wywołuje odpowiednie funkcje w odpowiedzi na napotkane zdarzenia. Pakiet org.xml.sax Pakiet org.xml.sax.helpers DefaultHandler - domyślna klasa bazowa do obsługi zdarzeń SAX2. W obiekcie tej klasy należy dodać funkcje obsługujące zdarzenia, początku elementu, końca elementu, itp. Pakiet javax.xml.parsers - udostępnia klasy pozwalające przetwarzać dokumenty XML. Klasy: SAXParser - parser SAX dla XML opakowujący/zawierający interfejs XMLReader. SAXParserFactory - klasa pozwala na otrzymanie parsera SAX (klasa SAXParser), który pozwala na parsowanie dokumentów XML. XML i Java 35/57

36 SAX - DefaultHandler Wybrane medody klasy org.xml.sax.helpers.defaulthandler. Programista musi przeładować poniższe metody aby obsłużyć zdarzenia wywoływane podczas parsowania dokumentu XML. startdocument() - obsługuje zdarzenie napotkania przez parser początku dokumentu. enddocument() - obsługuje zdarzenie napotkania przez parser końca dokumentu. startelement(string uri, String localname, String qname, Attributes attributes) - obsługuje zdarzenie napotkania początku elementu (qname określa nazwę elementu, attributes lista atrybutów dostępnych przez interfejs Attributes). endelement(string uri, String localname, String qname) - obsługuje zdarzenie końca elementu (qname określa nazwę elementu). characters(char[] ch, int start, int length) - odbiera informacje o danych znakowych wewnątrz elementu. Wszystkie powyższe metody w przypadku błędów wyrzucają SAXException. XML i Java 36/57

37 XML i Java 37/57 SAX - DefaultHandler - przykład DefaultHandler handler = new DefaultHandler() { public void characters(char[] ch,int start,int length) throws SAXException { System.out.println("Dane znakowe: " + new String(ch, start, length)); ; public void startelement(string uri, String localname,string qname, Attributes attributes) throws SAXException { System.out.println("Początek elementu :" + qname); public void endelement(string uri, String localname, String qname) throws SAXException { System.out.println("Koniec elementu :" + qname); public void startdocument() throws SAXException { System.out.println("Początek DOKUMENTU"); public void enddocument() throws SAXException { System.out.println("Koniec DOKUMENTU");

38 XML i Java 38/57 Interfejs Attributes Interfejs Attributes pozwala na dostęp do listy atrybutów na trzy sposoby: przez indeks atrybutu, przez nazwę atrybutu z podaniem URI przestrzeni nazw, przez nazwę atrybutu razem z prefiksem (nawa kwalifikowana - qname). Metody intefrejsu Attributes: getindex(string qname) - zwraca indeks atrybutu o podanej nazwie kwalifikowanej (razem z prefiksem), getindex(string uri, String localname) - zwraca indeks atrybutu o podanej nazwie w przestrzeni nazw określonej podanym URI.

39 XML i Java 39/57 Interfejs Attributes Wybrane metody intefrejsu Attributes: getlength() - zwraca liczbę atrybutów w liście, getlocalname(int index) - zwraca nazwę atrybutu i podanym indeksie, getqname(int index) - zwraca pełną, kwalifikowaną nazwę atrybutu, geturi(int index) - zwraca URI prestrzeni nazw atrybutu o podanym indeksie, getvalue(int index) - zwraca wartość atrybutu o podanym indeksie, getvalue(string qname) - zwraca wartość atrybutu o podanej nazwie, gettype(int index) - zwraca typ atrybutu o podanym indeksie, gettype(string qname) - zwraca typ atrybutu o podanej nazwie.

40 XML i Java 40/57 Typy atrybutów interfejsu Attributes Typy atrybutów zwracane przez metodę gettype() intefrejsu Attributes: CDATA, ID, IDREF, IDREFS, NMTOKEN, NMTOKENS, ENTITY, ENTITIES, NOTATION.

41 XML i Java 41/57 Interfejs Attributes - przykład Wyświetlenie na ekranie nazwy i wartości wszystkich atrybutów parsowanego elementu. // metoda z klasy DefaultHandler wykonywania przy napodkaniu nowego elementu public void startelement( String uri, String localname,string qname, Attributes attributes) throws SAXException { for(int i=0; i < attributes.getlength(); i++) { System.out.print( attributes.getlocalname(i) + attributes.getvalue(i) );

42 XML i Java 42/57 SAX - SAXParser, SAXParserFactory Klasa SAXParserFactory, metody: newinstance() - metoda statyczna, tworzy nową instancję obiektu SAXParserFactory, newsaxparser() - tworzy nową instancję parsera SAXParser. Klasa SAXParser, metody: parse(file f, DefaultHandler dh) - przetwarza zawartość pliku XML używając od obsługi obiektu klasy DefaultHandler. try { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser saxparser = factory.newsaxparser(); DefaultHandler handler = new DefaultHandler() {... ; saxparser.parse("dokument.xml", handler); catch (Exception e) { e.printstacktrace();

43 Zapis dokumentu XML Interfejs javax.xml.stream.xmlstreamwriter, najważniejsze medoty: writestartdocument() - zapisuje deklarację XML, writeenddocument() - zamyka otwarte znaczniki i zapisuje je w pliku, writestartelement(string localname) - zapisuje początkowy znacznik o nazwie localname, writeendelement() - zapisuje odpowiedni znacznik końcowy bazując na stanie XMLStreamWriter, writecharacters(string text) - zapisuje zawartość tekstową (text), writeattribute(string localname, String value) - zapisuje atrybut o nazwie localname i wartości value, writecomment(string data) - zapisuje do strumienia komentarz o wartości data. Plik tekstowy jest przetwarzany na strumień za pomocą FileOutputStream. Uzyskujemy obiekt OutputStream. Na bazie tego tworzymy OutputStreamWriter, który służy do stworzenia interfejsu XMLStreamWriter. XML i Java 43/57

44 XML i Java 44/57 Zapis dokumentu XML - XMLStreamWriter Przykład tworzenia dokumentu XML za pomocą klasy XMLStreamWriter. OutputStream outputstream = new FileOutputStream(new File("doc.xml")); XMLStreamWriter out = XMLOutputFactory.newInstance().createXMLStreamWriter( new OutputStreamWriter(outputStream, "utf-8")); out.writestartdocument(); // tworzy nagłówek XML out.writestartelement("doc"); // znacznik otwierający doc out.writestartelement("title"); out.writecharacters("document Title"); out.writeendelement(); out.writeendelement(); out.writeenddocument(); // znacznik zamykający doc, konieczny jeśli... out.close();

45 Serializacja do XML w języku Java XML i Java 45/57

46 XML i Java 46/57 Serializacja w języku Java W procesie serializacji używane są strumienie z języka Java. Znaczna część klas będących strumieniami udostępnia tylko zapis/odczyt obiektów podstawowych (liczby, stringi, tablice). Java zawiera udogodnienie pozwalające na strumieniowanie dowolnych obiektów. Przekształcenie takiego strumienia na postać binarną lub znakową (np. XML) to serializacja. Odczytanie zapisanych w formie binarnej czy tekstowej obiektów to deserializacja. Ważne jest aby proces serializacji był odwracalny.

47 XML i Java 47/57 Po co jest serializacja? Potrzeba utrwalenia danych w aplikacjach. Możliwe przyczyny: konieczność zachowania danych w pamięci między uruchomieniami aplikacji, brak miejsca w pamięci na wszystkie dane aplikacji jednocześnie - potrzeba zapisania części z nich, zabezpieczenie przed utratą danych. Jeśli nie ma konieczności przeszukiwania składowanych informacji można zamiast baz danych wybrać właśnie serializację. W przypadku serializacji to użytkownik decyduje o miejscu przechowywania plików z danymi na dysku. Serializacja zapewnia pewną trwałość danych przetwarzanych w aplikacjach.

48 XML i Java 48/57 Gdzie używa się serializacji? Gdzie używa się serializacji? Jeśli mamy rozproszone aplikacje obiektowe to najłatwiej przesyłać przez sieć całe obiekty. Na gniazdach sieciowych można strumieniami przesyłać całe obiekty. Serializacja z użyciem obiektów jest też używana do przekazywania parametrów i wartości zwracanych przy zdalnym wywoływaniu metod. Serializacja leży u podstaw Java RMI wykorzystywanego w wielu technologiach.

49 XML i Java 49/57 Serializacja do obiektów binarnych Serializacja na postać binarną wykorzystuje klasy: ObjectOutputStream (metoda writeobject(object) ), ObjectInputStream (metoda readobject() ), Obiekt podlegający serializacji musi implementować interfejs java.io.serializable. Jest to interfejs bez metod. Pełni tylko funkcję znacznika. Serializowany jest obiekt przekazany w metodzie writeobject i wszystkie zawarte w nim obiekty. Serializacji poddawany jest cały graf obiektów. Wszystkie obiekty podlegające serializacji powinny implementować interfejs java.io.serializable.

50 XML i Java 50/57 Serializacja do postaci binarnej - przykład SerBin.java import java.io.*; class Książka implements Serializable { String tytuł; int rokwydania; Autor autor; Książka(String tytuł, int rokwydania, Autor autor) { this.tytuł = tytuł; this.rokwydania = rokwydania; this.autor = autor; System.out.println("wywołanie konstruktora klasy Książka"); public String tostring() { String adrpamięć = super.tostring(); return adrpamięć+"(" + tytuł + ", " + rokwydania + ", " + autor + ")";

51 XML i Java 51/57 Serializacja do postaci binarnej - przykład SerBin.java class Autor implements Serializable { String nazwisko; String imię; Autor(String nazwisko, String imię) { this.nazwisko = nazwisko; this.imię = imię; System.out.println("wywołanie konstruktora klasy Autor"); public String tostring() { String adrpamięć = super.tostring(); return adrpamięć + "(" + nazwisko + ", " + imię + ")";

52 XML i Java 52/57 Serializacja do postaci binarnej - przykład SerBin.java public class SerBin { public static void main(string[] args) throws Exception { Autor sienkiewicz = new Autor("Sienkiewicz", "Henryk"); Książka pust = new Książka("W pustyni i w puszczy", 1911, sienkiewicz); System.out.println(pust); ObjectOutputStream out = new ObjectOutputStream( new BufferedOutputStream( new FileOutputStream("ksiazka.bin"))); out.writeobject("książka"); out.writeobject(pust); out.close(); ObjectInputStream in = new ObjectInputStream( new BufferedInputStream( new FileInputStream("ksiazka.bin"))); String nagłówek = (String) in.readobject(); System.out.println(nagłówek); Książka puszcz = (Książka) in.readobject(); in.close(); System.out.println(puszcz);

53 XML i Java 53/57 Serializacja do obiektów binarnych Jeśli w obiekcie będzie kilka referencji do tego samego obiektu to po deserializacji odpowiednie referencje będą zachowane (np. dwie osoby mające ten sam adres). Przy deserializacji, mimo powstawania nowych obiektów, nie są wywoływane konstruktory. Domyślnie serializowane są wszystkie niestatyczne składowe przekazanego obiektu. Nie zawsze jest to działanie pożądane. Niektórch danych (np. dane poufne) czy obiektów (np. strumienie czy wątki) nie powinno się serializować. Nie wszystkie obiekty implementują interfejs java.io.serializable - nie wszystko da się serializować. Rozwiązaniem jest: rezygnacja z domyślnego mechanizmu serializacji (trzeba wtedy samemu napisać kod odpowiedzialny za serializację) wskazanie atrybutów, które nie podlegają serializacji (transient). Atrybuty wyłączone z serializacji oznaczamy modyfikatorem transient.

54 XML i Java 54/57 Serializacja do XML Klasy ObjectOutputStream i ObjectInputStream - serializacja binarna między aplikacjami w języku Java. Do wymiany danych między różnymi językami programowania stosuje się język XML, a od jakiegoś czasu również JSON. Serializacja do XML jest tak samo łatwa jak serializacja do postaci binarnej. Zamiast klas ObjectOutputStream i ObjectInputStream używa się klas XMLDecoder i XMLEncoder (pakiet java.beans). Serializacja do XML nie wymaga interfejsu java.io.serializable ale zgodności z Java Beans czyli: klasy muszą posiadać bezparametrowy publiczny konstruktor, muszą posiadać metody set i get dla każdego atrybutu.

55 XML i Java 55/57 Serializacja do XML - przykład Autor.java public class Autor { String nazwisko; String imię; Autor(String nazwisko, String imię) { this.nazwisko = nazwisko; this.imię = imię; System.out.println("wywołanie konstruktora klasy Autor"); public String tostring() { String adrpamięć = super.tostring(); return adrpamięć + "(" + nazwisko + ", " + imię + ")"; public String getnazwisko() { return nazwisko; public String getimię() { return imię; public void setnazwisko(string nazwisko) { this.nazwisko = nazwisko; public void setimię(string imię) { this.imię = imię; public Autor() { System.out.println("wywołanie bezparametrowego konstruktora klasy Autor");

56 XML i Java 56/57 Serializacja do XML - przykład Książka.java public class Książka { String tytuł; int rokwydania; Autor autor; Książka(String tytuł, int rokwydania, Autor autor) { this.tytuł = tytuł; this.rokwydania = rokwydania; this.autor = autor; System.out.println("wywołanie konstruktora klasy Książka"); public String tostring() { String adrpamięć = super.tostring(); return adrpamięć+"(" + tytuł + ", " + rokwydania + ", " + autor + ")"; public Autor getautor() { return autor; public String gettytuł() { return tytuł; public int getrokwydania() { return rokwydania; public void setautor(autor autor) { this.autor = autor; public void settytuł(string tytuł) { this.tytuł = tytuł; public void setrokwydania(int rokwydania) { this.rokwydania = rokwydania; public Książka() { System.out.println("wywołanie bezparametrowego konstruktora klasy Książka");

57 XML i Java 57/57 Serializacja do XML - przykład SerXML.java import java.beans.*; import java.io.*; public class SerXML { public static void main(string[] args) throws IOException { Autor sienkiewicz = new Autor("Sienkiewicz", "Henryk"); Książka pust = new Książka("W pustyni i w puszczy", 1911, sienkiewicz); Książka quovadis = new Książka("Quo vadis", 1896, sienkiewicz); XMLEncoder e = new XMLEncoder( new BufferedOutputStream( new FileOutputStream("ksiazka.xml"))); System.out.println(pust); System.out.println(quoVadis); e.writeobject(pust); e.writeobject(quovadis); e.close(); XMLDecoder d = new XMLDecoder( new BufferedInputStream( new FileInputStream("ksiazka.xml"))); pust = (Książka) d.readobject(); quovadis = (Książka) d.readobject(); System.out.println(pust); System.out.println(quoVadis);

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 11: Serializacja obiektów 5/19/2013 S.Deniziak:Programowanie obiektowe 1 Problem składowania/przesyłania danych Strumienie Tylko typy proste Konieczność ręcznego odtwarzania

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

Programowanie obiektowe

Programowanie obiektowe Przygotował: Jacek Sroka 1 Programowanie obiektowe Wykład 9 Serializacja Przygotował: Jacek Sroka 2 Przypomnienie Abstrakcja strumienia hierarchia binarna InputStream/OutputStream hierarchia znakowa Reader/Writer

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

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

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

Strumienie i serializacja

Strumienie i serializacja Strumienie i serializacja Prezentacja dostępna na Syriuszu: http://sirius.cs.put.poznan.pl/~inf80156 Klasy: InputStream, OutputStream, Reader i Writer W Javie hierarchia strumieni oparta jest o cztery

Bardziej szczegółowo

SAX i DOM wykorzystanie XML-a we własnych aplikacjach. Simple API for XML Parsing Document Object Model

SAX i DOM wykorzystanie XML-a we własnych aplikacjach. Simple API for XML Parsing Document Object Model SAX i DOM wykorzystanie XML-a we własnych aplikacjach Simple API for XML Parsing Document Object Model 1 SAX - wstęp Definicja: standardowy interfejs do parsowania plików XML oparty na modelu zdarzeniowym

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

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

XML i Java 1. XML. 1.1. Budowa dokumentu XML. Projektowanie systemów informatycznych

XML i Java 1. XML. 1.1. Budowa dokumentu XML. Projektowanie systemów informatycznych 1. XML 1.1. Budowa dokumentu XML XML i Java XML (ang. Extensible Markup Language) rozszerzalny język znaczników. Jest to standard mający bardzo szeroki zakres zastosowań. Dokument XML składa się z następujących

Bardziej szczegółowo

STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW

STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW 1. Procedura korzystania ze strumieni danych Aby utworzyć plik: 1) Należy utworzyć obiekt (np. typu FileOutputStream), powiązany ze plikiem danych binarnych (np.

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 zarządzania treścią 2008/09 Wykorzystanie XML we własnych aplikacjach Odczyt zawartości dokumentów XML. Modyfikacja

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

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

Kotwasiński Obsługa XMLa z poziomu Javy

Kotwasiński Obsługa XMLa z poziomu Javy Obsługa XMLa z poziomu Javy Adam 5 kwietnia 2009 Co możemy zrobić odczyt zawartości dokumentów XML modyfikacja i zapis dokumentów walidacja dokumentu podczas parsowania przed zapisaniem wzdględem DTD,

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

Java niezbędnik programisty spotkanie nr 11. Importy statyczne, wejście/wyjście, wyrażenia regularne, serializacja

Java niezbędnik programisty spotkanie nr 11. Importy statyczne, wejście/wyjście, wyrażenia regularne, serializacja Java niezbędnik programisty spotkanie nr 11 Importy statyczne, wejście/wyjście, wyrażenia regularne, serializacja 1 Importowanie składowych statycznych Opracował Import static java.lang.system.out; //import

Bardziej szczegółowo

Podstawy otwartych języków programowania Wyjątki i strumienie I/O

Podstawy otwartych języków programowania Wyjątki i strumienie I/O Podstawy otwartych języków programowania Wyjątki i strumienie I/O Wiktor Wandachowicz Wyjątki Podstawą filozofii Javy jest założenie, że: źle sformułowany kod nie zostanie wykonany Wyjątki są mechanizmem

Bardziej szczegółowo

Wykład 6 Dziedziczenie cd., pliki

Wykład 6 Dziedziczenie cd., pliki Wykład 6 Dziedziczenie cd., pliki Autor: Zofia Kruczkiewicz 1. Dziedziczenie cd. 2. Pliki - serializacja Zagadnienia 1. Dziedziczenie aplikacja Kalkultory_2 typu Windows Forms prezentująca dziedziczenie

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

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusz Mikoda

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusz Mikoda Programowanie urządzeń mobilnych dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusz Mikoda Extensible Markup Language XML Extensible Markup Language (Rozszerzalny Język Znaczników), Uniwersalny

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

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych Wywoływanie metod zdalnych model systemu Wywoływanie metod zdalnych aplikacja kliencka interfejs obiekt serwer Podejście obiektowe do budowy systemów rozproszonych proxy szkielet sieć Istota podejścia

Bardziej szczegółowo

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania Opis biznesowy świata rzeczywistego Wymagania funkcjonalne i niefunkcjonalne aplikacji Diagram przypadków życia Diagramy klas i sekwencji:

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

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java: otwórz okienko Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU klasy wewnętrzne, lokalne i anonimowe biblioteka AWT zestaw Swing JFrame JPanel komponenty obsługa zdarzeń

Bardziej szczegółowo

XML in own applications

XML in own applications XML in own applications Patryk Czarnik Institute of Informatics University of Warsaw XML and Modern Techniques of Content Management 2010/11 Introduction XML in own applications Models Generyczne drzewo

Bardziej szczegółowo

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1 interfejs (w języku Java), wywiedziony z Remote obiekt Podejście obiektowe do budowy systemów rozproszonych aplikacja kliencka interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów

Bardziej szczegółowo

Podejście obiektowe do budowy systemów rozproszonych

Podejście obiektowe do budowy systemów rozproszonych Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Dariusz Wawrzyniak (IIPP) 1 Mechanizm

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

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

Systemy operacyjne na platformach mobilnych

Systemy operacyjne na platformach mobilnych Systemy operacyjne na platformach mobilnych Wykład 4 Grzegorz Jabłoński, Piotr Perek Katedra Mikroelektroniki i Technik Informatycznych Zagadnienia wykładu Menadżer połączeń Usługi HTTP Klient HTTP Żądanie

Bardziej szczegółowo

SAX2 pakiet org.xml.sax

SAX2 pakiet org.xml.sax Modele dostępu do dokumentu XML 23 października 2003 Wykorzystanie XML-a we własnych aplikacjach Pozwalają programistom na dostęp do zawartości dokumentów XML na wysokim poziomie: korzystamy z abstrakcyjnych

Bardziej szczegółowo

Java. Programowanie Obiektowe Mateusz Cicheński

Java. Programowanie Obiektowe Mateusz Cicheński Java Programowanie Obiektowe Mateusz Cicheński Wielowątkowość Proces a wątek? Thread vs Runnable sleep(), interrupt(), join() Problemy wielowątkowości Obiekty niemodyfikowalne (immutable) Serializacja

Bardziej szczegółowo

Remote Method Invocation 17 listopada 2010

Remote Method Invocation 17 listopada 2010 Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja klienckak interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów

Bardziej szczegółowo

Drzewa DOM. Maciej Zakrzewicz. mzakrz@cs.put.poznan.pl http://www.cs.put.poznan.pl/~mzakrz/

Drzewa DOM. Maciej Zakrzewicz. mzakrz@cs.put.poznan.pl http://www.cs.put.poznan.pl/~mzakrz/ Drzewa DOM Maciej Zakrzewicz mzakrz@cs.put.poznan.pl http://www.cs.put.poznan.pl/~mzakrz/ Document Object Model (DOM) Document Object Model jest standardem modelowania dokumentów XML przy użyciu struktury

Bardziej szczegółowo

Modele dostępu do dokumentu XML. Implementacja modelu parser. SAX2 pakiet org.xml.sax. Działanie modelu SAX przykład

Modele dostępu do dokumentu XML. Implementacja modelu parser. SAX2 pakiet org.xml.sax. Działanie modelu SAX przykład Modele dostępu do dokumentu XML Wykorzystanie XML-a we własnych aplikacjach Pozwalają programistom na wysokopoziomowy dostęp do zawartości dokumentów XML : korzystamy z abstrakcyjnych obiektów, nie troszczymy

Bardziej szczegółowo

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych Wywoływanie metod zdalnych Podejście obiektowe do budowy systemów rozproszonych Wywoływanie metod zdalnych model systemu obiekt aplikacja kliencka interfejs serwer proxy szkielet sieć Istota podejścia

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

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

Podejście obiektowe do budowy systemów rozproszonych

Podejście obiektowe do budowy systemów rozproszonych Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Dariusz Wawrzyniak 1 Mechanizm RMI umożliwia

Bardziej szczegółowo

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów

Bardziej szczegółowo

Platformy Programistyczne Zagadnienia sieciowe i wątki

Platformy Programistyczne Zagadnienia sieciowe i wątki Platformy Programistyczne Zagadnienia sieciowe i wątki Agata Migalska 27/28 maja 2014 Komunikacja sieciowa 1 Komunikacja sieciowa 2 Wiele wątków 3 Serializacja Architektura typu klient-serwer Architektura

Bardziej szczegółowo

Wykład 2: Podstawy Języka

Wykład 2: Podstawy Języka Wykład 2: Podstawy Języka 1.wprowadzenie 2.podstawy języka 3.sterowanie 4.inicjacja i sprzątanie 5.kontrola dostępu 6.dziedziczenie 7.polimorfizm 8.obsługa błędów 9.kolekcje obiektów 10.wejście i wyjście

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

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

Strumienie, pliki. Sortowanie. Wyjątki.

Strumienie, pliki. Sortowanie. Wyjątki. Strumienie, pliki. Sortowanie. Wyjątki. Serializacja Zapisuje całą klasę Plik binarny Delimiter nieokreślony Nie da się podglądać Pliki tekstowe Zapisuje wybrane informacje Plik tekstowy Delimiter ustawiamy

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

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

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć interfejs (w języku Java), wywiedziony z Remote obiekt Podejście obiektowe do budowy systemów rozproszonych aplikacja kliencka stub interfejs serwer szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów

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

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1. Wielowątkowość Programowanie w środowisku rozproszonym. Wykład 1. Informacje organizacyjne Wymiar godzin: W-30, LAB-15 Zaliczenie wykonanie kilku programów i ich zaliczenie (w trakcie zajęć laboratoryjnych)

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

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

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

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

Kurs języka Python Wykład 8. Przetwarzanie tekstu Wyrażenia regularne Biblioteka urllib Parsowanie html'a XML

Kurs języka Python Wykład 8. Przetwarzanie tekstu Wyrażenia regularne Biblioteka urllib Parsowanie html'a XML Kurs języka Python Wykład 8. Przetwarzanie tekstu Wyrażenia regularne Biblioteka urllib Parsowanie html'a XML Wyrażenia regularne c:\> dir *.exe $ rm *.tmp Wyrażenia regularne 'alamakota' '(hop!)*' { '',

Bardziej szczegółowo

Podstawy obiektowości

Podstawy obiektowości Podstawy obiektowości Zad. Zamówienie 1. Napisać program do obsługi zamówień. Program powinien składać się z dwóch klas: Zamowienie oraz Pozycja, przy czym każde zamówienie zawierać może jedną lub więcej

Bardziej szczegółowo

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1 P d jś i bi kt d b d t ó Podejście obiektowe do budowy systemów rozproszonych Dariusz Wawrzyniak (IIPP) 1 interfejs (w języku Java),wywiedziony idi z Remote obie kt aplikacja klie ncka interfe js serw

Bardziej szczegółowo

Język JAVA podstawy. Wykład 6, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. Wykład 6, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 6, część 2 Jacek Rumiński 1 Język JAVA podstawy Plan wykładu: 1. Wprowadzenie do operacji wejścia/wyjścia: strumienie 2. Podstawowe klasy strumieni i InputStream/OutputStream

Bardziej szczegółowo

WSNHiD, Programowanie 2, Lab. 3. Trwałość danych

WSNHiD, Programowanie 2, Lab. 3. Trwałość danych WSNHiD, Programowanie 2, Lab. 3 Trwałość danych Wyjątki Nietypowe sytuacje, które podczas normalnego wykonywania programu nie powinny się wydarzyć obsługiwane są w języku Java za pomocą wyjątków. Przyjrzyjmy

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

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

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego

Bardziej szczegółowo

Zad.30. Czy można utworzyć klasę, która implementuje oba interfejsy?

Zad.30. Czy można utworzyć klasę, która implementuje oba interfejsy? Zad.28. Utwórz klasę, która implementuje oba interfejsy: public void pisz ( ) ; public void pisz ( ) ; Zad.29. Utwórz klasę, która implementuje oba interfejsy: public void pisz ( int l i c z b a ) ; public

Bardziej szczegółowo

JAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt

JAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt JAVA Pliki - zapis i odczyt Opracował: Andrzej Nowak Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Strumienie wejścia i wyjścia Strumienie wejścia

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

Programowanie w języku Java. Bazy danych SQLite w Javie

Programowanie w języku Java. Bazy danych SQLite w Javie Programowanie w języku Java Bazy danych SQLite w Javie Co to jest SQLite SQLite to bezserwerowa, nie wymagająca konfiguracji relacyjna baza danych. Znajduje szerokie zastosowanie np.. w systemie android

Bardziej szczegółowo

1. CZYM JEST SERIALIZACJA

1. CZYM JEST SERIALIZACJA SERIALIZACJA O CZYM POWIEMY? 1. Czym jest serializacja? 2. Jak przeprowadzić proces serializacji? 3. Jak przeprowadzić proces deserializacji? 4. Serializacja własnych klas. 5. Dobre praktyki. 6. SoapFormatter.

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

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu Zdalne wywołanie metod - koncepcja Oprogramowanie systemów równoległych i rozproszonych Wykład 7 RMI (Remote Method Invocation) - obiektowe RPC, dostarcza klientowi interfejs do obiektu, implementacja

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

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery Łukasz Bartczuk Moduł 6 JavaScript w przeglądarce Agenda Skrypty na stronie internetowej Model DOM AJAX Skrypty na stronie

Bardziej szczegółowo

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut. Wyjątki Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut. Wydaje się, że żaden użytkownik oprogramowania nie lubi, kiedy stosowany program nagle zawiesza się,

Bardziej szczegółowo

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Oprogramowanie systemów równoległych i rozproszonych Wykład 7 Wykład 7 p. 1/2 Oprogramowanie systemów równoległych i rozproszonych Wykład 7 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Zdalne wywołanie

Bardziej szczegółowo

Programowanie obiektowe zastosowanie języka Java SE

Programowanie obiektowe zastosowanie języka Java SE Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z

Bardziej szczegółowo

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegółowo

libxml2 parser DOM dla C++ czwartek, 8 grudnia 11

libxml2 parser DOM dla C++ czwartek, 8 grudnia 11 libxml2 parser DOM dla C++ 1 SAX vs. DOM Dwa podstawowe typy API do przetwarzania dokumentów XML: Oparte na drzewach (ang. Tree-based API) - mapują strukturę dokumentu do drzewa i pozwalają użytkownikowi

Bardziej szczegółowo

Bezpieczne uruchamianie apletów wg

Bezpieczne uruchamianie apletów wg Bezpieczne uruchamianie apletów wg http://java.sun.com/docs/books/tutorial/security1.2/ Zabezpieczenia przed uruchamianiem apletów na pisanych przez nieznanych autorów 1) ograniczenie możliwości odczytywania,

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 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

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy wykład 2, część 1 1 Język JAVA podstawy Plan wykładu: 1. Rodzaje programów w Javie 2. Tworzenie aplikacji 3. Tworzenie apletów 4. Obsługa archiwów 5. Wyjątki 6. Klasa w klasie! 2 Język

Bardziej szczegółowo

JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ mlew@ippt.gov.pl ]

JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ mlew@ippt.gov.pl ] JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA Marcin Lewandowski [ mlew@ippt.gov.pl ] XML 2 XML XML jest formatem tekstowym Zjadliwy dla ludzi Zawiera treść (dane) oraz znaczniki (markup) Znaczniki i zależności

Bardziej szczegółowo

Zaawansowany kurs języka Python

Zaawansowany kurs języka Python Wykład 5. 30 października 2013 Plan wykładu 1 2 3 4 yield from Zamiast Example for item in iterable: yield item: można pisać Example yield from iterable Plan wykładu 1 2 3 4 Przykłady wyrażeń regularnych

Bardziej szczegółowo

JAVA I SIECI. MATERIAŁY: http://docs.oracle.com/javase/tutorial/networking/index.html

JAVA I SIECI. MATERIAŁY: http://docs.oracle.com/javase/tutorial/networking/index.html JAVA I SIECI ZAGADNIENIA: URL, Interfejs gniazd, transmisja SSL, protokół JNLP. MATERIAŁY: http://docs.oracle.com/javase/tutorial/networking/index.html http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA,

Bardziej szczegółowo

Strumieniowe bazy danych. Piotr i Paweł

Strumieniowe bazy danych. Piotr i Paweł Strumieniowe bazy danych Piotr i Paweł Źródła zapotrzebowania na DSMS Finanse (giełda, przewidywanie trendów, wykrywanie defraudacji, szacowanie ryzyka) Zarządzanie ruchem i wydajnością sieci telekomunikacyjnych

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

Programowanie Obiektowe Ćwiczenie 4

Programowanie Obiektowe Ćwiczenie 4 Programowanie Obiektowe Ćwiczenie 4 1. Zakres ćwiczenia wyjątki kompozycja 2. Zagadnienia Założeniem, od którego nie należy odbiegać, jest by każdy napotkany problem (np. zatrzymanie wykonywanej metody)

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

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu. Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody

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

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

Prototype (prototyp) Cel: Przykład: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp.

Prototype (prototyp) Cel: Przykład: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp. 1/14 Prototype (prototyp) Cel: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp. Przykład: Edytor 3D klient tworzy obiekty różnych kształtów

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

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

Definiowanie własnych klas

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

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

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

PODEJŚCIE OBIEKTOWE. Przykład 1 metody i atrybuty statyczne

PODEJŚCIE OBIEKTOWE. Przykład 1 metody i atrybuty statyczne Przykład 1 metody i atrybuty statyczne public class Napis1 { static String wynik; public static void Inicjuj() {wynik = ""; PODEJŚCIE OBIEKTOWE public static void Dopisz_do_wyniku(char ch) { wynik+="\nkod

Bardziej szczegółowo