Biblioteki dzielone, XML i readline
|
|
- Fabian Paluch
- 6 lat temu
- Przeglądów:
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 " 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
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ółowoZasoby, 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ółowoWyją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ółowoWeryfikatory, 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ółowoSchemat 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ółowoQt 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ółowoWprowadzenie 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ółowoWprowadzenie 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ółowoExtensible 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ółowoWprowadzenie 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ółowoQt 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ółowoPraca 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ółowoPrzestrzenie 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ółowoObiektowy 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ółowoPlan 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ółowoWprowadzenie 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ółowoPerl 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ółowoAutotools. 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ółowoRola 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ółowoJAVA 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ółowoLABORATORIUM 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ółowoPapyrus. 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ółowoProgramowanie 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ółowoWykorzystywanie 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ółowoWartoś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ółowoJĘ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ółowoWykł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ółowoWYKŁ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ółowoKurs 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ółowoPodczas 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ółowoWartoś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ółowoKLASA 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ółowoLAB 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ółowoXML 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ółowoWyją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ółowoOperacje 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ółowoKurs 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ółowoPARADYGMATY 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ółowoXML 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ółowo1 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ółowoPrzesł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ółowoInformacje 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ółowoPodstawy 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ółowoDYNAMICZNE 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ółowoJAVA. 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ółowoDariusz 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ółowoPodstawy 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ółowoStyle 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ółowoOprogramowanie 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ółowoPola 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ółowoProgramowanie 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ółowoAplikacja 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ółowoMETODY 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ółowoSOAP 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ółowoWYKŁ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ółowoGStreamer. 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ółowoKurs 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ółowoMETODY 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ółowoPodstawy 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ółowo29. 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ółowoPodstawy 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ółowoWprowadzenie 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ółowoProgramowanie 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ółowo1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.
1. Pierwszy program // mój pierwszy program w C++ #include using namespace std; cout
Bardziej szczegółowoAplikacje 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ółowoDariusz 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ółowoWprowadzenie 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ółowoOperacje 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ółowoProgramowanie 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ółowoKLASA 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ółowoModel 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ółowoProgramowanie 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ółowoDTD - 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ółowoProgramowanie 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ółowoXML 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ółowoWstę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ółowoKonstruktor 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ółowoHermetyzacja 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ółowoSkł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ółowoOpenGL 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ółowoZaawansowane 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ółowoCzęść 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ółowoZadanie 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ółowoProgramowanie 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ółowoMechanizm dziedziczenia
Mechanizm dziedziczenia Programowanie obiektowe jako realizacja koncepcji ponownego wykorzystania kodu Jak przebiega proces dziedziczenia? Weryfikacja formalna poprawności dziedziczenia Realizacja dziedziczenia
Bardziej szczegółowoKurs 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ółowoKurs 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ółowoAplikacje 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ółowoCzujniki 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ółowoW2 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ółowoProjektowanie 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ółowoZaawansowane 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ółowoJę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ółowoProgramowanie 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ółowoZaawansowane 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ółowoZasady 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ółowoJava 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ółowoZaawansowany 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ółowoProgramowanie 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ółowoDokument 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