Obiektowe bazy danych

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

Download "Obiektowe bazy danych"

Transkrypt

1 Obiektowe bazy danych Wykład prowadzi: Tomasz Koszlajda Plan wykładu Model ODMG Język ODL Język ODL Język OQL Integracja obiektowej bazy danych z obiektowymi językami programowania Przykład obiektowej bazy danych - db4o 1

2 Model ODMG Standard ODMG składa się z czterech podstawowych części: Opis modelu obiektowego ODL -język definicji schematu obiektowej bazy danych OQL - obiektowy język zapytań wzorowany na SQL OML rozszerzenia obiektowych języków programowania: C++, Smalltalk i Java, do przetwarzania trwałych obiektów w obiektowych bazach danych Język definicji schematu - ODL Niezależny od obiektowych języków programowania język definiowania funkcjonalności obiektów składowanych w bazie danych. SQL 3 ODL C++ SQL 3 SmallTalk Java 2

3 ODL - Nagłówek klasy class Obraz : Medium, ElementGraficzny { (extent Obrazy key numer_ewidencyjny) ewidencyjny)...} Nazwa klasy: Obraz Lista nadklas: Medium, ElementGraficzny Definicja kolekcji: extent Obrazy Unikalność: key numer_ ewidencyjny y Definicja struktury wystąpień klasy Class Osoba { attribute Date data_ urodzenia; attribute enum Płeć (K, M) płeć; attribute struct Adres ( String miasto; String ulica; Int numer_domu;) adres; } class Firma ( attribute Osoba::Adres adres; } 3

4 Złożone struktury danych Collection<t> Set<t> Dictionary<t,v> Bag<t> List<t> Array<t> attribute set<string> języki_obce; attribute list<struct Adres (...)> adresy; attribute Osoba małżonek; Związki między danymi Osoba {persistence} +imię i : String +nazwisko : String +adres : Adres jest _ autorem [1..*] [1..*] Obraz {persistence} #utworzony : Date #elementy[1..*] : Figura +dodaj(figura) +utwórzkopię() jest_pierwowzorem [0..1] [0..*] relationship set<osoba> autorzy inverse Osoba::utworzył; relationship set<obraz> jestpierwowzorem inverse Obraz::jestModyfikacją; relationship set<obraz> jestmodyfikacją inverse Obraz:: jestpierwowzorem; typ związku nazwa związku związek odwrotny 4

5 Związki n-arne Brak związków n-arnych Brak atrybutów związków Modelowanie związków n-arnych lub atrybutów związków wymaga dodatkowej klasy - związku Pracownik {persistence} +nazwisko : String +etat : String +płaca : Float uczestniczy Uczestnictwo {persistence} +stawka : Float grupuje [0..*] [1..*] jestobsadzona [0..*] Funkcja {persistence} +nazwa : String +obowiązki : String Projekt {persistence} +nazwa : String +Budżet : Loat Transformacja związków n-arnych class Pracownik {... relationship set<uczestnictwo> uczestniczy inverse Uczestnictwo::uczestniczący;}; class Projekt {... relationship set<uczestnictwo> grupuje inverse Uczestnictwo::grupujący;}; class Funkcja {... relationship set<uczestnictwo> jestobsadzona inverse Uczestnictwo::obsadzona;}; class Uczestnictwo { //dodatkowa klasa związku attribute Float stawka; relationship Pracownik uczestniczący inverse Pracownik::uczestniczy; relationship Projekt grupujący inverse Projekt::grupuje; relationship Funkcja obsadzona inverse Funkcja::jestObsadzona;}; 5

6 Metody klasy Definicja klasy może zawierać nagłówki metod. Kody metod nie są częścią definicji klas. Nagłówek metody obejmuje: Typ zwrotny metody Nazwę metody Tryby (in, out, in out) i typy parametrów metody Wyjątki zgłaszane przez metodę void dodaj (in Figura fig) raises (NiewłaściwaFigura); Obraz utwórzkopię( ) raises (ZaDużoKopii); Kompletny przykład definicji klasy class Obraz { definicja klasy (extent Obrazy) definicja rozszerzenia attribute Date utworzony; część attribute set<figura> Elementy; } strukturalna relationship set<osoba> autorzy inverse Osoba::utworzył; } relationship set<obraz> jestpierwowzorem inverse Obraz::jestModyfikacją; relationship set<obraz> jestmodyfikacją inverse Obraz:: jestpierwowzorem; void dodaj (in Figura fig) związki } raises (NiewłaściwaFigura); część Obraz utwórzkopię( ) funkcjonalna raises (ZaDużoKopii); }; 6

