Biblioteki dzielone, XML i readline

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

Download "Biblioteki dzielone, XML i readline"

Transkrypt

1 Bogdan Kreczmer Katedra Cybernetyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2017 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania obiektowego. Jest on udostępniony pod warunkiem wykorzystania wyłącznie do własnych prywatnych potrzeb i może on być kopiowany wyłącznie w całości, razem z niniejszą stroną tytułową.

2 Niniejsza prezentacja została wykonana przy użyciu systemu składu L A TEX oraz stylu beamer, którego autorem jest Till Tantau. Strona domowa projektu Beamer:

3 Plan prezentacji 1 Tworzenie bibliotek dynamicznie konsolidowanych Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje 2 3 Program rlwrap Biblioteka readline

4 Plan prezentacji Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje 1 Tworzenie bibliotek dynamicznie konsolidowanych Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje 2 3 Program rlwrap Biblioteka readline

5 Podstawowe własności Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje Biblioteki statyczne są bezpośrednio konsolidowane z kodem programu.

6 Podstawowe własności Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje Biblioteki statyczne są bezpośrednio konsolidowane z kodem programu. Zalety: w momencie startu aplikacji wiadomo, że są dostępne wszystkie niezbędne elementy i mają one właściwą wersję, uniknięcie problemu sprawdzania kolejnych zależności (ang. dependency hell), wszystko zawarte jest w jednym wykonywalnym pliku, start aplikacji może być szybszy, ale nie musi to być regułą.

7 Podstawowe własności Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje Biblioteki statyczne są bezpośrednio konsolidowane z kodem programu. Zalety: w momencie startu aplikacji wiadomo, że są dostępne wszystkie niezbędne elementy i mają one właściwą wersję, uniknięcie problemu sprawdzania kolejnych zależności (ang. dependency hell), wszystko zawarte jest w jednym wykonywalnym pliku, start aplikacji może być szybszy, ale nie musi to być regułą. Wady: duży rozmiar pliku wykonywalnego, duża zajętość pamięci, gdyż może w niej znajdować się wiele kopii tej samej biblioteki, za każdym razem, gdy startuje kolejna instancja tej samej aplikacji, do pamięci muszą być ładowane kolejne kopie tych samych bibliotek.

8 Przykładowy projekt Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje

9 Przykładowy projekt Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje g++ -Wall -iquote inc -c -o obj/complex.o src/complex.cpp g++ -Wall -iquote inc -c -o obj/matrix.o src/matrix.cpp g++ -Wall -iquote inc -c -o obj/main.o src/main.cpp g++ -o prog obj/complex.o obj/matrix.o obj/main.o

10 Tworzymy bibliotekę statyczną Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje

11 Tworzymy bibliotekę statyczną Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje

12 Tworzymy bibliotekę statyczną Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje

13 Tworzymy bibliotekę statyczną Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje g++ -Wall -iquote inc -c -o obj/complex.o src/complex.cpp g++ -Wall -iquote inc -c -o obj/matrix.o src/matrix.cpp ar rcs lib/libcomplexmatrix.a obj/complex.o obj/matrix.o

14 Tworzymy bibliotekę statyczną Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje g++ -Wall -iquote inc -c -o obj/complex.o src/complex.cpp g++ -Wall -iquote inc -c -o obj/matrix.o src/matrix.cpp ar rcs lib/libcomplexmatrix.a obj/complex.o obj/matrix.o

15 Wykorzystanie biblioteki statycznej Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje

16 Wykorzystanie biblioteki statycznej Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje

17 Wykorzystanie biblioteki statycznej Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje

18 Wykorzystanie biblioteki statycznej Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje g++ -Wall -iquote tool/inc -c -o obj/main.o src/main.cpp

19 Wykorzystanie biblioteki statycznej Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje g++ -Wall -iquote tool/inc -c -o obj/main.o src/main.cpp g++ -o prog -Ltool/lib obj/main.o -lcomplexmatrix

20 Plan prezentacji Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje 1 Tworzenie bibliotek dynamicznie konsolidowanych Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje 2 3 Program rlwrap Biblioteka readline

21 Podstawowe własności Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje Biblioteki dynamiczne konsolidowane są z kodem programu w trakcie jego ładowania lub już w trakcie działania.

22 Podstawowe własności Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje Biblioteki dynamiczne konsolidowane są z kodem programu w trakcie jego ładowania lub już w trakcie działania. Zalety: binarny plik programu jest stosunkowo mały, jedna biblioteka może być dzielona między różne aplikacje, które pracują jednocześnie, jeżeli rezyduje już w pamięci, to uruchomienie nowej instancji programu nie wymaga jej załadowania.

23 Podstawowe własności Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje Biblioteki dynamiczne konsolidowane są z kodem programu w trakcie jego ładowania lub już w trakcie działania. Zalety: binarny plik programu jest stosunkowo mały, jedna biblioteka może być dzielona między różne aplikacje, które pracują jednocześnie, jeżeli rezyduje już w pamięci, to uruchomienie nowej instancji programu nie wymaga jej załadowania. Wady: konieczność konsolidowania programu z biblioteką po załadowaniu kodu programu do pamięci, konieczność sprawdzania wzajemnych zależności między bibliotekami. system musi wiedzieć, gdzie są biblioteki aby załadować je w trakcie działania programu.

24 Konwencje nazw Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje libnazwa.so podstawowa nazwa pliku biblioteki

25 Konwencje nazw Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje libnazwa.so podstawowa nazwa pliku biblioteki libnazwa.so.4 nazwa z numerem wersji

26 Konwencje nazw Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje libnazwa.so podstawowa nazwa pliku biblioteki libnazwa.so.4 nazwa z numerem wersji libnazwa.so nazwa z numerem pobocznym rewizji danej wersji

27 Konwencje nazw Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje libnazwa.so podstawowa nazwa pliku biblioteki libnazwa.so.4 nazwa z numerem wersji libnazwa.so nazwa z numerem pobocznym rewizji danej wersji Numery poboczne wersji nie są widoczne dla aplikacji. Nazwy biblioteki bez numeru wersji oraz z numerem tworzy się jako linki symboliczne do nazwy z pełną numeracją, tzn. z numerem wersji oraz numerem pobocznym rewizji danej wersji.

28 Konwencje nazw Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje libnazwa.so podstawowa nazwa pliku biblioteki libnazwa.so.4 nazwa z numerem wersji libnazwa.so nazwa z numerem pobocznym rewizji danej wersji Numery poboczne wersji nie są widoczne dla aplikacji. Nazwy biblioteki bez numeru wersji oraz z numerem tworzy się jako linki symboliczne do nazwy z pełną numeracją, tzn. z numerem wersji oraz numerem pobocznym rewizji danej wersji. Przykład: lrwxrwxrwx 1 root root :01 /usr/lib/libyaml-0.so -> libyaml-0.so.2 lrwxrwxrwx 1 root root :01 /usr/lib/libyaml-0.so.2 -> libyaml-0.so rw-r--r-- 1 root root :47 /usr/lib/libyaml-0.so.2.0.1

29 Lokalizacje bibliotek Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje Biblioteki dzielone przechowywane są zazwyczaj tam, gdzie są również wersje bibliotek statycznych. Zbiór przeszukiwanych lokalizacji może modyfikować administrator systemu. /etc/ld.so.cache zawiera binarny zapis przeszukiwanych ścieżek /etc/ld.so.conf zawiera tekstowy zapis lokalizacji, które mają być przeszukiwane Każdorazowa zmiana wpisu w ld.so.conf wymaga uruchomienia programu ldconfig. Na podstawie wpisów w ld.so.conf tworzy on nową zawartość pliku ld.so.cache.

30 Lokalizacje bibliotek Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje Biblioteki dzielone przechowywane są zazwyczaj tam, gdzie są również wersje bibliotek statycznych. Zbiór przeszukiwanych lokalizacji może modyfikować administrator systemu. /etc/ld.so.cache zawiera binarny zapis przeszukiwanych ścieżek /etc/ld.so.conf zawiera tekstowy zapis lokalizacji, które mają być przeszukiwane Każdorazowa zmiana wpisu w ld.so.conf wymaga uruchomienia programu ldconfig. Na podstawie wpisów w ld.so.conf tworzy on nową zawartość pliku ld.so.cache.

31 Lokalizacje bibliotek Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje Biblioteki dzielone przechowywane są zazwyczaj tam, gdzie są również wersje bibliotek statycznych. Zbiór przeszukiwanych lokalizacji może modyfikować administrator systemu. /etc/ld.so.cache zawiera binarny zapis przeszukiwanych ścieżek /etc/ld.so.conf zawiera tekstowy zapis lokalizacji, które mają być przeszukiwane Każdorazowa zmiana wpisu w ld.so.conf wymaga uruchomienia programu ldconfig. Na podstawie wpisów w ld.so.conf tworzy on nową zawartość pliku ld.so.cache.

32 Tworzymy bibliotekę dynamiczną Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje

33 Tworzymy bibliotekę dynamiczną Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje

34 Tworzymy bibliotekę dynamiczną Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje

35 Tworzymy bibliotekę dynamiczną Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje g++ -Wall -Iinc -fpic -c -o obj/complex.o src/complex.cpp g++ -Wall -Iinc -fpic -c -o obj/matrix.o src/matrix.cpp g++ -shared -o lib/libcomplexmatrix.so obj/complex.o obj/matrix.o

36 Tworzymy bibliotekę dynamiczną Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje g++ -Wall -Iinc -fpic -c -o obj/complex.o src/complex.cpp g++ -Wall -Iinc -fpic -c -o obj/matrix.o src/matrix.cpp g++ -shared -o lib/libcomplexmatrix.so obj/complex.o obj/matrix.o

37 Wykorzystanie biblioteki dzielonej Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje

38 Wykorzystanie biblioteki dzielonej Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje

39 Wykorzystanie biblioteki dzielonej Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje g++ -Wall -iquote tool/inc -c -o obj/main.o src/main.cpp

40 Wykorzystanie biblioteki dzielonej Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje g++ -Wall -iquote tool/inc -c -o obj/main.o src/main.cpp

41 Wykorzystanie biblioteki dzielonej Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje g++ -Wall -iquote tool/inc -c -o obj/main.o src/main.cpp g++ -o prog -Ltool/lib obj/main.o -lcomplexmatrix

42 Plan prezentacji Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje 1 Tworzenie bibliotek dynamicznie konsolidowanych Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje 2 3 Program rlwrap Biblioteka readline

43 Podstawowe własności Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje #include <dlfcn.h> void dlopen(const char filename, int flag); char dlerror(void ); void dlsym(void handle, const char symbol); int dlclose(void handle);

44 Podstawowe własności Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje Kompilacja biblioteki musi być realizowana z opcją -fpic. Pozwala to utworzyć relokowalny kod. W poleceniu konsolidacji trzeba pamiętać o opcji -shared oraz -ldl. Funkcja init( ), o ile istnieje, wykonuje się tylko raz.

45 Interfejs biblioteki Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje extern C { const char GetCmdName(void); void PrintSyntax(void); Interp4Command CreateCmd(void);

46 Interfejs biblioteki Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje extern C { const char GetCmdName(void); void PrintSyntax(void); Interp4Command CreateCmd(void); const char GetCmdName(void) { return Rotate ;

47 Interfejs biblioteki Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje extern C { const char GetCmdName(void); void PrintSyntax(void); Interp4Command CreateCmd(void); void PrintSyntax(void) { Interp4Rotate::PrintSyntax( );

48 Interfejs biblioteki Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje extern C { const char GetCmdName(void); void PrintSyntax(void); Interp4Command CreateCmd(void); Interp4Command CreateCmd(void) { return Interp4Rotate::CreateCmd( );

49 Interfejs biblioteki Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje extern C { const char GetCmdName(void); void PrintSyntax(void); Interp4Command CreateCmd(void); const char Interp4Rotate::GetCmdName( ) const { return ::GetCmdName( );

50 Plan prezentacji 1 Tworzenie bibliotek dynamicznie konsolidowanych Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje 2 3 Program rlwrap Biblioteka readline

51 Podstawowe cechy XML (extensible Markup Language) Rozszerzalny Język Znaczników XML jest tylko składnia przeznaczona do opisu danych. Poza konkretną aplikacją dane zapisane w XML nie mają większego sensu, gdyż zazwyczaj tylko dana aplikacja wie jak je interpretować. Standard XML został opracowany i zdefiniowany przez World Wide Web Consortium (W3C). Najistotniejsze cechy XML: bazuje na tekstowym formacie plików jest niezależny od platformy, umożliwia strukturalizację danych.

52 Geneza XML XML bazuje na SGML (Standard Generalized Markup Language). Wprowadzenie XML wiązało się z chęcią uproszczenia SGML.

53 Geneza XML XML bazuje na SGML (Standard Generalized Markup Language). Wprowadzenie XML wiązało się z chęcią uproszczenia SGML. SGML HTML XML

54 Geneza XML XML bazuje na SGML (Standard Generalized Markup Language). Wprowadzenie XML wiązało się z chęcią uproszczenia SGML. SGML HTML XML XHTML

55 Różnice między XML a HTML Przeznaczenie: XML jest używany do opisu danych, HTML jest używany przede wszystkim w celu zobrazowania informacji.

56 Różnice między XML a HTML Przeznaczenie: XML jest używany do opisu danych, HTML jest używany przede wszystkim w celu zobrazowania informacji. Różnice interpretacji składni: XML Rozróżnia małe i duże litery Rygorystycznie wymagane zamykanie wszystkich znaczników Każdy atrybut musi mieć wartość ujętą w cudzysłowy lub apostrofy. HTML Brak różnicy w interpretacji małych i dużych liter. Nie wszystkie znaczniki muszą być zamykane, np <p>. Wartości atrybutów nie muszą być ujęte w cudzysłowy lub apostrofy. Atrybuty nie muszą mieć wartości.

57 Inne cechy XML Nazwy znaczników nie mogą się rozpoczynać od przedrostka xml lub xsl (niezależnie od wielkości liter), Dane XML mogą być zapisywane w pełnym zestawie znaków UNICODE. Można używać przestrzeni nazw.

58 Budowa dokumentu XML document ::= prolog element Misc* Prolog Treść Epilog

59 Budowa dokumentu XML document ::= prolog element Misc* Prolog <?xml version="1.0"> Treść Epilog

60 Budowa dokumentu XML document ::= prolog element Misc* Prolog <?xml version="1.0" encoding="utf-8" standalone="yes"?> Treść Epilog

61 Budowa dokumentu XML document ::= prolog element Misc* Prolog <?xml version="1.0" encoding="utf-8" standalone="yes"?> <!DOCTYPE cataloge [... ]> Treść Epilog

62 Budowa dokumentu XML document ::= prolog element Misc* Prolog Treść <ActionsSet> <Action Name="Move" > <Parameter Name="speed" Value="35" /> <Parameter Name="dist" Value="200" /> <Parameter Name="safeZone" Value="30" /> </Action> </ActionsSet> Epilog

63 Budowa dokumentu XML document ::= prolog element Misc* Prolog Treść Epilog Jest opcjonalny. Zawiera końcowe komentarze i instrukcje. Epilogiem jest wszystko to, co występuje za głównym elementem dokumentu.

64 Elementy <ActionsSet> <Action Name="Move" > <Parameter Name="speed" Value="35" /> </Action> </ActionsSet> Musi być zachowany ścisły porządek znaczników otwierających i zamykających. Nie jest dopuszczalna konstrukcja typu: <b>hello<i>world</b></i>

65 Atrybuty Tworzenie bibliotek dynamicznie konsolidowanych <ActionsSet> <Action Name="Move" > <Parameter Name="speed" Value="35" /> </Action> </ActionsSet> Atrybuty muszą mieć wartość. Wartości atrybutów muszą być ujęte w cudzysłowy lub apostrofy. Wewnątrz wartości nie mogą występować znaki < i &. Zamiast nich można użyć < oraz %amp; Jeśli konieczne jest użycie znaków (cudzysłów) oraz (apostrof), to należy zastosować skrót odpowiednio &quot lub &a

66 Komentarze <ActionsSet> <Action Name="Move" > <!-- Komentarz --> <Parameter Name="speed" Value="35" /> </Action> </ActionsSet> Wewnątrz komentarza nie można użyć dwóch minusów -- Linia nie może być zakończona znakiem minus -. Parser XML nie ma obowiązku analizować komentarza.

67 DTD Document-Type Definition <ActionsSet> <Action Name="Move" > <Parameter Name="speed" Value="35" /> <Parameter Name="dist" Value="200" /> <Parameter Name="safeZone" Value="30" /> </Action> </ActionsSet>

68 DTD Document-Type Definition <?xml version="1.0" encoding="utf-8" standalone="yes"?> <!DOCTYPE ActionsSet [ <!ELEMENT ActionsSet (Action+)> <!ELEMENT Action (Parametr+)> <!ATTLIST Action Name CDATA #REQUIRED> <!ELEMENT Parameter> <!ATTLIST Parametr Name CDATA #REQUIRED> <!ATTLIST Parametr Value CDATA #REQUIRED> ]> <ActionsSet> <Action Name="Move" > <Parameter Name="speed" Value="35" /> <Parameter Name="dist" Value="200" /> <Parameter Name="safeZone" Value="30" /> </Action> </ActionsSet>

69 Plan prezentacji 1 Tworzenie bibliotek dynamicznie konsolidowanych Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje 2 3 Program rlwrap Biblioteka readline

70 ogólna charakterystyka jest językiem opartym na XML. Jest on stworzony w celu opisu języków opartych na XML oraz modułów danych. definiuje nazwy elementów i atrybutów dla danej klasy dokumentów XML, jak też całą strukturę dokumentu. Realizuje te same zadanie, do którego był wykorzystywany DTD. Ma jednak znacznie większe możliwości. Oprócz tego jest strukturą XML w odróżnieniu od DTD.

71 ogólna charakterystyka Dodatkowe możliwości w stosunku do DTD: definiowanie typów prostych i złożonych, definiowanie typów pochodnych poprzez zawężanie typu bazowego, przestrzenie nazw, możliwość definiowania kontekstu elementów i atrybutów, który określa dopuszczalne typy atrybutów. W nazwach plików, które zawierają definicje stosuje się powszechnie rozszerzenie.xsd ( Definition).

72 Przykład dokumentu XML i XML dokument: <?xml version="1.0"?> <Person> Mark Kowalski </Person>

73 Przykład dokumentu XML i XML dokument: <?xml version="1.0"?> <Person> Mark Kowalski </Person> dokument: <?xml version="1.0"?> <xs:schema xmlns:xs=" <xs:element name="person" type="xs:string"/> </xs:schema>

74 Przykład dokumentu XML i XML dokument: <?xml version="1.0"?> <Person> <Forename>Jan</Forename> <Surname>Kowalski</Surname> </Person>

75 Przykład dokumentu XML i dokument: <?xml version="1.0"?> <xs:schema xmlns:xs=" <xs:element name="person"> <xs:complextype> <xs:sequence> <xs:element name="forename" type="xs:string"/> <xs:element name="surname" </xs:sequence> </xs:complextype> </xs:element> </xs:schema> type="xs:string"/>

76 Przykład dokumentu XML i XML dokument: <?xml version="1.0"?> <Person Forename="Jan" Surname="Kowalski"/>

77 Przykład dokumentu XML i XML dokument: <?xml version="1.0"?> <Person Forename="Jan" Surname="Kowalski"/> dokument: <?xml version="1.0"?> <xs:schema xmlns:xs=" <xs:element name="person"> <xs:complextype> <xs:sequence> </xs:sequence> <xs:attribute name="forename" type="xs:string"/> <xs:attribute name="surname" type="xs:string"/> </xs:complextype> </xs:element> </xs:schema>

78 Przykład dokumentu XML i Przykład zaczerpnięty z

79 Kiedy dane, a kiedy atrybuty? Atrybuty nie powinny zmieniać charakteru danego obiektu. W tym kontekście w poprzednim przykładzie imię i nazwisko powinno występować w sekcji dane.

80 Modele rozbioru dokumentu XML DOM Document Object Model SAX Simple API for XML SAX2 bardziej rozbudowana wersja modelu SAX Umożliwia zarejestrowanie nowych hendlerów zdarzeń lepiej odzwierciedlających strukturę dokumentu. Pozwala zmienić zachowanie parsera poprzez wymuszenie oceny poprawności dokumentu (wykorzystanie informacje zawartej w opisie DTD) lub jej zaniechania.

81 Modele rozbioru dokumentu XML DOM Document Object Model SAX Simple API for XML SAX2 bardziej rozbudowana wersja modelu SAX Umożliwia zarejestrowanie nowych hendlerów zdarzeń lepiej odzwierciedlających strukturę dokumentu. Pozwala zmienić zachowanie parsera poprzez wymuszenie oceny poprawności dokumentu (wykorzystanie informacje zawartej w opisie DTD) lub jej zaniechania.

82 Modele rozbioru dokumentu XML DOM DOM Document Object Model Na podstawie dokumentu XML generowana jest drzewiasta struktura danych, która bezpośrednio odzwierciedla samą strukturę dokumentu.

83 Modele rozbioru dokumentu XML DOM DOM Document Object Model Zalety: Na podstawie dokumentu XML generowana jest drzewiasta struktura danych, która bezpośrednio odzwierciedla samą strukturę dokumentu. Utworzona struktura danych w naturalny sposób odzwierciedla strukturę dokumenu. Możliwy jest wielokrotny dostęp do zawartości dokumentu.

84 Modele rozbioru dokumentu XML DOM DOM Document Object Model Zalety: Na podstawie dokumentu XML generowana jest drzewiasta struktura danych, która bezpośrednio odzwierciedla samą strukturę dokumentu. Utworzona struktura danych w naturalny sposób odzwierciedla strukturę dokumenu. Możliwy jest wielokrotny dostęp do zawartości dokumentu.

85 Modele rozbioru dokumentu XML DOM DOM Document Object Model Zalety: Wady: Na podstawie dokumentu XML generowana jest drzewiasta struktura danych, która bezpośrednio odzwierciedla samą strukturę dokumentu. Utworzona struktura danych w naturalny sposób odzwierciedla strukturę dokumenu. Możliwy jest wielokrotny dostęp do zawartości dokumentu. Relatywnie wolne wczytywanie dokumentu. Dla każdego analizowanego elementu trzeba utworzyć odpowiadającą mu strukturę danych. Duża zapotrzebowanie na pamięć, w której musi znaleźć się lustrzana struktura danych reprezentująca cały dokument.

86 Modele rozbioru dokumentu XML DOM DOM Document Object Model Zalety: Wady: Na podstawie dokumentu XML generowana jest drzewiasta struktura danych, która bezpośrednio odzwierciedla samą strukturę dokumentu. Utworzona struktura danych w naturalny sposób odzwierciedla strukturę dokumenu. Możliwy jest wielokrotny dostęp do zawartości dokumentu. Relatywnie wolne wczytywanie dokumentu. Dla każdego analizowanego elementu trzeba utworzyć odpowiadającą mu strukturę danych. Duża zapotrzebowanie na pamięć, w której musi znaleźć się lustrzana struktura danych reprezentująca cały dokument.

87 Modele rozbioru dokumentu XML SAX SAX Simple API for XML W trakcie czytania dokumentu po napotkaniu elementów XML wywoływane są funkcje (o ile zostały dostarczone). Takie podejście wymusza programowanie zdarzeniowe. Definicje poszczególnych funkcji dostarcza programista.

88 Modele rozbioru dokumentu XML SAX SAX Simple API for XML Zalety: W trakcie czytania dokumentu po napotkaniu elementów XML wywoływane są funkcje (o ile zostały dostarczone). Takie podejście wymusza programowanie zdarzeniowe. Definicje poszczególnych funkcji dostarcza programista. Pozwala na analizowanie tylko tych elementów dokumentu dokumentów, które są istotne dla aplikacji. Pozwala na tworzenie tylko tych struktur danych, które odpowiadają informacji zawartej w dokumencie. Nie są tworzone struktury, które byłyby ściśle związane z samym dokumentem, a nie jego treścią.

89 Modele rozbioru dokumentu XML SAX SAX Simple API for XML Zalety: W trakcie czytania dokumentu po napotkaniu elementów XML wywoływane są funkcje (o ile zostały dostarczone). Takie podejście wymusza programowanie zdarzeniowe. Definicje poszczególnych funkcji dostarcza programista. Pozwala na analizowanie tylko tych elementów dokumentu dokumentów, które są istotne dla aplikacji. Pozwala na tworzenie tylko tych struktur danych, które odpowiadają informacji zawartej w dokumencie. Nie są tworzone struktury, które byłyby ściśle związane z samym dokumentem, a nie jego treścią.

90 Modele rozbioru dokumentu XML SAX SAX Simple API for XML Zalety: Wady: W trakcie czytania dokumentu po napotkaniu elementów XML wywoływane są funkcje (o ile zostały dostarczone). Takie podejście wymusza programowanie zdarzeniowe. Definicje poszczególnych funkcji dostarcza programista. Pozwala na analizowanie tylko tych elementów dokumentu dokumentów, które są istotne dla aplikacji. Pozwala na tworzenie tylko tych struktur danych, które odpowiadają informacji zawartej w dokumencie. Nie są tworzone struktury, które byłyby ściśle związane z samym dokumentem, a nie jego treścią. Do danego elementu dokumentu można odwołać się tylko raz. Jest to poważna wada w przypadku, gdy ewaluacja wyrażenia wymaga dostępu do całego dokumentu.

91 Plan prezentacji 1 Tworzenie bibliotek dynamicznie konsolidowanych Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje 2 3 Program rlwrap Biblioteka readline

92 Parser dokumentów XML Xerces pakiet oprogramowania tworzony w ramach projektu Apache. Zawiera on zbiór bibliotek, które pozwalają na parsowanie, ocenę poprawności, serializację oraz manipulację opisami XML. Biblioteki dostępne są dla języków programowania C++, Java i Perl.

93 Parser dokumentów XML Xerces pakiet oprogramowania tworzony w ramach projektu Apache. Zawiera on zbiór bibliotek, które pozwalają na parsowanie, ocenę poprawności, serializację oraz manipulację opisami XML. Biblioteki dostępne są dla języków programowania C++, Java i Perl. Rozwijane projektu: (strona projektu: Apache Xerces C++ Apache Xerces2 Java Apache Xerces Perl Apache XML Commons

94 Plan prezentacji 1 Tworzenie bibliotek dynamicznie konsolidowanych Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje 2 3 Program rlwrap Biblioteka readline

95 Ogólny zarys przykładu int main(int argc, char args[ ]) { CommandsList CmdsList; if (!ReadActionsFromXMLFile( actions.xml,cmdslist)) return 1; CmdsList.Display( );

96 Ogólny zarys przykładu class CommandsList: public std::list<command > { ; public : CommandsList( ) { Clear( ); void Clear( ); void Add(Command pcmd); void Display( ) const ; int main(int argc, char args[ ]) { CommandsList CmdsList; if (!ReadActionsFromXMLFile( actions.xml,cmdslist)) return 1; CmdsList.Display( );

97 Ogólny zarys przykładu class CommandsList: public std::list<command > { void clear( ) { public : CommandsList( ) { Clear( ); void Clear( ); void Add(Command pcmd); void Display( ) const ; ; int main(int argc, char args[ ]) { CommandsList CmdsList; if (!ReadActionsFromXMLFile( actions.xml,cmdslist)) return 1; CmdsList.Display( );

98 Funkcja czytająca listę poleceń bool ReadActionsFromXMLFile(const char sfilename, CommandsList& CmdsList) {... // Inicjalizacja biblioteki Xerces... // Tworzenie obiektu parsera, i ustawieie własności... // Tworzenia handlera zdarzeń... // Wczytanie gramatyki... // Uruchomienie parsera i obsługa wyjątków... // Usunięcie pomocniczych obiektów return true;

99 Funkcja czytająca listę poleceń bool ReadActionsFromXMLFile(const char sfilename, CommandsList& CmdsList) {... // Inicjalizacja biblioteki Xerces... // Tworzenie obiektu parsera, i ustawieie własności... // Tworzenia handlera zdarzeń... // Wczytanie gramatyki... // Uruchomienie parsera i obsługa wyjątków... // Usunięcie pomocniczych obiektów return true;

100 Funkcja czytająca listę poleceń bool ReadActionsFromXMLFile(const char sfilename, CommandsList& CmdsList) { try { XMLPlatformUtils::Initialize(); catch (const XMLException& tocatch) { DisplayXMLMessage( Blad inicjalizacji\nkomunikat bledu: \n,tocatch); return false;... // Tworzenie obiektu parsera, i ustawieie własności... // Tworzenia handlera zdarzeń... // Wczytanie gramatyki... // Uruchomienie parsera i obsługa wyjątków... // Usunięcie pomocniczych obiektów return true;

101 Funkcja wyświetlająca komunikat void DisplayXMLMessage(const char scomment, const XMLException& Except) { char message = XMLString::transcode(Except.getMessage()); cerr << scomment << message << \n ; XMLString::release(&message); bool ReadActionsFromXMLFile(const char sfilename, CommandsList& CmdsList) { try { XMLPlatformUtils::Initialize(); catch (const XMLException& tocatch) { DisplayXMLMessage( Blad inicjalizacji\nkomunikat bledu: \n,tocatch); return false;...

102 Inicjalizacja bool ReadActionsFromXMLFile(const char sfilename, CommandsList& CmdsList) { try { XMLPlatformUtils::Initialize(); catch (const XMLException& tocatch) { DisplayXMLMessage( Blad inicjalizacji\nkomunikat bledu: \n,tocatch); return false;... // Tworzenie obiektu parsera, i ustawieie własności... // Tworzenia handlera zdarzeń... // Wczytanie gramatyki... // Usunięcie pomocniczych obiektów return true;

103 Tworzenie parsera i ustawianie własności bool ReadActionsFromXMLFile(const char sfilename, CommandsList& CmdsList) {... // Inicjalizacja biblioteki Xerces... // Tworzenie obiektu parsera, i ustawieie własności... // Tworzenia handlera zdarzeń... // Wczytanie gramatyki... // Usunięcie pomocniczych obiektów return true;

104 Tworzenie parsera i ustawianie własności bool ReadActionsFromXMLFile(const char sfilename, CommandsList& CmdsList) {... // Inicjalizacja biblioteki Xerces SAX2XMLReader parser = XMLReaderFactory::createXMLReader(); parser >setfeature(xmluni::fgsax2corevalidation, true); parser >setfeature(xmluni::fgsax2corenamespaces, true);... // Tworzenia handlera zdarzeń... // Wczytanie gramatyki... // Usunięcie pomocniczych obiektów return true;

105 Tworzenie handlera zdarzeń bool ReadActionsFromXMLFile(const char sfilename, CommandsList& CmdsList) {... // Inicjalizacja biblioteki Xerces... // Tworzenie obiektu parsera, i ustawieie własności... // Tworzenia handlera zdarzeń... // Wczytanie gramatyki... // Usunięcie pomocniczych obiektów return true;

106 Tworzenie handlera zdarzeń bool ReadActionsFromXMLFile(const char sfilename, CommandsList& CmdsList) {... // Inicjalizacja biblioteki Xerces... // Tworzenie obiektu parsera, i ustawieie własności DefaultHandler defaulthandler = new Parser4CommandsXMLFile(CmdsList); parser->setcontenthandler(defaulthandler); parser->seterrorhandler(defaulthandler);... // Wczytanie gramatyki... // Usunięcie pomocniczych obiektów return true;

107 Wczytywanie gramatyki bool ReadActionsFromXMLFile(const char sfilename, CommandsList& CmdsList) {... // Inicjalizacja biblioteki Xerces... // Tworzenie obiektu parsera, i ustawieie własności... // Tworzenia handlera zdarzeń... // Wczytanie gramatyki... // Usunięcie pomocniczych obiektów return true;

108 Wczytywanie gramatyki bool ReadActionsFromXMLFile(const char sfilename, CommandsList& CmdsList) {... // Inicjalizacja biblioteki Xerces... // Tworzenie obiektu parsera, i ustawieie własności... // Tworzenia handlera zdarzeń try {... // Wczytanie gramatyki... // Uruchomienie parsera // catch Przechwytywanie wyjątków... // Usunięcie pomocniczych obiektów return true;

109 Wczytywanie gramatyki bool ReadActionsFromXMLFile(const char sfilename, CommandsList& CmdsList) {... // Inicjalizacja biblioteki Xerces... // Tworzenie obiektu parsera, i ustawieie własności... // Tworzenia handlera zdarzeń try { if (!pparser->loadgrammar( grammartwarz robota.xsd, xercesc::grammar::schemagrammartype,true)) { cerr <<!!! Blad czytania pliku grammar/twarz robota.xsd, << endl; return false;... // Uruchomienie parsera // catch Przechwytywanie wyjątków... // Usunięcie pomocniczych obiektów return true;

110 Wczytywanie gramatyki bool ReadActionsFromXMLFile(const char sfilename, CommandsList& CmdsList) {... // Inicjalizacja biblioteki Xerces... // Tworzenie obiektu parsera, i ustawieie własności... // Tworzenia handlera zdarzeń try { if (!pparser->loadgrammar( grammartwarz robota.xsd, xercesc::grammar::schemagrammartype,true)) { cerr <<!!! Blad czytania pliku grammar/twarz robota.xsd, << endl; return false;... // Uruchomienie parsera // catch Przechwytywanie wyjątków... // Usunięcie pomocniczych obiektów Drugi parametr wywołania metody loadgrammar, mówi o tym czy gramatyka jest zapisana w języku XML Scheme, czy też DTD (ang. Document Type Definition). return true;

111 Uruchomienie parsera bool ReadActionsFromXMLFile(const char sfilename, CommandsList& CmdsList) {... // Inicjalizacja biblioteki Xerces... // Tworzenie obiektu parsera, i ustawieie własności... // Tworzenia handlera zdarzeń try {... // Wczytanie gramatyki... // Uruchomienie parsera // catch Przechwytywanie wyjątków... // Usunięcie pomocniczych obiektów return true;

112 Uruchomienie parsera bool ReadActionsFromXMLFile(const char sfilename, CommandsList& CmdsList) {... // Inicjalizacja biblioteki Xerces... // Tworzenie obiektu parsera, i ustawieie własności... // Tworzenia handlera zdarzeń try {... // Wczytanie gramatyki parser->parse(sfilename); // catch Przechwytywanie wyjątków... // Usunięcie pomocniczych obiektów return true;

113 Obsługa wyjątków bool ReadActionsFromXMLFile(const char sfilename, CommandsList& CmdsList) {... // Inicjalizacja biblioteki Xerces... // Tworzenie obiektu parsera, i ustawieie własności... // Tworzenia handlera zdarzeń try {... // Wczytanie gramatyki... // Uruchomienie parsera // catch Przechwytywanie wyjątków... // Usunięcie pomocniczych obiektów return true;

114 Obsługa wyjątków bool ReadActionsFromXMLFile(const char sfilename, CommandsList& CmdsList) {... // Inicjalizacja biblioteki Xerces... // Tworzenie obiektu parsera, i ustawieie własności... // Tworzenia handlera zdarzeń try {... // Wczytanie gramatyki... // Uruchomienie parsera catch (const XMLException& Except) { DisplayXMLMessage( Informacja o wyjatku:\n, Except); return false; catch (const SAXParseException& Except) { DisplaySAXMessage( Informacja o wyjatku:\n,except); return false; catch (...) { cout << Nieoczekiwany wyjatek\n ; return false;... // Usunięcie pomocniczych obiektów

115 Wyświetlanie komunikatu błędu void DisplaySAXMessage(const char scomment, const SAXParseException& Except) { char message = XMLString::transcode(Except.getMessage()); cerr << scomment << message << \n ; XMLString::release(&message); cerr << Lokalizacja bledu: << endl << wiersz: << Except.getLineNumber() << endl << kolumna: << Except.getColumnNumber() << endl; bool ReadActionsFromXMLFile(const char sfilename, CommandsList& CmdsList) {... catch (const XMLException& Except) { DisplayXMLMessage( Informacja o wyjatku:\n, Except); return false; catch (const SAXParseException& Except) {... DisplaySAXMessage( Informacja o wyjatku:\n,except); return false;

116 Funkcja czytająca listę poleceń bool ReadActionsFromXMLFile(const char sfilename, CommandsList& CmdsList) {... // Inicjalizacja biblioteki Xerces... // Tworzenie obiektu parsera, i ustawieie własności... // Tworzenia handlera zdarzeń... // Wczytanie gramatyki... // Uruchomienie parsera i obsługa wyjątków... // Usunięcie pomocniczych obiektów return true;

117 Funkcja czytająca listę poleceń bool ReadActionsFromXMLFile(const char sfilename, CommandsList& CmdsList) {... // Inicjalizacja biblioteki Xerces... // Tworzenie obiektu parsera, i ustawieie własności... // Tworzenia handlera zdarzeń... // Wczytanie gramatyki... // Uruchomienie parsera i obsługa wyjątków delete delete return parser; defaulthandler; true;

118 Włączanie własności bool ReadActionsFromXMLFile(const char sfilename, CommandsList& CmdsList) {... // Inicjalizacja biblioteki Xerces... // Tworzenie obiektu parsera, i ustawieie własności... // Tworzenia handlera zdarzeń... // Wczytanie gramatyki... // Uruchomienie parsera i obsługa wyjątków... // Usunięcie pomocniczych obiektów return true;

119 Włączanie własności bool ReadActionsFromXMLFile(const char sfilename, CommandsList& CmdsList) {... // Inicjalizacja biblioteki Xerces SAX2XMLReader parser = XMLReaderFactory::createXMLReader(); parser >setfeature(xmluni::fgsax2corevalidation, true); parser >setfeature(xmluni::fgsax2corenamespaces, true);... // Tworzenia handlera zdarzeń... // Wczytanie gramatyki... // Uruchomienie parsera i obsługa wyjątków... // Usunięcie pomocniczych obiektów return true;

120 Włączanie własności bool ReadActionsFromXMLFile(const char sfilename, CommandsList& CmdsList) {... // Inicjalizacja biblioteki Xerces SAX2XMLReader parser = XMLReaderFactory::createXMLReader(); parser >setfeature(xmluni::fgsax2corevalidation, true); parser >setfeature(xmluni::fgsax2corenamespaces, true); parser >setfeature(xmluni::fgxercesdynamic, false); parser >setfeature(xmluni::fgxercesschema, true); parser >setfeature(xmluni::fgxercesschemafullchecking, true); parser >setfeature(xmluni::fgxercesvalidationerrorasfatal, true); parser >setfeature(xmluni::fgxercesusecachedgrammarinparse,true);... // Tworzenia handlera zdarzeń... // Wczytanie gramatyki... // Uruchomienie parsera i obsługa wyjątków... // Usunięcie pomocniczych obiektów return true;

121 Znaczenie symboli własności Opis: XMLUni::fgSAX2CoreValidation (domyślnie: false) XMLUni::fgSAX2CoreNameSpaces (domyślnie: true) XMLUni::fgXercesDynamic (domyślnie: false) XMLUni::fgXercesSchema (domyślnie: true) XMLUni::fgXercesSchemaFullChecking (domyślnie: false) XMLUni::fgXercesValidationErrorAsFatal (domyślnie: false) XMLUni::fgXercesUseCachedGrammarInParse (domyślnie: false)

122 Znaczenie symboli własności Opis: XMLUni::fgSAX2CoreValidation (domyślnie: false) Gdy true to, z dokumentem musi być dołączana gramatyka, która będzie podstawą oceny poprawności składni dokumentu. XMLUni::fgSAX2CoreNameSpaces (domyślnie: true) XMLUni::fgXercesDynamic (domyślnie: false) XMLUni::fgXercesSchema (domyślnie: true) XMLUni::fgXercesSchemaFullChecking (domyślnie: false) XMLUni::fgXercesValidationErrorAsFatal (domyślnie: false) XMLUni::fgXercesUseCachedGrammarInParse (domyślnie: false)

123 Znaczenie symboli własności Opis: XMLUni::fgSAX2CoreValidation (domyślnie: false) XMLUni::fgSAX2CoreNameSpaces (domyślnie: true) Gramatyka dokumentu musi wspierać mechanizm przestrzeni nazw. XMLUni::fgXercesDynamic (domyślnie: false) XMLUni::fgXercesSchema (domyślnie: true) XMLUni::fgXercesSchemaFullChecking (domyślnie: false) XMLUni::fgXercesValidationErrorAsFatal (domyślnie: false) XMLUni::fgXercesUseCachedGrammarInParse (domyślnie: false)

124 Znaczenie symboli własności Opis: XMLUni::fgSAX2CoreValidation (domyślnie: false) XMLUni::fgSAX2CoreNameSpaces (domyślnie: true) XMLUni::fgXercesDynamic (domyślnie: false) Jeśli true to poprawność dokumentu jest oceniana tylko wtedy, gdy jest dostarczony jest opis gramatyki dokumentu. XMLUni::fgXercesSchema (domyślnie: true) XMLUni::fgXercesSchemaFullChecking (domyślnie: false) XMLUni::fgXercesValidationErrorAsFatal (domyślnie: false) XMLUni::fgXercesUseCachedGrammarInParse (domyślnie: false)

125 Znaczenie symboli własności Opis: XMLUni::fgSAX2CoreValidation (domyślnie: false) XMLUni::fgSAX2CoreNameSpaces (domyślnie: true) XMLUni::fgXercesDynamic (domyślnie: false) XMLUni::fgXercesSchema (domyślnie: true) Uaktywnia wsparcie parsera dla. XMLUni::fgXercesSchemaFullChecking (domyślnie: false) XMLUni::fgXercesValidationErrorAsFatal (domyślnie: false) XMLUni::fgXercesUseCachedGrammarInParse (domyślnie: false)

126 Znaczenie symboli własności Opis: XMLUni::fgSAX2CoreValidation (domyślnie: false) XMLUni::fgSAX2CoreNameSpaces (domyślnie: true) XMLUni::fgXercesDynamic (domyślnie: false) XMLUni::fgXercesSchema (domyślnie: true) XMLUni::fgXercesSchemaFullChecking (domyślnie: false) Uaktywnia pełne parsowanie gramatyki dokumentu (może to być czasochłonne). XMLUni::fgXercesValidationErrorAsFatal (domyślnie: false) XMLUni::fgXercesUseCachedGrammarInParse (domyślnie: false)

127 Znaczenie symboli własności Opis: XMLUni::fgSAX2CoreValidation (domyślnie: false) XMLUni::fgSAX2CoreNameSpaces (domyślnie: true) XMLUni::fgXercesDynamic (domyślnie: false) XMLUni::fgXercesSchema (domyślnie: true) XMLUni::fgXercesSchemaFullChecking (domyślnie: false) XMLUni::fgXercesValidationErrorAsFatal (domyślnie: false) Gdy true napotkane błędy będą traktowane jako fatalne i parser przerwie swoje działanie. W przypadku przeciwnym, parser będzie zgłaszał błędy, ale jego działanie będzie kontynuowane. XMLUni::fgXercesUseCachedGrammarInParse (domyślnie: false)

128 Znaczenie symboli własności Opis: XMLUni::fgSAX2CoreValidation (domyślnie: false) XMLUni::fgSAX2CoreNameSpaces (domyślnie: true) XMLUni::fgXercesDynamic (domyślnie: false) XMLUni::fgXercesSchema (domyślnie: true) XMLUni::fgXercesSchemaFullChecking (domyślnie: false) XMLUni::fgXercesValidationErrorAsFatal (domyślnie: false) XMLUni::fgXercesUseCachedGrammarInParse (domyślnie: false) Użyj wczytaną gramatykę, jeśli została wcześniej wczytana.

129 Funkcja czytająca listę poleceń #include <xercescsax2sax2xmlreader.hpp> #include <xercescsax2xmlreaderfactory.hpp> #include <xercescsax2defaulthandler.hpp> #include <xercescutilxmlstring.hpp>... bool ReadActionsFromXMLFile(const char sfilename, CommandsList& CmdsList) {... // Inicjalizacja biblioteki Xerces... // Tworzenie obiektu parsera, i ustawieie własności... // Tworzenia handlera zdarzeń... // Wczytanie gramatyki... // Uruchomienie parsera i obsługa wyjątków... // Usunięcie pomocniczych obiektów return true;

130 Klasa parsera class Parser4CommandsXMLFile : public xercesc::defaulthandler { public : Parser4CommandsXMLFile(CommandsList &CmdList); virtual void startdocument( ); virtual void enddocument( ); virtual void startelement( const XMLCh const puri, const XMLCh const plocalname, const XMLCh const pqname, const xercesc::attributes& attrs ); virtual void endelement( const XMLCh const puri, const XMLCh const plocalname, const XMLCh const pqname ); void fatalerror(const xercesc::saxparseexception&); ; void SetCmdsList(CommandsList &CmdsList) { pcmdslist = &CmdsList; void WhenEndElement(const std::string & ElemName); void WhenStartElement( const std::string & ElemName, const xercesc::attributes& Attrs ); void ProcessCommandAttrs(const xercesc::attributes& Attrs); void CreateCommand(const std::string & CommandName); void ProcessParameterAttrs(const xercesc::attributes& Attrs); private : CommandsList pcmdslist; Command pcmd;

131 Klasa parsera class Parser4CommandsXMLFile : public xercesc::defaulthandler { public : Parser4CommandsXMLFile(CommandsList &CmdList); virtual void startdocument( ); virtual void enddocument( ); virtual void startelement( const XMLCh const puri, const XMLCh const plocalname, const XMLCh const pqname, const xercesc::attributes& attrs ); virtual void endelement( const XMLCh const puri, const XMLCh const plocalname, const XMLCh const pqname ); void fatalerror(const xercesc::saxparseexception&); ; void SetCmdsList(CommandsList &CmdsList) { pcmdslist = &CmdsList; void WhenEndElement(const std::string & ElemName); void WhenStartElement( const std::string & ElemName, const xercesc::attributes& Attrs ); void ProcessCommandAttrs(const xercesc::attributes& Attrs); void CreateCommand(const std::string & CommandName); void ProcessParameterAttrs(const xercesc::attributes& Attrs); private : CommandsList pcmdslist; Command pcmd;

132 Klasa parsera class Parser4CommandsXMLFile : public xercesc::defaulthandler { public : Parser4CommandsXMLFile(CommandsList &CmdList); virtual void startdocument( ); virtual void enddocument( ); virtual void startelement( const XMLCh const puri, const XMLCh const plocalname, const XMLCh const pqname, const xercesc::attributes& attrs ); virtual void endelement( const XMLCh const puri, const XMLCh const plocalname, const XMLCh const pqname ); void fatalerror(const xercesc::saxparseexception&); ; void SetCmdsList(CommandsList &CmdsList) { pcmdslist = &CmdsList; void WhenEndElement(const std::string & ElemName); void WhenStartElement( const std::string & ElemName, const xercesc::attributes& Attrs ); void ProcessCommandAttrs(const xercesc::attributes& Attrs); void CreateCommand(const std::string & CommandName); void ProcessParameterAttrs(const xercesc::attributes& Attrs); private : CommandsList pcmdslist; Command pcmd;

133 Definicja metody wirtualnej fatalerror void Parser4CommandsXMLFile::fatalError(const xercesc::saxparseexception& Except) { char smessage = xercesc::xmlstring::transcode( Except.getSMessage( ) ); cout << Blad fatalny: << smessage << endl << linia: << Except.getLineNumber( ) << endl << kolumna: << Except.getColumnNumber() << endl; xercesc::xmlstring::release(&smessage);

134 Klasa parsera class Parser4CommandsXMLFile : public xercesc::defaulthandler { public : Parser4CommandsXMLFile(CommandsList &CmdList); virtual void startdocument( ); virtual void enddocument( ); virtual void startelement( const XMLCh const puri, const XMLCh const plocalname, const XMLCh const pqname, const xercesc::attributes& attrs ); virtual void endelement( const XMLCh const puri, const XMLCh const plocalname, const XMLCh const pqname ); void fatalerror(const xercesc::saxparseexception&); ; void SetCmdsList(CommandsList &CmdsList) { pcmdslist = &CmdsList; void WhenEndElement(const std::string & ElemName); void WhenStartElement( const std::string & ElemName, const xercesc::attributes& Attrs ); void ProcessCommandAttrs(const xercesc::attributes& Attrs); void CreateCommand(const std::string & CommandName); void ProcessParameterAttrs(const xercesc::attributes& Attrs); private : CommandsList pcmdslist; Command pcmd;

135 Gdy napotkany zostanie element XML... void Parser4CommandsXMLFile::startElement( const XMLCh const puri, const XMLCh const plocalname, const XMLCh const pqname, const xercesc::attributes& Attrs ) { char selemname = xercesc::xmlstring::transcode(plocalname); cout << +++ Poczatek elementu: << selemname << endl; WhenStartElement(sElemName, Attrs); xercesc::xmlstring::release(&selemname);

136 Gdy napotkany zostanie element XML... void Parser4CommandsXMLFile::startElement( const XMLCh const puri, const XMLCh const plocalname, const XMLCh const pqname, const xercesc::attributes& Attrs ) { char selemname = xercesc::xmlstring::transcode(plocalname); cout << +++ Poczatek elementu: << selemname << endl; WhenStartElement(sElemName, Attrs); xercesc::xmlstring::release(&selemname); <CommandsList> <Command Name="Rotate" > <Parameter Name="Angle" Value="35" /> <Parameter Name="AngleSpeed" Value="200" /> </Command> </CommandsList>

137 Gdy napotkany zostanie element XML... void Parser4CommandsXMLFile::startElement( const XMLCh const puri, const XMLCh const plocalname, const XMLCh const pqname, const xercesc::attributes& Attrs ) { char selemname = xercesc::xmlstring::transcode(plocalname); cout << +++ Poczatek elementu: << selemname << endl; WhenStartElement(sElemName, Attrs); xercesc::xmlstring::release(&selemname); <CommandsList> <Command Name="Rotate" > <Parameter Name="Angle" Value="35" /> <Parameter Name="AngleSpeed" Value="200" /> </Command> </CommandsList>

138 Gdy napotkany zostanie element XML... void Parser4CommandsXMLFile::startElement( const XMLCh const puri, const XMLCh const plocalname, const XMLCh const pqname, const xercesc::attributes& Attrs ) { char selemname = xercesc::xmlstring::transcode(plocalname); cout << +++ Poczatek elementu: << selemname << endl; WhenStartElement(sElemName, Attrs); xercesc::xmlstring::release(&selemname); <CommandsList> <Command Name="Rotate" > <Parameter Name="Angle" Value="35" /> <Parameter Name="AngleSpeed" Value="200" /> </Command> </CommandsList>

139 Gdy napotkany zostanie element XML... void Parser4CommandsXMLFile::startElement( const XMLCh const puri, const XMLCh const plocalname, const XMLCh const pqname, const xercesc::attributes& Attrs ) { char selemname = xercesc::xmlstring::transcode(plocalname); cout << +++ Poczatek elementu: << selemname << endl; WhenStartElement(sElemName, Attrs); xercesc::xmlstring::release(&selemname); <CommandsList> <Command Name="Rotate" > <Parameter Name="Angle" Value="35" /> <Parameter Name="AngleSpeed" Value="200" /> </Command> </CommandsList>

140 Gdy napotkany zostanie element XML... void Parser4CommandsXMLFile::startElement( const XMLCh const puri, const XMLCh const plocalname, const XMLCh const pqname, const xercesc::attributes& Attrs ) { char selemname = xercesc::xmlstring::transcode(plocalname); cout << +++ Poczatek elementu: << selemname << endl; WhenStartElement(sElemName, Attrs); xercesc::xmlstring::release(&selemname); <CommandsList> <Command Name="Rotate" > <Parameter Name="Angle" Value="35" /> <Parameter Name="AngleSpeed" Value="200" /> </Command> </CommandsList>

141 Gdy napotkany zostanie element XML... void Parser4CommandsXMLFile::startElement( const XMLCh const puri, const XMLCh const plocalname, const XMLCh const pqname, const xercesc::attributes& Attrs ) { char selemname = xercesc::xmlstring::transcode(plocalname); cout << +++ Poczatek elementu: << selemname << endl; WhenStartElement(sElemName, Attrs); xercesc::xmlstring::release(&selemname); <CommandsList> <Command Name="Rotate" > <Parameter Name="Angle" Value="35" /> <Parameter Name="AngleSpeed" Value="200" /> </Command> </CommandsList>

142 Gdy napotkany zostanie element XML... void Parser4CommandsXMLFile::startElement( const XMLCh const puri, const XMLCh const plocalname, const XMLCh const pqname, const xercesc::attributes& Attrs ) { char selemname = xercesc::xmlstring::transcode(plocalname); cout << +++ Poczatek elementu: << selemname << endl; WhenStartElement(sElemName, Attrs); xercesc::xmlstring::release(&selemname); URI (Uniform Resource Identifier) jest to ciąg znaków, który identyfikuje określone zasoby w Internecie. Większość URI to zunifikowane identyfikatory domeny adresowej (Uniform Resource Locator URL). Rzadziej są nimi zunifkowane nazwy zasobów (Uniform Resource Name URN).

143 Gdy napotkany zostanie element XML... void Parser4CommandsXMLFile::startElement( const XMLCh const puri, const XMLCh const plocalname, const XMLCh const pqname, const xercesc::attributes& Attrs ) { char selemname = xercesc::xmlstring::transcode(plocalname); cout << +++ Poczatek elementu: << selemname << endl; WhenStartElement(sElemName, Attrs); xercesc::xmlstring::release(&selemname); Elementy informacji o wewnętrznej strukturze Internetu: URN (Uniform Resource Name) jest to identyfikator danego zasobu. URC (Uniform Resource Characteristics) zawiera metainformacje o danym zasobie. URL (Uniform Resource Locator) informacja o lokalizacji danego zasobu.

144 Gdy napotkany zostanie element XML... void Parser4CommandsXMLFile::startElement( const XMLCh const puri, const XMLCh const plocalname, const XMLCh const pqname, const xercesc::attributes& Attrs ) { char selemname = xercesc::xmlstring::transcode(plocalname); cout << +++ Poczatek elementu: << selemname << endl; WhenStartElement(sElemName, Attrs); xercesc::xmlstring::release(&selemname); Przykład: URN urn:isbn:

145 Gdy napotkany zostanie element XML... void Parser4CommandsXMLFile::startElement( const XMLCh const puri, const XMLCh const plocalname, const XMLCh const pqname, const xercesc::attributes& Attrs ) { char selemname = xercesc::xmlstring::transcode(plocalname); cout << +++ Poczatek elementu: << selemname << endl; WhenStartElement(sElemName, Attrs); xercesc::xmlstring::release(&selemname); Przykład: URN urn:isbn: URN ::= urn:<identyfikator Przestrzeni Nazw>:<Element Przestni Nazw>

146 Gdy napotkany zostanie element XML... void Parser4CommandsXMLFile::startElement( const XMLCh const puri, const XMLCh const plocalname, const XMLCh const pqname, const xercesc::attributes& Attrs ) { char selemname = xercesc::xmlstring::transcode(plocalname); cout << +++ Poczatek elementu: << selemname << endl; WhenStartElement(sElemName, Attrs); xercesc::xmlstring::release(&selemname); Zazwyczaj URI zawiera URL, który lokalizuje opis danej podprzestrzni nazw. URI {{ URL, URN

147 Gdy napotkany zostanie element XML... void Parser4CommandsXMLFile::startElement( const XMLCh const puri, const XMLCh const plocalname, const XMLCh const pqname, const xercesc::attributes& Attrs ) { char selemname = xercesc::xmlstring::transcode(plocalname); cout << +++ Poczatek elementu: << selemname << endl; WhenStartElement(sElemName, Attrs); xercesc::xmlstring::release(&selemname); <CommandsList> <Command Name="Rotate" > <Parameter Name="Angle" Value="35" /> <Parameter Name="AngleSpeed" Value="200" /> </Command> </CommandsList>

148 Gdy napotkany zostanie element XML... void Parser4CommandsXMLFile::startElement( const XMLCh const puri, const XMLCh const plocalname, const XMLCh const pqname, const xercesc::attributes& Attrs ) { char selemname = xercesc::xmlstring::transcode(plocalname); cout << +++ Poczatek elementu: << selemname << endl; WhenStartElement(sElemName, Attrs); xercesc::xmlstring::release(&selemname); <CommandsList xmlns:h=" <h:command Name="Rotate" > <h:parameter Name="Angle" Value="35" /> <h:parameter Name="AngleSpeed" Value="200" /> </h:command> </CommandsList>

149 Gdy napotkany zostanie element XML... void Parser4CommandsXMLFile::startElement( const XMLCh const puri, const XMLCh const plocalname, const XMLCh const pqname, const xercesc::attributes& Attrs ) { char selemname = xercesc::xmlstring::transcode(plocalname); cout << +++ Poczatek elementu: << selemname << endl; WhenStartElement(sElemName, Attrs); xercesc::xmlstring::release(&selemname); <CommandsList> <h:command Name="Rotate" xmlns:h=" <h:parameter Name="Angle" Value="35" /> <h:parameter Name="AngleSpeed" Value="200" /> </h:command> </CommandsList>

150 Gdy napotkany zostanie element XML... void Parser4CommandsXMLFile::startElement( const XMLCh const puri, const XMLCh const plocalname, const XMLCh const pqname, const xercesc::attributes& Attrs ) { char selemname = xercesc::xmlstring::transcode(plocalname); cout << +++ Poczatek elementu: << selemname << endl; WhenStartElement(sElemName, Attrs); xercesc::xmlstring::release(&selemname); puri: plocalname: pqname: Command h:command

151 Gdy napotkany zostanie element XML... void Parser4CommandsXMLFile::startElement( const XMLCh const puri, const XMLCh const plocalname, const XMLCh const pqname, const xercesc::attributes& Attrs ) { char selemname = xercesc::xmlstring::transcode(plocalname); cout << +++ Poczatek elementu: << selemname << endl; WhenStartElement(sElemName, Attrs); xercesc::xmlstring::release(&selemname);

152 Gdy napotkany zostanie element XML... void Parser4CommandsXMLFile::WhenStartElement( { if (ElemName == Command ) { ProcessCommandAttrs(Attrs); return ; ) const std::string &ElemName, const xercesc::attributes &Attrs if (ElemName == Parameter ) { ProcessParameterAttrs(Attrs); return ;

153 Gdy napotkany zostanie element XML... void Parser4CommandsXMLFile::WhenStartElement( { if (ElemName == Command ) { ProcessCommandAttrs(Attrs); return ; ) const std::string &ElemName, const xercesc::attributes &Attrs if (ElemName == Parameter ) { ProcessParameterAttrs(Attrs); return ;

154 Gdy napotkany zostanie element XML... void Parser4CommandsXMLFile::ProcessCommandAttrs(const xercesc::attributes &Attrs) { if (Attrs.getLength( )!= 1) { cerr << Zla ilosc atrybutow dla \ Command\ << endl; throw 1; char sattrname = xercesc::xmlstring::transcode(attrs.getqname(0)); if (strcmp(sattrname, Name )) { cerr << Zla nazwa atrybutu dla Command << endl; throw 2; char scommandname = xercesc::xmlstring ::transcode(attrs.getvalue(static cast <XMLSize t>(0))); CreateCommand(sCommandName); xercesc::xmlstring::release(&scommandname); xercesc::xmlstring::release(&sattrname);

155 Gdy dochodzimy do końca elementu... void Parser4CommandsXMLFile::endElement( const XMLCh const puri, const XMLCh const plocalname, const XMLCh const pqnname ) { char selemname = xercesc::xmlstring::transcode(plocalname); cout << Koniec elementu: << selemname << endl; WhenEndElement(sElemName); xercesc::xmlstring::release(&selemname);

156 Gdy dochodzimy do końca elementu... void Parser4CommandsXMLFile::endElement( const XMLCh const puri, const XMLCh const plocalname, const XMLCh const pqnname ) { char selemname = xercesc::xmlstring::transcode(plocalname); cout << Koniec elementu: << selemname << endl; WhenEndElement(sElemName); xercesc::xmlstring::release(&selemname);

157 Gdy dochodzimy do końca elementu... void Parser4CommandsXMLFile::WhenEndElement(const std::string & ElemName) { if (ElemName!= Command ) return ; assert( pcmd!= NULL); assert( pcmdslist!= NULL); pcmdslist >Add( pcmd); cout << Polecenie \ << GetCmdName( ) << \ zostalo dodane do listy. << endl; pcmd = NULL;

158 Plan prezentacji Program rlwrap Biblioteka readline 1 Tworzenie bibliotek dynamicznie konsolidowanych Biblioteki statyczne - cechy, zalety i wady Biblioteki dynamiczne - cechy, zalety i wady Podstawowe informacje 2 3 Program rlwrap Biblioteka readline

159 Program rlwrap Biblioteka readline Program rlwrap jak uzyskać historię poleceń rlwrap readline wrapper Sposób wywołania: rlwrap [opcje] polecenie Program rlwrap przechwytuje wejście standardowe danego polecenia i pośredniczy między użytkownikiem, a danym poleceniem. Umożliwia on zdefiniowanie własnej zachęty, dostarcza historię wprowadzanych napisów. Dostarcza również system dopełniania nazw. Program jest przezroczysty dla wykonywanego polecenia.

160 Program rlwrap Biblioteka readline Przykład użycia programu rlwrap #include <iostream> using namespace std; [interakcja.cpp] void WyswietlMenu( ) { cout << endl << a - Akcja << endl << m - Wyswietl Menu << endl << k - Koniec << endl << endl; int main( ) { char Opcja = m ; do { switch (Opcja) { case m : WyswietlMenu( ); break ; case a : cout << Szybka akcja!!! << endl; break ; while ( cin >> Opcja, Opcja!= k ) {

161 Przykład użycia programu rlwrap Program rlwrap Biblioteka readline

Szablony funkcji i szablony klas

Szablony funkcji i szablony klas Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument

Bardziej szczegółowo

Zasoby, pliki graficzne

Zasoby, pliki graficzne Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska Kurs: Copyright c 2017 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu

Bardziej szczegółowo

Wyjątki. Wyjątki. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Wyjątki. Wyjątki. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska Bogdan Kreczmer bogdan.kreczmer@pwr.edu.pl Katedra Cybernetyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2018 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania

Bardziej szczegółowo

Weryfikatory, zasoby graficzne

Weryfikatory, zasoby graficzne , zasoby graficzne Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska Kurs: Copyright c 2019 Bogdan Kreczmer Niniejszy dokument zawiera

Bardziej szczegółowo

Schemat konstrukcja pliku Makefile

Schemat konstrukcja pliku Makefile Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2008 Bogdan Kreczmer Niniejszy dokument

Bardziej szczegółowo

Qt sygnały i sloty. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska

Qt sygnały i sloty. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska Qt sygnały i sloty Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska Kurs: Copyright c 2018 Bogdan Kreczmer Niniejszy dokument zawiera

Bardziej szczegółowo

Wprowadzenie do szablonów klas

Wprowadzenie do szablonów klas Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2008-2010 Bogdan Kreczmer Niniejszy

Bardziej szczegółowo

Wprowadzenie do szablonów szablony funkcji

Wprowadzenie do szablonów szablony funkcji Wprowadzenie do szablonów szablony funkcji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do

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

Wprowadzenie do szablonów szablony funkcji

Wprowadzenie do szablonów szablony funkcji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.

Bardziej szczegółowo

Qt sygnały i designer

Qt sygnały i designer Qt sygnały i designer Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2015 Bogdan

Bardziej szczegółowo

Praca z aplikacją designer

Praca z aplikacją designer Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2014 Bogdan Kreczmer Niniejszy dokument

Bardziej szczegółowo

Przestrzenie nazw. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Przestrzenie nazw. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska Bogdan Kreczmer bogdan.kreczmer@pwr.edu.pl Katedra Cybernetyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2018 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania

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

Plan dzisiejszego wykładu. Narzędzia informatyczne w językoznawstwie. XML - Definicja. Zalety XML

Plan dzisiejszego wykładu. Narzędzia informatyczne w językoznawstwie. XML - Definicja. Zalety XML Plan dzisiejszego wykładu Narzędzia informatyczne w językoznawstwie Perl - Wprowadzenie do XML Marcin Junczys-Dowmunt junczys@amu.edu.pl Zakład Logiki Stosowanej http://www.logic.amu.edu.pl 16. kwietnia

Bardziej szczegółowo

Wprowadzenie do technologii XML

Wprowadzenie do technologii XML Katedra Mikroelektroniki i Technik Informatycznych Łódź, 6 października 2005 roku 1 Informacje organizacyjne Omówienie przedmiotu 2 vs HTML Struktura 3 Struktura Informacje o przedmiocie Informacje organizacyjne

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

Autotools. Bogdan Kreczmer.

Autotools. Bogdan Kreczmer. Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2010 Bogdan Kreczmer Niniejszy dokument

Bardziej szczegółowo

Rola języka XML narzędziem

Rola języka XML narzędziem Wprowadzenie do XML dr inż. Adam Iwaniak Szkolenie w Luboradzy, ZCPWZ, 12-13.02.2009r. Rola języka XML narzędziem Pierwszą rewolucją internetową było dostarczenie ludziom informacji. Znajdujemy się teraz

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

LABORATORIUM 5 WSTĘP DO SIECI TELEINFORMATYCZNYCH WPROWADZENIE DO XML I XSLT

LABORATORIUM 5 WSTĘP DO SIECI TELEINFORMATYCZNYCH WPROWADZENIE DO XML I XSLT LABORATORIUM 5 WSTĘP DO SIECI TELEINFORMATYCZNYCH WPROWADZENIE DO XML I XSLT 1. Wstęp XML (Extensible Markup Language Rozszerzalny Język Znaczników) to język formalny przeznaczony do reprezentowania danych

Bardziej szczegółowo

Papyrus. Papyrus. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Papyrus. Papyrus. Katedra Cybernetyki i Robotyki Politechnika Wrocławska Katedra Cybernetyki i Robotyki Politechnika Wrocławska Kurs: Zaawansowane metody programowania Copyright c 2014 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania

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

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

Wartości domyślne, przeciażenia funkcji

Wartości domyślne, przeciażenia funkcji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.

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

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

WYKŁAD 1 METAJĘZYK SGML CZĘŚĆ 1

WYKŁAD 1 METAJĘZYK SGML CZĘŚĆ 1 WYKŁAD 1 METAJĘZYK SGML CZĘŚĆ 1 SGML (Standard Generalized Markup Language) Standardowy uogólniony język znaczników służący do ujednolicania struktury i formatu różnego typu informacji (danych). Twórcy

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

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej. Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.

Bardziej szczegółowo

Wartości domyślne, przeciażenia funkcji

Wartości domyślne, przeciażenia funkcji Wartości domyślne, przeciażenia funkcji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.

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

LAB 7. XML EXtensible Markup Language - Rozszerzalny Język Znaczników XSD XML Schema Definition Definicja Schematu XML

LAB 7. XML EXtensible Markup Language - Rozszerzalny Język Znaczników XSD XML Schema Definition Definicja Schematu XML Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 7 XML EXtensible Markup Language - Rozszerzalny Język Znaczników XSD XML Schema Definition Definicja Schematu XML 1. Prosty dokument XML lab7_1.xml

Bardziej szczegółowo

XML Schema. Bartłomiej Świercz. Łódź, 19 listopada 2005 roku. Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz XML Schema

XML Schema. Bartłomiej Świercz. Łódź, 19 listopada 2005 roku. Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz XML Schema XML Schema Bartłomiej Świercz Katedra Mikroelektroniki i Technik Informatycznych Łódź, 19 listopada 2005 roku Wstęp XML Schema służy do definiowania struktury dokumentu XML (pełni podobną funkcję jak DTD).

Bardziej szczegółowo

Wyjątki (exceptions)

Wyjątki (exceptions) Instrukcja laboratoryjna nr 6 Programowanie w języku C 2 (C++ poziom zaawansowany) Wyjątki (exceptions) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp Wyjątki (ang.

Bardziej szczegółowo

Operacje wejścia/wyjścia odsłona pierwsza

Operacje wejścia/wyjścia odsłona pierwsza Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.

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

PARADYGMATY PROGRAMOWANIA Wykład 4

PARADYGMATY PROGRAMOWANIA Wykład 4 PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej

Bardziej szczegółowo

XML extensible Markup Language. Paweł Chodkiewicz

XML extensible Markup Language. Paweł Chodkiewicz XML extensible Markup Language Paweł Chodkiewicz XML - extensible Markup Language Uniwersalny język znaczników przeznaczony do reprezentowania różnych danych w strukturalizowany sposób. Historia GML Projekt

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

Przesłanianie nazw, przestrzenie nazw

Przesłanianie nazw, przestrzenie nazw Przesłanianie nazw, przestrzenie nazw Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2013 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu

Bardziej szczegółowo

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost; Klasy w C++ są bardzo ważnym narzędziem w rękach programisty. Klasy są fundamentem programowania obiektowego. Z pomocą klas będziesz mógł tworzyć lepszy kod, a co najważniejsze będzie on bardzo dobrze

Bardziej szczegółowo

Podstawy programowania skrót z wykładów:

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

DYNAMICZNE PRZYDZIELANIE PAMIECI

DYNAMICZNE PRZYDZIELANIE PAMIECI DYNAMICZNE PRZYDZIELANIE PAMIECI Pamięć komputera, dostępna dla programu, dzieli się na cztery obszary: kod programu, dane statyczne ( np. stałe i zmienne globalne programu), dane automatyczne zmienne

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

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

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki W językach niskopoziomowych błędy zgłaszane były przez zwracanie odpowiedniego statusu (liczby) W C main() zwraca int żeby można było określić

Bardziej szczegółowo

Podstawy Programowania Obiektowego

Podstawy Programowania Obiektowego Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja

Bardziej szczegółowo

Style programowania - krótki przeglad

Style programowania - krótki przeglad Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.

Bardziej szczegółowo

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4 Wykład 4 p. 1/1 Oprogramowanie i wykorzystanie stacji roboczych Wykład 4 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Obsługa sieci Wykład

Bardziej szczegółowo

Pola i metody statyczne

Pola i metody statyczne Pola i metody statyczne Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2009 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania

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

Aplikacja po polsku. Bogdan Kreczmer. ZPCiR ICT PWr pokój 307 budynek C3.

Aplikacja po polsku. Bogdan Kreczmer. ZPCiR ICT PWr pokój 307 budynek C3. Aplikacja po polsku Bogdan Kreczmer ZPCiR ICT PWr pokój 307 budynek C3 kreczmer@ict.pwr.wroc.pl Copyright c 2004 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat wizualizacji danych

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

SOAP i alternatywy. 1. WSDL. 2. Protokoły tekstowe XML-RPC. JSON-RPC. SOAPjr. 3. Protokoły binarne Google Protocol Bufers. Apache Thrift.

SOAP i alternatywy. 1. WSDL. 2. Protokoły tekstowe XML-RPC. JSON-RPC. SOAPjr. 3. Protokoły binarne Google Protocol Bufers. Apache Thrift. SOAP i alternatywy 1. WSDL. 2. Protokoły tekstowe XML-RPC. JSON-RPC. SOAPjr. 3. Protokoły binarne Google Protocol Bufers. Apache Thrift. 1 WSDL WSDL (Web Services Description Language) jest standardem

Bardziej szczegółowo

WYKŁAD 2 DTD DOCUMENT TYPE DEFINITION CZĘŚĆ 1

WYKŁAD 2 DTD DOCUMENT TYPE DEFINITION CZĘŚĆ 1 WYKŁAD 2 DTD DOCUMENT TYPE DEFINITION CZĘŚĆ 1 XML (ang. Extensible Markup Language Rozszerzalny język znaczników) Oparty o SGML prosty, elastyczny format tekstowy opisujący klasę obiektów nazywanych dokumentami

Bardziej szczegółowo

GStreamer. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska

GStreamer. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska Bogdan Kreczmer bogdan.kreczmer@pwr.edu.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska Kurs: Copyright c 2018 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu

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

METODY REPREZENTACJI INFORMACJI

METODY REPREZENTACJI INFORMACJI Politechnika Gdańska Wydział Elektroniki, Telekomunikacji i Informatyki Magisterskie Studia Uzupełniające METODY REPREZENTACJI INFORMACJI Ćwiczenie 1: Budowa i rozbiór gramatyczny dokumentów XML Instrukcja

Bardziej szczegółowo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

29. Poprawność składniowa i strukturalna dokumentu XML

29. Poprawność składniowa i strukturalna dokumentu XML 29. i strukturalna dokumentu XML 13 października 2015 1 2 Poprawny składniowo dokument XML powinien być tworzony zgodnie z poniżej przedstawionymi zasadami. Deklaracja XML Powinien zawierać deklarację

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

Wprowadzenie do UML, przykład użycia kolizja

Wprowadzenie do UML, przykład użycia kolizja Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2012 Bogdan Kreczmer Niniejszy dokument

Bardziej szczegółowo

Programowanie 2. Język C++. Wykład 3.

Programowanie 2. Język C++. Wykład 3. 3.1 Programowanie zorientowane obiektowo... 1 3.2 Unie... 2 3.3 Struktury... 3 3.4 Klasy... 4 3.5 Elementy klasy... 5 3.6 Dostęp do elementów klasy... 7 3.7 Wskaźnik this... 10 3.1 Programowanie zorientowane

Bardziej szczegółowo

Aplikacje internetowe laboratorium XML, DTD, XML Schema, XSL

Aplikacje internetowe laboratorium XML, DTD, XML Schema, XSL Aplikacje internetowe laboratorium XML, DTD, XML Schema, XSL Celem ćwiczenia jest stworzenie dokumentu XML, wyposażenie dokumentu w specyfikację struktury (przy użyciu DTD i XML Schema), oraz transformacja

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 Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego

Bardziej szczegółowo

Wprowadzenie do technologii XML

Wprowadzenie do technologii XML Wprowadzenie do technologii Bartłomiej Świercz Katedra Mikroelektroniki i Technik Informatycznych Łódź, 11 kwietnia 2010 Program wykładu Celem wykładu jest przedstawienie technologii i pokrewnych do niej

Bardziej szczegółowo

Operacje wejścia/wyjścia (odsłona druga) - pliki

Operacje wejścia/wyjścia (odsłona druga) - pliki Operacje wejścia/wyjścia (odsłona druga) - pliki Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały

Bardziej szczegółowo

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Programowanie obiektowe, wykład nr 6. Klasy i obiekty Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 6 Klasy i obiekty W programowaniu strukturalnym rozwój oprogramowania oparto

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

Model semistrukturalny

Model semistrukturalny Model semistrukturalny standaryzacja danych z różnych źródeł realizacja złożonej struktury zależności, wielokrotne zagnieżdżania zobrazowane przez grafy skierowane model samoopisujący się wielkości i typy

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

DTD - encje ogólne i parametryczne, przestrzenie nazw

DTD - encje ogólne i parametryczne, przestrzenie nazw DTD - encje ogólne i parametryczne, przestrzenie nazw Instytut Informatyki Encje Encja (ang.entity) - uogólnienie pojęcia makrodefinicji Encje to dogodny sposób reprezentacji danych które występują wielokrotnie,

Bardziej szczegółowo

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Programowanie w C++ Wykład 5 Katarzyna Grzelak 26 marca 2018 9 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Pojęcia z poprzedniego wykładu Podział programu na funkcje podział na niezależne

Bardziej szczegółowo

XML DTD XML Schema CSS

XML DTD XML Schema CSS XML XML czyli Extensible Markup Language (rozszerzalny język znaczników) można traktować jak stosunkowo prosty i elastyczny format tekstowy wywodzący się z SGML. Pierwotnie został zaprojektowany aby umożliwiać

Bardziej szczegółowo

Wstęp do programowania. Wykład 1

Wstęp do programowania. Wykład 1 Wstęp do programowania Wykład 1 1 / 49 Literatura Larry Ullman, Andreas Signer. Programowanie w języku C++. Walter Savitch, Kenrick Mock. Absolute C++. Jerzy Grębosz. Symfonia C++. Standard. Stephen Prata.

Bardziej szczegółowo

Konstruktor kopiujacy

Konstruktor kopiujacy Konstruktor kopiujacy Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego. Jest on udostępniony

Bardziej szczegółowo

Hermetyzacja oraz pola i metody statyczne

Hermetyzacja oraz pola i metody statyczne Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2010 Bogdan Kreczmer Niniejszy dokument

Bardziej szczegółowo

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Składnia C++ Programowanie Obiektowe Mateusz Cicheński Składnia C++ Programowanie Obiektowe Mateusz Cicheński Klasy i modyfikatory dostępu Przesłanianie metod Polimorfizm Wskaźniki Metody wirtualne Metody abstrakcyjne i interfejsy Konstruktory i destruktory

Bardziej szczegółowo

OpenGL oświetlenie. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska

OpenGL oświetlenie. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska OpenGL oświetlenie Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska Kurs: Copyright c 2017 Bogdan Kreczmer Niniejszy dokument zawiera

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

Część 4 życie programu

Część 4 życie programu 1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część

Bardziej szczegółowo

Zadanie 2: Arytmetyka symboli

Zadanie 2: Arytmetyka symboli 1 Cel ćwiczenia Zadanie 2: Arytmetyka symboli Wykształcenie umiejętności abstrahowania operacji arytmetycznych. Zapoznanie się i przećwiczenie mechanizmu tworzenia przeciążeń funkcji operatorowych. Utrwalenie

Bardziej szczegółowo

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie

Bardziej szczegółowo

Mechanizm dziedziczenia

Mechanizm dziedziczenia Mechanizm dziedziczenia Programowanie obiektowe jako realizacja koncepcji ponownego wykorzystania kodu Jak przebiega proces dziedziczenia? Weryfikacja formalna poprawności dziedziczenia Realizacja dziedziczenia

Bardziej szczegółowo

Kurs programowania. Wykład 7. Wojciech Macyna. 25 kwietnia 2017

Kurs programowania. Wykład 7. Wojciech Macyna. 25 kwietnia 2017 Wykład 7 25 kwietnia 2017 Dokumentowanie kodu Program javadoc Java jest wyposażona w generator dokumentacji który na podstawie odpowiednio napisanych komentarzy w kodzie programu (które jednak nie sa konieczne),

Bardziej szczegółowo

Kurs WWW Język XML, część I

Kurs WWW Język XML, część I Język XML, część I Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Zawartość modułu Wprowadzenie do XML Składnia Znaczniki i atrybuty DTD XML Schema Na podstawie kursu ze strony: http://www.w3schools.com/schema/default.asp

Bardziej szczegółowo

Aplikacje internetowe laboratorium XML, DTD, XSL

Aplikacje internetowe laboratorium XML, DTD, XSL Aplikacje internetowe laboratorium XML, DTD, XSL Celem ćwiczenia jest stworzenie dokumentu XML, wyposażenie dokumentu w specyfikację struktury (przy użyciu DTD), oraz transformacja dokumentu XML do postaci

Bardziej szczegółowo

Czujniki PSD i dalmierze triangulacyjne

Czujniki PSD i dalmierze triangulacyjne Czujniki PSD i dalmierze triangulacyjne Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechniki Wrocławskiej Kurs: Copyright c 2015 Bogdan Kreczmer

Bardziej szczegółowo

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : class nazwa_klasy prywatne dane i funkcje public: publiczne dane i funkcje lista_obiektów;

Bardziej szczegółowo

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

Projektowanie obiektowe. Roman Simiński  Wzorce projektowe Wybrane wzorce strukturalne Projektowanie obiektowe Roman Simiński roman.siminski@us.edu.pl www.siminskionline.pl Wzorce projektowe Wybrane wzorce strukturalne Fasada Facade Pattern 2 Wzorzec Fasada Facade Pattern koncepcja 3 Wzorzec

Bardziej szczegółowo

Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce

Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka

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

Programowanie obiektowe w języku

Programowanie obiektowe w języku Programowanie obiektowe w języku C++ Stanisław Gepner sgepner@meil.pw.edu.pl Dziedziczenie Wstęp Zacznijmy od przykładu Przykład rolniczy Każde zwierzątko wydaje dźwięk Każde się tak samo porusza Musimy

Bardziej szczegółowo

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Zaawansowane programowanie w języku C++ Programowanie obiektowe Zaawansowane programowanie w języku C++ Programowanie obiektowe Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka

Bardziej szczegółowo

Zasady programowania Dokumentacja

Zasady programowania Dokumentacja Marcin Kędzierski gr. 14 Zasady programowania Dokumentacja Wstęp 1) Temat: Przeszukiwanie pliku za pomocą drzewa. 2) Założenia projektu: a) Program ma pobierać dane z pliku wskazanego przez użytkownika

Bardziej szczegółowo

Java jako język programowania

Java jako język programowania Java jako język programowania Interpretowany programy wykonują się na wirtualnej maszynie (JVM Java Virtual Machine) Składnia oparta o język C++ W pełni zorientowany obiektowo (wszystko jest obiektem)

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

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego Iwona Kochaoska Programowanie Obiektowe Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Bardziej szczegółowo

Dokument poprawnie sformułowany jest zgodny z ogólnymi zasadami składniowymi:

Dokument poprawnie sformułowany jest zgodny z ogólnymi zasadami składniowymi: DTD Document Type Definition Dokument poprawnie sformułowany (well-formed) Dokument poprawnie sformułowany jest zgodny z ogólnymi zasadami składniowymi: 1. KaŜdy znacznik musi posiadać zamknięcie (wyjątek

Bardziej szczegółowo