7 Język OQL Deklaratywny język zapytań wzorowany na standardzie SQL92 Zgodny z modelem obiektów ODMG Występuje w wersji języka ad-hoc lub zagnieżdżanego w językach obiektowych Obejmuje tylko instrukcje zapytań Typy set<struct> i bag<struct> są równoważne relacjom select struct(liczba: count(*)) from f in Figury Rozszerzenie klasy where f.powierzchnia() > 100 Struktura wyników zapytań Wynikiem zapytań w języku OQL mogą być kolekcje dowolnie złożonych struktur danych select struct(t: w.typ, zw: ( select struct (wx: wr.x, wy: wr.y) from wr in wierzchołki) from w in Wielokąty Wynikiem zapytania jest wielozbiór danych o strukturze: struct<t:string,zw:bag<wx:float,wy:float>> Typ wielokąta Współrzędne wierzchołków wielokąta 7

8 Wyrażenia ścieżkowe Wyrażenia ścieżkowe umożliwiają nawigację wzdłuż powiązań między obiektami, w głąb struktur atrybutów złożonych lub wyników metod. x.a wartość atrybutu a x.r obiekt wskazywany przez związek r x.m wartość zwracana w wyniku wykonania metody m select struct(x1: o.w1.x, x2: o.w2.x) from o in Odcinki Ścieżka: o. W1. X Odcinki Punkty wierzchołki odcinków Float współrzędne punktu Wyrażenia ścieżkowe Wyrażenia ścieżkowe (za wyjątkiem ostatniego elementu ścieżki) mogą obejmować jedynie związki jednokrotne, atrybuty y jednowartościowe i metody zwracające pojedynczą wartość. select p.szef.adres.miasto.nazwa from p in Pracownicy OK select p.podwładni.adres.miasto.nazwa from p in Pracownicy Wartością jest zbiór pracowników. Atrybut adres nie jest cechą zbioru. 8

9 Przetwarzanie kolekcji obiektów Miejscem do przetwarzania kolekcji obiektów jest klauzula FROM. Elementy klauzuli FROM mają postać: zmienna IN kolekcja Kolekcja może być rozszerzeniem klasy lub wyrażeniem, którego wartością jest kolekcja, na przykład wyrażeniem ścieżkowym: podwł IN Pracownicy.podwładni Typy kolekcji: wielozbiór (bag) - domyślna zbiór - DISTINCT w klauzuli SELECT lista - klauzula ORDER BY Operacje połączenia Model ODMG obejmuje dwa rodzaje łączenia kolekcji obiektów Strukturalne - przez jawne związki miedzy obiektami i select struct(n: os.nazwisko,d: obr.utworzony) from os in Osoby, obr in os.utworzyła Dynamiczne - przez zależności między wartościami atrybutów obiektów select struct(n1: o1.nazwisko,n2: o2.nazwisko) from o1 in Osoby, o2 in Osoby where o1.adres.miasto = o2.adres.miasto and o1!= o2 9

10 Wywoływanie metod Język OQL pozwala na wywoływanie metod, wymagając jedynie zgodności typu danych wynikowych metody z typem oczekiwanym przez zapytanie. Składnia zapytań pozwala nie rozróżniać nazw atrybutów od metod bezargumentowych. Metoda bezparametrowa select o.najstarsze_dziecko.adres.ulica adres from Osoby o where o.mieszka_w("poznań") Metoda z parametrem Polimorfizm i dynamiczne wiązanie Język OQL pozwala wykonywać zapytania na polimorficz- nych kolekcjach k obiektów. Dla tej klasy zapytań jest dostępne dynamiczne wiązanie nazw metod obiektów. select f.powierzchnia() from f in Figury zmienna polimorficzna wielokąt::powierzchnia( ) koło::powierzchnia( () dynamiczne wiązanie 10

11 Wymuszenie zmiany typu Struktura o jednym atrybucie może być przekształcona w pojedynczą wartość. struct(pracownik:nazwisko) -> nazwisko Kolekcja o jednym elemencie może być przekształcona w ten element. element(set(1)) -> 1 Integracja języków obiektowych z OODB Potencjalne rozwiązania: Rozszerzenie proceduralnego języka obiektowego o nowe cechy konieczność stosowania prekompilatorów Modyfikacja kodu wynikowego generowanego przez klasyczne kompilatory zastosowanie post- kompilatorów Rozszerzenie biblioteki o wyspecjalizowane systemowe klasy generyczne 11

12 ODMG - C++ jako język bazy danych Założenia do implementacji rozszerzeń języka C++ jako języka dostępu do bazy danych: Jeden spójny system typów danych w języku programowania i języku dostępu do bazy danych. Wystąpienia typów mogą być ulotne lub trwałe. Specyficzne konstrukcje ODL/OML uwzględniają składnię i semantykę bazowego języka programowania. Rozwiązanie: Zamiast zastosowania pre- lub post-kompilatorów, wykorzystanie mechanizmu klas generycznych (wzorców). C++ jako język bazy danych Deklaracje ODL Kod C++ z OML Preprocesor deklaracji Nagłówki C++ Kompilator C++ Kod wynikowy Metadane Baza danych ODBMS Runtime trwałe obiekty Linker Aplikacja 12

13 ODMG - C++ jako język bazy danych Klasy obiektów potencjalnie trwałych są wywodzone z systemowej klasy d_object. Jej funkcjonalność obejmuje konstruktory i destruktor obiektów trwałych oraz specjalne metody do aktywacji i deaktywacji obiektów. Obiekty trwałe muszą być tworzone dynamicznie i przypisywane specjalnym wskaźnikom, zdefiniowanym w oparciu o wystąpienie klasy wzorca d_ref<t>. Cykl życia obiektu Baza danych PAO deactivate activate deactivate activate Aplikacja PAO C++ jako język bazy danych - przykład // definicja klasy obiektów potencjalnie trwałych class Wykładowca : public d_object {...}; // tworzenie obiektu ulotnego Wykładowca prof = new Wykładowca(); // wskaźnik obiektu trwałego d_ref<wykładowca> tprof; // tworzenie obiektu trwałego tprof = new Wykładowca(myDB, "Wykładowca"); tprof->przypiszdyplomanta(studentnowak);... tprof.delete_object(); 13

14 ODMG Kolekcje obiektów w C++ Kolekcje są zaimplementowane jako wystąpienia klas wzorców. // wzorzec kolekcji - zbiór template<class T> class d_set : public d_collection<t> {...}; class Student : public d_object {...}; // trwała kolekcja trwałych wystąpień klasy Student d_ref<d_set<d_ref<student>>> TPD; <d_set<string>> języki_obce; d_ref<student> d t> nowak; // dodanie elementu do zbioru TPD>insert_element(nowak); TPD+=SKiSR; języki_obce->insert_element("angielski"); Powiązania obiektów w C++ Związki o krotności 1: template<class T, const char* m) class d_rel_ref : public dref<t> {...}; Związki o krotności N: template<class T, const char* m) class d_rel_set : public d_set<dref<t>> {...}; class Pracownik {... d_ Rel_ dref<wydział,"zatrudnia"> pracuje _ na; }; class Wydział {... d_rel_set<pracownik,"pracuje_na"> zatrudnia; }; 14

15 ODMG Powiązania obiektów w C++ // zdefiniowane obiekty Nowak, Tarzan, marketing // utworzenie dwukierunkowego związkuą Nowak->pracuje_na = &marketing; // usunięcie dwukierunkowego związku Nowak->pracuje_na.clear(); // dodania powiązania dla związku wielokrotnego marketing->zatrudnia.insert_element(&tarzan); // zamiana powiązania w związku wielokrotnym marketing->zatrudnia.replace_element(&nowak, &Tarzan); // usunięcie powiązania ze związku wielokrotnego marketing->zatrudnia.remove_element(&nowak); Przykład obiektowej bazy danych db4o Projekt Open Source Uproszczenie architektury systemu bazy danych Dostępne różne architektury aplikacji Różne języki dostępu: QBE, SODA, Native Query Language Skalowalność Wielo platformowość Java,.Net, VBA Wydajność dla zapytań specyficznych dla obiektowych baz danych 15

16 Prostota budowy aplikacji // zdefiniowanie klasy public class Pracownik { public Pracownik(String nazwisko, String etat, float placa)...} // otworzenie bazy danych String bd = "BazaDanych"; ObjectContainer db = Db4o.openFile(bd); Pracownik p=new Pracownik("Tarzan","Prezes",25000); // składowanie a obiektu w bazie danych db.set(p); // zamknięcie bazy danych db.close(); Klasa: Object Container Klasa object Container reprezentuje system bazy danych Obsługuje ona dostęp do lokalnego, prywatnego pliku danych Wspiera transakcyjne przetwarzanie danych Zarządza referencjami do obiektów przechowywyanych w bazie danych Zapewnia wydajne przetwarzanie danych w bazie danych 16

17 Schemat bazy danych Definicje klas w aplikacji = schemat bazy danych // zdefiniowanie klasy public class Pracownik { public Pracownik(String nazwisko, String etat, float placa)}... Pracownik p=new Pracownik("Tarzan","Prezes",25000); // Jeżeli jest to pierwszy obiekt klasy Pracownik // składowany w bazie danych, do schematu bazy danych // dodawana jest definicja klasy Pracownik db.set(p); Hierarchia rozszerzeń klas Wystąpienia podklas tworzą podzbiór wystąpienia nadklas class Kierownik extends Pracownik {...} Kierownik k = new Kierownik("Kowalski", ); db.set(k);... // Kowalski będzie umieszczony w wyniku zapytania ObjectSet wynik = db.get(pracownik.class); 17

18 Języki zapytań w db4o System bazy danych db4o oferuje trzy różne języki zapytań: QBE Query By Example SODA Simple Object Database Access NativeQuery Preferowane własności języków zapytań: 1. Czyste języki obiektowe 2. Statyczna weryfikacja typów danych 3. Jednorodność języka aplikacji 4. Systemowa optymalizacja zapytań Język zapytań QBE Prosty język zapytań QBE Query by Example Wymaga utworzenia obiektu, który będzie wzorcem dla zapytania // wyszukiwanie obiektów - QBE Pracownik p=new Pracownik(null,"Prezes",0.0f); // nie można pytać o wartości: null, 0, ObjectSet wynik = db.get(p); // obiektem wzorcowym może być klasa wynik = db.get(pracownik.class); Nie umożliwia definiowania złożonych warunków zapytań: AND, OR, NOT. Konstruktor obiektu musi umożliwić tworzenie obiektu bez zainicjowanych atrybutów : null, "". 18

19 Język zapytań SODA Simple Object Database Access Język SODA umożliwia definiowanie złożonych zapytań w postaci drzew, których węzłami są warunki selekcji. Funkcjonalność języka zapytań jest zaimplementowana w trzech klasach: Constraint, Constraints i Query Funkcjonalność klasy Constraint obejmuje następujące operacje: and (Constraint) like ( ) constains ( ) not ( ) equal ( ) or (Constraint) greater ( ) smaller ( ) identity ( ) Język zapytań SODA Simple Object Database Access Query query=db.query(); // określenie klasy zapytania query.constrain(pracownik.class); // określenie warunku prostego Constraint warunek = query.descend("placa").constrain(5000).greater(); // określenie drugiego warunku prostego // i złożenie warunków query.descend("etat").constrain("prezes").or(warunek); // wykonanie zapytania ObjectSet wynik=query.execute(); execute(); System.out.println(wynik.size()); while(wynik.hasnext()) { Pracownik znaleziony = (Pracownik) wynik.next(); System.out.println(znaleziony); } 19

20 Język zapytań SODA drzewo zapytania Query query=db.query(); query.constrain(pracownik.class); query.descend ("placa").constrain(5000).greater().or (descend("etat").constrain("prezes")) "płaca" OR Klasa: Pracownik.class "etat" greater: 5000 "Prezes" Języki zapytań w obiektowych bazach danych OQL String oql = "select * from o in Osoby where p.wiek < 20"; OQLQuery query = new OQLQuery(oql); Object osoba = query.execute(); JDOQL Query query = persistencemanager.newquery(osoba.class, wiek < 20"); Collection osoby = (Collection)query.execute(); db4o SODA C# Query query = database.query(); query.constrain(typeof(osoba)); query.descend( wiek").constrain(20).smaller(); IList osoby = query.execute(); 20

21 Języki zapytań w obiektowych bazach danych Brak syntaktycznej i semantycznej weryfikacji zapytań Wymagany dostęp do prywatnych atrybutów klas Brak wsparcia dla refaktoryzacji Brak wsparcia dla wielokrotnego użytku: wywoływania metod, polimorfizmu, redefinicji Nieodporność na ataki typu wstrzykiwanie kodu Java Osoba.wiek() < 20 Brak systemowej optymalizacji zapytań dla dużych zbiorów danych Brak skalowalności Założenia języka zapytań NativeQuery W Java JDK 5 wymaga zdefiniowania klasy dziedziczącej po generycznej klasie Predicate i zaimplementowaniu w niej abstrakcyjnej metody Match. class Prezesi<T> extends Predicate<T> { float min, max; Prezesi(float n, float x) { min = n; max = x;} public boolean match(pracownik prac) { // klasa obiektów return prac.etat().equals("prezes") (prac.placa() > min && prac.placa() < max);}; } }; Prezesi pred = new Prezesi (10000, 25000); ObjectSet sp=db.query(pred); 21

22 Język zapytań NativeQuery Konwencja zapytania ad-hoc ObjectSet sp=db.query(new Predicate<Pracownik>() // dziedziczenie i redefinicja metody match { public boolean match(pracownik prac) { return prac.weznazwisko().equals("tarzan") (prac.placa() > 4500 && prac.placa() < 10000);}; } ); Definicja anonimowej klasy dziedziczącej po klasie Predicate Język zapytań NativeQuery Wyrażenia ścieżkowe w NativeQuery ObjectSet sp=db.query(new Predicate<Pracownik>() // dziedziczenie i redefinicja metody match { public boolean match(pracownik prac) { return prac.zespol().nazwa().equals( Zarząd"); } ); 22

23 Język zapytań NativeQuery C# Zastosowanie typu danych delegate ObjectSet sp=db.query<pracownik> ( delegate Pracownik p) // definicja operacji uruchamianej jako delegate p { return prac.weznazwisko().equals("tarzan") (prac.placa() > 4500 && prac.placa() < 10000); } ); Usuwanie i modyfikacja obiektów Pracownik p=new Pracownik(null,null, ); ObjectSet wynik = db.get(p); while(wynik.hasnext()) hasnext()) { Pracownik prac=(pracownik)wynik.next(); // usunięcie db.delete(prac); }... while(wynik.hasnext()) { kopia obiektu Pracownik prac=(pracownik)wynik.next(); // modyfikacja obiektu na podstawie jego OID prac.podniesplace(1500); db.set(prac); // uspójnienie kopii z oryginałem } 23

24 Powiązania między danymi System db4o respektuje związki między obiektami zdefiniowanymi w aplikacji public class Pracownik {... private Pracownik szef; private Set<Pracownik> podwladni; public Pracownik(String nazwisko,string etat){ this.podwladni= new HashSet<Pracownik>(); } public void dodajpodwladnego(pracownik pod) { this.podwladni.add(pod); }} Składowanie złożonych obiektów Metoda set gwarantuje niejawne zapisanie do bazy danych wszystkich powiązanych ą obiektów Pracownik p=new Pracownik("Tarzan","Prezes",25000); Zespol z=new Zespol("Zarząd"); // Przypisanie pracownikowi zespołu p.przypisz_zespol(z); // Składowanie obiektów w bazie danych db.set(p); // W bazie danych znajdą się wszystkie // powiązane obiekty 24

25 Odczyt powiązanych obiektów Odczyt z bazy danych obiektu, który ma powiązania ą z innymi obiektami powoduje automatyczny odczyt powiązanych obiektów, dla ich natychmiastowego użycia Kaskadowe usuwanie obiektów złożonych Usunięcie z bazy danych obiektu, który ma powiązania z innymi obiektami może wymagać usunięcia tych obiektów semantyka związku kompozycji W tym celu, należy wykonać na klasie obiektu złożonego metodę cascadeondelete( ) Głębokość kaskadowego usuwania może być konfigurowana za pomocą metody: set(object, depth) 25

26 Transakcyjność db4o Przetwarzanie danych w db4o ma charakter transakcyjny. Niejawnym rozpoczęciem transakcji jest otwarcie bazy danych. Niejawnym zakończeniem jest zamknięcia bazy danych. Funkcjonalność bazy danych obejmuje jawne zatwierdzanie i wycofywanie transakcji. String bd = "BazaDanych"; ObjectContainer db = Db4o.openFile(bd); Pracownik p=new Pracownik("Tarzan","Prezes",25000); "Prezes" // składowanie obiektu w bazie danych db.set(p); // wycofanie transakcji db.rollback(); Architektura systemu db4o 26

27 Architektura aplikacji db4o Pojedyncza aplikacja zintegrowana z plikiem danych Aplikacja db4o Plik danych // otworzenie bazy danych String bd = "BazaDanych"; ObjectContainer db = Db4o.openFile(bd); Pracownik p=new Pracownik("Tarzan","Prezes"); // niejawne zdefiniowanie schematu i // składowanie obiektu w bazie danych db.set(p); // zamknięcie bazy danych db.close(); Architektura aplikacji db4o Lokalny serwer bazy danych Aplikacja db4o Serwer db4o Baza danych String bd = "BazaDanych"; ObjectServer server = Db4o.openServer(db,0); // port = 0, serwer lokalny try { // otwarcie klienta ObjectContainer client=server.openclient();... client.close(); } finally { server.close(); } 27

28 Architektura aplikacji db4o Architektura klient - serwer Aplikacja db4o sieć Serwer db4o Baza danych String bd = "BazaDanych"; // port <> 0, serwer zdalny ObjectServer server=db4o.openserver(db,1521); server.grantaccess("user","password"); // otwarcie klienta ObjectContainer client=server.openclient( "localhost",port,user,password );... client.close(); server.close(); Wydajność Benchmark OO7 Benchmark Pole Position Barcelona circuit Barcelona circuit 100 zapytań na obiektów o 5 poziomach dziedziczenia 28

29 Producenci OODBS db4objects Objectivity/DB it Progress ObjectStore Enterprise Versant Object Database, FastObject.Net GemStone/S, Gemstone Facets EyeDB GNU Open Source 29

Obiektowe bazy danych

Obiektowe bazy danych Obiektowe bazy Obiektowy model Wykład prowadzi: Tomasz Koszlajda Plan wykładu Przesłanki dla nowej generacji systemów baz Podstawowe elementy obiektowego modelu Konstruktory złożonych typów Abstrakcyjne

Bardziej szczegółowo

Obiektowe bazy danych Obiektowe i obiektowo-relacyjne bazy danych

Obiektowe bazy danych Obiektowe i obiektowo-relacyjne bazy danych Obiektowe bazy danych Obiektowe i obiektowo-relacyjne bazy danych Wykład prowadzi: Tomasz Koszlajda Obiektowe bazy danych Obiektowe i obiektowo-relacyjne bazy danych W ramach niniejszego wykładu zostaną

Bardziej szczegółowo

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca 2009. Norbert Potocki db4o

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca 2009. Norbert Potocki db4o Wprowadzenie - podstawy - technikalia Przydatne wiadomości Wprowadzenie 1 czerwca 2009 Wprowadzenie - podstawy - technikalia Przydatne wiadomości Wprowadzenie = bjects = database for objects w pełni obiektowa

Bardziej szczegółowo

Post-relacyjne bazy danych

Post-relacyjne bazy danych Post-relacyjne bazy danych Historia języka SQL 1. Sequel-XRM 2. Sequel/2 SQL 3. ANSI SQL 1986 (ISO 1987) 4. X/Open (UNIX), SAA(IBM) 5. ANSI SQL 1989 6. ANSI/ISO SQL 92 Entry level 7. ANSI SQL 92 (SQL 2)

Bardziej szczegółowo

Obiektowe bazy danych

Obiektowe bazy danych Obiektowe bazy danych Obiektowo-relacyjne bazy danych Wykład prowadzi: Tomasz Koszlajda Obiektowo-relacyjne bazy danych Ewolucja rozszerzeń relacyjnego modelu danych: Składowanie kodu procedur w bazie

Bardziej szczegółowo

Obiektowe bazy danych

Obiektowe bazy danych Obiektowe bazy danych Obiektowy model danych Wykład prowadzi: Tomasz Koszlajda Obiektowe bazy danych Obiektowy model danych Tematyka obiektowych baz danych obejmuje trzy jednostki wykładowe. Pierwszy wykład

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

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 13 Marcin Młotkowski 27 maja 2015 Plan wykładu Trwałość obiektów 1 Trwałość obiektów 2 Marcin Młotkowski Programowanie obiektowe 2 / 29 Trwałość (persistence) Definicja Cecha

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

Obiektowe i obiektowo-relacyjne. bazy danych

Obiektowe i obiektowo-relacyjne. bazy danych Obiektowe i obiektowo-relacyjne bazy danych Plan wykładu 1. ODBMS 2. ORDBMS 3. SQL3 Typy 4. Źródła ODBMS Obiektowy system zarządzania baza danych jest systemem opartym na modelu obiektowym wspomagającym

Bardziej szczegółowo

SBQL. język zapytań dla obiektowych baz danych. Kamil Adamczyk. Uniwersytet Warszawski 20.IV.2009

SBQL. język zapytań dla obiektowych baz danych. Kamil Adamczyk. Uniwersytet Warszawski 20.IV.2009 SBQL język zapytań dla obiektowych baz danych Kamil Adamczyk Uniwersytet Warszawski 20.IV.2009 Spis treści 1. Wstęp 2. Obiektowe bazy danych Model danych Języki zapytań Dostępne produkty 3. Sbql Główne

Bardziej szczegółowo

Programowanie obiektowe - 1.

Programowanie obiektowe - 1. Programowanie obiektowe - 1 Mariusz.Masewicz@cs.put.poznan.pl Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która

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

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

BAZY DANYCH model obiektowy. Opracował: dr inż. Piotr Suchomski

BAZY DANYCH model obiektowy. Opracował: dr inż. Piotr Suchomski BAZY DANYCH model obiektowy Opracował: dr inż. Piotr Suchomski Wprowadzenie Relacyjny model danych jest zbyt płaski i prosty do reprezentacji danych o bardziej skomplikowanej i nieregularnej strukturze

Bardziej szczegółowo

Programowanie obiektowe

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

Bardziej szczegółowo

Paweł Kurzawa, Delfina Kongo

Paweł Kurzawa, Delfina Kongo Paweł Kurzawa, Delfina Kongo Pierwsze prace nad standaryzacją Obiektowych baz danych zaczęły się w roku 1991. Stworzona została grupa do prac nad standardem, została ona nazwana Object Database Management

Bardziej szczegółowo

Metody dostępu do danych

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

Bardziej szczegółowo

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

Platformy Programistyczne Podstawy języka Java

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

Bardziej szczegółowo

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

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

Bardziej szczegółowo

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

Programowanie obiektowe

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

Bardziej szczegółowo

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

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

TEMAT : KLASY DZIEDZICZENIE

TEMAT : KLASY DZIEDZICZENIE TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą

Bardziej szczegółowo

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut. Dziedziczenie Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasy Student oraz Pracownik: class Student class Pracownik

Bardziej szczegółowo

Szablony klas, zastosowanie szablonów w programach

Szablony klas, zastosowanie szablonów w programach Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do

Bardziej szczegółowo

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Spis treści Wprowadzenie Automatyczne ładowanie klas Składowe klasy, widoczność składowych Konstruktory i tworzenie obiektów Destruktory i

Bardziej szczegółowo

Dziedziczenie. Tomasz Borzyszkowski

Dziedziczenie. Tomasz Borzyszkowski Dziedziczenie Tomasz Borzyszkowski Podstawy Zobacz: Dziedzictwo1.java Dziedzictwo2.java Dziedziczenie jest jedną z podstawowych cech OOP ponieważ umożliwia łatwe implementowanie klasyfikacji hierarchicznych.

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

Programowanie obiektowe. Wprowadzenie

Programowanie obiektowe. Wprowadzenie 1 Programowanie obiektowe Wprowadzenie 2 Programowanie obiektowe Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Wykład 2 28 lutego 2019 Plan wykładu 1 2 3 4 5 Plan wykładu 1 2 3 4 5 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie; standardy ISO i ECMA; podobny składniowo do C++; Język C Krótka

Bardziej szczegółowo

Programowanie obiektowe

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Technologie i usługi internetowe cz. 2

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

Bardziej szczegółowo

public - może być używana w kodzie poza klasą, jedna klasa ModyfikatorKlasy może być kombinacją wyrażeń:

public - może być używana w kodzie poza klasą, jedna klasa ModyfikatorKlasy może być kombinacją wyrażeń: Klasy Metody [ModyfikatorMetody] TypZwrotny Nazwa (Typ arg1, ) { // implementacja metody ModyfikatorMetody może być kombinacją wyrażeń: modyfikator widzialności public dostępna dla metod spoza klasy protected

Bardziej szczegółowo

Podstawy programowania obiektowego

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

Modelowanie obiektowe

Modelowanie obiektowe Modelowanie obiektowe ZPO 2018/2019 Dr inż. W. Cichalewski Materiały wykonane przez W. Tylman Diagramy klas Diagramy klas Zawiera informacje o statycznych związkach między elementami (klasami) Są ściśle

Bardziej szczegółowo

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4 Utrwalanie danych zastosowanie obiektowego modelu danych warstwy biznesowej do generowania schematu relacyjnej bazy danych Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4 1. Relacyjne

Bardziej szczegółowo

Polimorfizm, metody wirtualne i klasy abstrakcyjne

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

Bardziej szczegółowo

Dokumentacja do API Javy.

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

Bardziej szczegółowo

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

Programowanie obiektowe

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

Bardziej szczegółowo

Baza danych sql. 1. Wprowadzenie

Baza danych sql. 1. Wprowadzenie Baza danych sql 1. Wprowadzenie Do tej pory operowaliście na listach. W tej instrukcji pokazane zostanie jak stworzyć bazę danych. W zadaniu skorzystamy z edytora graficznego struktury bazy danych, który

Bardziej szczegółowo

Programowanie współbieżne i rozproszone

Programowanie współbieżne i rozproszone Programowanie współbieżne i rozproszone WYKŁAD 11 dr inż. CORBA CORBA (Common Object Request Broker Architecture) standard programowania rozproszonego zaproponowany przez OMG (Object Management Group)

Bardziej szczegółowo

Materiały do zajęć VII

Materiały do zajęć VII Spis treści I. Klasy Materiały do zajęć VII II. III. Konstruktor Właściwości i indeksatory Klasy Programowanie obiektowe wiadomości wstępne Paradygmat programowania obiektowego Abstrakcja Hermetyzacja

Bardziej szczegółowo

Zaawansowane programowanie w języku C++ Klasy w C++

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

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

> C++ dziedziczenie. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

> C++ dziedziczenie. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki > C++ dziedziczenie Dane: Iwona Polak iwona.polak@us.edu.pl Uniwersytet Śląski Instytut Informatyki 1432108800 > Dziedziczenie Dziedziczenie C++ dziedziczenie 2 / 13 > Dziedziczenie Dziedziczenie * to

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory.

Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory. Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory. Konstruktory Konstruktory w językach obiektowych są to specjalne metody wywoływane podczas tworzenia nowego obiektu i służące do

Bardziej szczegółowo

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie w C++ (PCP) Zaawansowane programowanie w C++ (PCP) Wykład 3 - polimorfizm. dr inż. Robert Nowak - p. 1/14 Powtórzenie Powtórzenie: klasy autonomiczne: konstruktor, konstruktor kopiujacy, operator przypisania, destruktor

Bardziej szczegółowo

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie w C++ (PCP) Zaawansowane programowanie w C++ (PCP) Wykład 4 - wzorce projektowe. dr inż. Robert Nowak - p. 1/18 Powtórzenie klasy autonomiczne tworzenie nowych typów: dziedziczenie i agregacja dziedziczenie: przedefiniowywanie

Bardziej szczegółowo

Obiektowość BD Powtórka Czas odpowiedzi. Bazy Danych i Systemy informacyjne Wykład 14. Piotr Syga

Obiektowość BD Powtórka Czas odpowiedzi. Bazy Danych i Systemy informacyjne Wykład 14. Piotr Syga Bazy Danych i Systemy informacyjne Wykład 14 Piotr Syga 18.01.2019 Motywacja Ograniczenia relacyjnych baz danych proste typu i struktury klucze (w tym sztuczne) relacje między tabelami uwzględniane w triggerach

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

JAVA 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

Wstęp do programowania obiektowego. Wykład 2

Wstęp do programowania obiektowego. Wykład 2 Wstęp do programowania obiektowego Wykład 2 1 CECHY I KONCEPCJA PROGRAMOWANIA OBIEKTOWEGO 2 Cechy programowania obiektowego Dla wielu problemów podejście obiektowe jest zgodne z rzeczywistością (łatwe

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Język C++ Programowanie obiektowe

Język C++ Programowanie obiektowe Język C++ Programowanie obiektowe Cechy programowania obiektowego abstrakcyjne typy danych hermetyczność obiektów (kapsułkowanie) dziedziczenie polimorfizm Programowanie proceduralne vs. programowanie

Bardziej szczegółowo

Programowanie w Ruby

Programowanie w Ruby Programowanie w Ruby Wykład 6 Marcin Młotkowski 14 listopada 2012 Plan wykładu Trwałość obiektów Bazy danych DBM Bazy danych SQL Active records Szeregowanie obiektów Obiekt Serializacja @tytul = 'Pan Tadeusz'

Bardziej szczegółowo

Oracle11g: Wprowadzenie do SQL

Oracle11g: Wprowadzenie do SQL Oracle11g: Wprowadzenie do SQL OPIS: Kurs ten oferuje uczestnikom wprowadzenie do technologii bazy Oracle11g, koncepcji bazy relacyjnej i efektywnego języka programowania o nazwie SQL. Kurs dostarczy twórcom

Bardziej szczegółowo

Polimorfizm. dr Jarosław Skaruz

Polimorfizm. dr Jarosław Skaruz Polimorfizm dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com O czym będzie? finalne składowe klasy abstrakcyjne interfejsy polimorfizm Finalne składowe Domyślnie wszystkie pola i metody

Bardziej szczegółowo

Temat : SBQL 1 obiektowy język zapytań.

Temat : SBQL 1 obiektowy język zapytań. Laboratorium Języki i środowiska przetwarzania danych rozproszonych Temat : SBQL 1 obiektowy język zapytań. Historia zmian Data Wersja Autor Opis zmian 23.4.2012 1.0 Tomasz Kowalski Utworzenie dokumentu

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Wykład 12 Marcin Młotkowski 16 maja 2018 Plan wykładu 1 Analiza obiektowa Dziedziczenie Dziedziczenie a składanie 2 Marcin Młotkowski 482 / 537 Dziedziczenie Dziedziczenie a składanie Plan wykładu 1 Analiza

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

Pakiety i interfejsy. Tomasz Borzyszkowski

Pakiety i interfejsy. Tomasz Borzyszkowski Pakiety i interfejsy Tomasz Borzyszkowski Pakiety podstawy W dotychczasowych przykładach nazwy klas musiały pochodzić z jednej przestrzeni nazw, tj. być niepowtarzalne tak, by nie doprowadzić do kolizji

Bardziej szczegółowo

Klasy abstrakcyjne, interfejsy i polimorfizm

Klasy abstrakcyjne, interfejsy i polimorfizm Programowanie obiektowe 12 kwietnia 2011 Organizacyjne Klasówka będzie 20 IV 2011. Sale jeszcze są pertraktowane. Materiał do wyjątków włącznie. Można mieć swoje materiały nieelektroniczne. Wywołanie z

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba. Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 8 Wprowadzenie Definiowanie typu obiektowego Porównywanie obiektów Tabele z obiektami Operacje DML na obiektach Dziedziczenie -

Bardziej szczegółowo

Aplikacje w środowisku Java

Aplikacje w środowisku Java Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - dziedziczenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 W ramach poprzedniego laboratorium

Bardziej szczegółowo

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? 1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? a) konstruktor b) referencje c) destruktor d) typy 2. Które z poniższych wyrażeń są poprawne dla klasy o nazwie

Bardziej szczegółowo

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Cel zajęć. Celem zajęć jest zapoznanie się ze sposobem działania popularnych kolekcji. Wprowadzenie teoretyczne. Rozważana w ramach niniejszych

Bardziej szczegółowo

MAS dr. Inż. Mariusz Trzaska. Realizacja różnych modeli dziedziczenia w obiektowych językach programowania

MAS dr. Inż. Mariusz Trzaska. Realizacja różnych modeli dziedziczenia w obiektowych językach programowania MAS dr. Inż. Mariusz Trzaska Wykład 10 Realizacja różnych modeli dziedziczenia w obiektowych językach programowania Zagadnienia o o o o o o Omówienie różnych rodzajów dziedziczenia, klas abstrakcyjnych

Bardziej szczegółowo

Modelowanie i Programowanie Obiektowe

Modelowanie i Programowanie Obiektowe Modelowanie i Programowanie Obiektowe Wykład I: Wstęp 20 październik 2012 Programowanie obiektowe Metodyka wytwarzania oprogramowania Metodyka Metodyka ustandaryzowane dla wybranego obszaru podejście do

Bardziej szczegółowo

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne Baza danych sql 1. Wprowadzenie Do tej pory operowaliście na listach. W tej instrukcji pokazane zostanie jak stworzyć bazę danych. W zadaniu skorzystamy z możliwości utworzenia struktury bazy danych z

Bardziej szczegółowo

Systemy GIS Tworzenie zapytań w bazach danych

Systemy GIS Tworzenie zapytań w bazach danych Systemy GIS Tworzenie zapytań w bazach danych Wykład nr 6 Analizy danych w systemach GIS Jak pytać bazę danych, żeby otrzymać sensowną odpowiedź......czyli podstawy języka SQL INSERT, SELECT, DROP, UPDATE

Bardziej szczegółowo

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

Język JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 4, część 1 1 Język JAVA podstawy Plan wykładu: 1. Podstawy modelowania obiektowego 2. Konstruktory 3. Dziedziczenie, związki pomiędzy klasami, UML 4. Polimorfizm 5. Klasy abstrakcyjne

Bardziej szczegółowo

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np Klasy Klasa jest nowym typem danych zdefiniowanym przez użytkownika Wartości takiego typu nazywamy obiektami Najprostsza klasa jest po prostu strukturą, np struct Zespolona { Klasy jako struktury z operacjami

Bardziej szczegółowo

Programowanie w Internecie. Java

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

Bardziej szczegółowo

Multimedia JAVA. Historia

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

MongoDB. wprowadzenie. dr inż. Paweł Boiński, Politechnika Poznańska

MongoDB. wprowadzenie. dr inż. Paweł Boiński, Politechnika Poznańska MongoDB wprowadzenie dr inż. Paweł Boiński, Politechnika Poznańska Plan Historia Podstawowe pojęcia: Dokument Kolekcja Generowanie identyfikatora Model danych Dokumenty zagnieżdżone Dokumenty z referencjami

Bardziej szczegółowo

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18 Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18 Literatura Języki i paradygmaty programowania Wykład 2 1. C. S. Horstman, G. Cornell, core Java 2 Podstawy, Helion 2003

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

Java Język programowania

Java Język programowania Java Język programowania Język Java Bazuje i jest zbliżony do C/C++ Porosty zbiór typów danych (podział na typy prymitywne i obiektowe) Zarządzanie pamięcią i Garbage Collection Zintegrowana synchronizacja

Bardziej szczegółowo

Programowanie wielowarstwowe i komponentowe

Programowanie wielowarstwowe i komponentowe Programowanie wielowarstwowe i komponentowe HIBERNATE CD. Rodzaje relacji Jeden do wielu Pojedyncza Osoba ma wiele Wpisów Wiele do jednego Wiele Wpisów należy do jednej Osoby Jeden do jednego Pojedyncza

Bardziej szczegółowo

Informatyka I BAZY DANYCH. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2017

Informatyka I BAZY DANYCH. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2017 Informatyka I BAZY DANYCH dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Plan wykładu Definicja systemu baz danych Modele danych Relacyjne bazy danych Język SQL Hurtownie danych

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych Języki programowania wysokiego poziomu PHP cz.4. Bazy danych PHP i bazy danych PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: MySQL moduł mysql albo jego nowsza wersja mysqli (moduł

Bardziej szczegółowo

Część I Tworzenie baz danych SQL Server na potrzeby przechowywania danych

Część I Tworzenie baz danych SQL Server na potrzeby przechowywania danych Spis treści Wprowadzenie... ix Organizacja ksiąŝki... ix Od czego zacząć?... x Konwencje przyjęte w ksiąŝce... x Wymagania systemowe... xi Przykłady kodu... xii Konfiguracja SQL Server 2005 Express Edition...

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

Szablony funkcji i klas (templates)

Szablony funkcji i klas (templates) Instrukcja laboratoryjna nr 3 Programowanie w języku C 2 (C++ poziom zaawansowany) Szablony funkcji i klas (templates) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp

Bardziej szczegółowo

Abstrakcyjny typ danych

Abstrakcyjny typ danych Abstrakcyjny typ danych Abstrakcyjny Typ Danych (abstract data type-adt): zbiór wartości wraz z powiązanymi z nimi operacjami; operacje są zdefiniowane w sposób niezależny od implementacji; operacje są

Bardziej szczegółowo

Programowanie i projektowanie obiektowe

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

Bardziej szczegółowo