Obiektowe bazy danych

Podobne dokumenty
Obiektowe bazy danych

Obiektowe bazy danych

Obiektowe bazy danych Obiektowe i obiektowo-relacyjne bazy danych

Rozproszone i obiektowe systemy baz danych. Dr inż. Robert Wójcik. Wykład 8. Modele rozproszonych i obiektowych bazy danych

Post-relacyjne bazy danych

Podstawy Programowania Obiektowego

Paweł Kurzawa, Delfina Kongo

Obiektowe bazy danych

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

JAVA W SUPER EXPRESOWEJ PIGUŁCE

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

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

Programowanie obiektowe

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

Dziedziczenie. Tomasz Borzyszkowski

Zasady transformacji modelu DOZ do projektu tabel bazy danych

1 Projektowanie systemu informatycznego

Systemy baz danych w zarządzaniu przedsiębiorstwem. W poszukiwaniu rozwiązania problemu, najbardziej pomocna jest znajomość odpowiedzi

Programowanie obiektowe

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:

PARADYGMATY PROGRAMOWANIA Wykład 4

Polimorfizm, metody wirtualne i klasy abstrakcyjne

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

Modelowanie i Programowanie Obiektowe

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

Programowanie obiektowe

Metody dostępu do danych

Modelowanie danych, projektowanie systemu informatycznego

PODSTAWY BAZ DANYCH. 5. Modelowanie danych. 2009/ Notatki do wykładu "Podstawy baz danych"

Pojęcie bazy danych. Funkcje i możliwości.

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

Wykład 9: Polimorfizm i klasy wirtualne

Programowanie obiektowe - 1.

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

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

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

Obiektowe i obiektowo-relacyjne. bazy danych

Wykład I. Wprowadzenie do baz danych

hierarchie klas i wielodziedziczenie

INFORMATYKA Pytania ogólne na egzamin dyplomowy

Definicja obiektowego modelu danych: struktura i zachowanie

Język C++ Programowanie obiektowe

Technologie i usługi internetowe cz. 2

Zaawansowane programowanie w C++ (PCP)

Diagramy klas. dr Jarosław Skaruz

Języki i techniki programowania Ćwiczenia 3 Dziedziczenie

WYKŁAD 1. Wprowadzenie do problematyki baz danych

Dziedziczenie jednobazowe, poliformizm

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

Programowanie obiektowe

Aplikacje w środowisku Java

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

Język C++ Różnice między C a C++

Bazy Danych. C. J. Date, Wprowadzenie do systemów baz danych, WNT - W-wa, (seria: Klasyka Informatyki), 2000

Technologia informacyjna (IT - Information Technology) dziedzina wiedzy obejmująca:

Wykład 1. Projektowanie efektywnych algorytmów przetwarzania danych w sieciowych systemach usług, rzeczy i multimediów.

Definiowanie własnych klas

Ćwiczenia z Zaawansowanych Systemów Baz Danych

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2015

Programowanie obiektowe

Kurs WWW. Paweł Rajba.

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl

Wykład V. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Technologie baz danych

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

Polimorfizm. dr Jarosław Skaruz

Programowanie obiektowe i zdarzeniowe

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

Projektowanie logiki aplikacji

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Podejście obiektowe - podstawowe pojęcia

Oracle PL/SQL. Paweł Rajba.

Systemy baz danych. mgr inż. Sylwia Glińska

Programowanie i projektowanie obiektowe

Dziedziczenie. dr Jarosław Skaruz

Spis treści. Przedmowa

Informatyka (10) dr inż. Katarzyna Palikowska Katedra Transportu Szynowego i Mostów p. 4 Hydro

Obiektowe bazy danych Implementacja obiektowych baz danych

Programowanie w Internecie. Java

Obiektowe bazy danych Implementacja obiektowych baz danych

Programowanie Obiektowe i C++

Programowanie obiektowe

PODSTAWOWE ZASADY PROGRAMOWANIA OBIEKTOWEGO NA BAZIE PAKIETU ROOT

BAZY DANYCH model związków encji. Opracował: dr inż. Piotr Suchomski

Projektowanie obiektowe. Roman Simiński Polimorfizm

C++ - [4-7] Polimorfizm

Zaawansowane programowanie w języku C++ Programowanie obiektowe

TEMAT : KLASY DZIEDZICZENIE

Dokumentacja do API Javy.

Obiektowe bazy danych

Zaawansowane programowanie w C++ (PCP)

Interfejsy i klasy wewnętrzne

Wstęp do programowania obiektowego. Wykład 1 Algorytmy i paradygmaty Podstawowe pojęcia PO

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

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

Szablony funkcji i klas (templates)

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

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

Temporalne bazy danych

Transkrypt:

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 typy Dziedziczenie Związki między danymi Hierarchie kolekcji obiektów Polimorfizm i późne wiązanie Tożsamość Trwałość Obiektowy model (2) 1

Nowe dziedziny zastosowań baz Systemy wspomagania projektowania CAD/CAM Systemy informacji przestrzennej Multimedialne bazy Charakterystyka nowych dziedzin zastosowań Złożone, hierarchiczne struktury Złożone behawioralne własności Nowe modele przetwarzania: ad hoc dynamiczna struktura transakcji, nawigacja vs. selekcja, kooperujące i intensywnie przetwarzające dane transakcje Nowe technologie budowy aplikacji Języki obiektowe Obiektowy model (3) Przykład złożonej rzeczywistości Obraz #utworzony : Date #elementy[1..*] : Figura +dodaj(figura) +utwórzkopię() :Obraz [1..*] [0..*] utworzyła [1..*] Osoba +imię i : String +nazwisko : String +adres : Adres jest_pierwowzorem [0..1] Odcinek Adres +miasto : String +ulica : String +NrDomu : Integer #Wierzchołki[2] : Punkt +Długość() : Float Wielokąt #Krawędzie[3..*] : Odcinek Punkt +X : Float +Y : Float +przesuń(float,float) Figura {abstract} +typ : String +Powierzchnia() i : Float Koło #środek : Punkt #promień : Float Obiektowy model (4) 2

Ograniczenia relacyjnego modelu Płaskie jednowymiarowe struktury Identyfikacja jedynie za pomocą ich wartości Zamknięty zbiór predefiniowanych typów Brak pojęcia związków między danymi Brak hierarchii typów Figury(id_f PK, typ, powierzchnia) Odcinki(id_odc PK FK(Figury), typ, x1, y1, x2, y2) Wielokąty(id_w PK FK(Figury), typ) Krawędzie(id d_ k PK, x1, y1, x2, y2, id_ w FK(Wielokąty)) Koła(id_k PK FK(Figury), typ, x, y, promień) Obrazy(id_ob PK, utworzony) Osoby(id_os PK, imię, nazwisko, miasto, ulica, numer_domu) Autorstwo(id_ob FK(Obrazy), id_os FK(Osoby)) Modyfikacje(wzorzec FK(Obrazy), modyfikacja FK(Obrazy)) Obiektowy model (5) Przesłanki nowej generacji modelu Potrzeba bogatszego modelu Rozszerzalny model umożliwiający i ścisłe i dopasowanie dla dowolnych dziedzin zastosowań Ściślejsza integracja z obiektowymi aplikacjami bazy Aplikacja Aplikacja Semantyka świata rzeczywistego Prosty model Silny model Semantyka świata rzeczywistego Obiektowy model (6) 3

Podstawowe elementy obiektowego modelu Obiekt: stan i funkcjonalność Cechy obiektów: atrybuty i związki Funkcjonalność obiektu: metody Tożsamość obiektu Hermetyczność obiektów Klasa: typ i moduł programowy Dziedziczenie: współdzielenie implementacji i relacja podtypu Przeciążanie i dynamiczne wiązanie funkcjonalności obiektów Obiektowy model (7) Drogi rozwoju obiektowych baz Obiektowe języki programowania Relacyjne bazy Obiektowe bazy ODMG Obiektowe interfejsy O/RM Obiektowo-relacyjne bazy SQL3/99 Obiektowe Obiektowe Relacyjne Relacyjne Obiektowe Obiektowy model (8) 4

Architektury obiektowych i obiektoworelacyjnych systemów baz Struktury aplikacji 4GL kopiowanie i konwersja brak konwersji OQL SQL Obiektoworelacyjne bazy Struktury bazy Obiektowe bazy Obiektowy model (9) Baza jako zbiór kolekcji obiektów Stan obiektowej bazy jest zbiorem kolekcji trwałych ł hi rozróżnialnych obiektów. Schemat obiektowej bazy jest zbiorem klas, które definiują strukturę i funkcjonalność obiektów. W obiektowych bazach rozróżnia się pojęcie klasy jako definicji własności obiektów od pojęcia rozszerzenia klasy będącego zbiorem trwałych obiektów. class Figura { // nazwa klasy jako typu (extent Figury) // nazwa rozszerzenia klasy jako // zbioru wystąpień Obiektowy model (10) 5

Abstrakcyjne typy Możliwość definiowania nowych typów o dowolnej złożoności i funkcjonalności. Typy użytkownika mogą być podstawą definicji pojedynczych atrybutów klas jak również całych klas. class Punkt { attribute Float X, Y; void przesuń (in Float x, in Float y);}; class Odcinek { attribute Punkt W1, W2; void przesuń (in Float a, in Float b) { W1.przesuń(a, b); W2.przesuń(a, b); }}; Punkt +X : Float +Y : Float +przesuń(float,float) Odcinek #Wierzchołki[2]:Punkt +przesuń(float,float) Obiektowy model (11) Dziedziczenie Klasy mogą być specjalizowane przez mechanizm dziedziczenia. Klasa pochodna dziedziczy funkcjonalność i implementację klasy bazowej. W klasie pochodnej można dodać nową funkcjonalność lub redefiniować funkcjonalność odziedziczoną. class Wielokąt extends Figura // dziedziczenie {...}; class Wielokąt : Figura // relacja podtypu {...}; Relacja podtypu Dziedziczenie Figura {abstract, persistence} Wielokąt #Krawędzie[3..*] : Odcinek Obiektowy model (12) 6

Złożone struktury Możliwość naturalnego modelowania atrybutów złożonych i wielowartościowych. Przykład zastosowania konstruktorów typów złożonych w języku ODL. class Wielokąt { struct Punkt { //typ Float X, Y; } Punkt +X : Float +Y : Float Odcinek #Wierzchołki[2] : Punkt struct Odcinek { //typ Punkt Wierzchołek_1; Punkt Wierzchołek_2;} //atrybut attribute set<odcinek> krawędzie;}; Wielokąt #Krawędzie[3..*] : Odcinek Obiektowy model (13) Związki miedzy danymi Możliwość definiowania i składowania w bazie związków między danymi. class Osoba {...} Osoba +imię : String +nazwisko : String +adres : Adres jest_autorem [1..*] [1..*] Obraz #utworzony : Date #elementy[1..*] : Figura +dodaj(figura) +utwórzkopię() nazwa związku relationship set<obraz> jest_autorem inverse Obraz::jest_utworzony_przez; typ związku związek odwrotny Obiektowy model (14) 7

Hierarchia kolekcji obiektów Związek dziedziczenia między klasami, których rozszerzenia są składowane w bazie implementuje związek zawierania się podzbiorów obiektów. Rozszerzenie klasy pochodnej jest podzbiorem rozszerzenia klasy bazowej. class Figura { (extent Figury)...}; class Wielokąt extends Figura{ (extent Wielokąty)...}; Wielokąty Figury Figura #typ : String Wielokąt #Krawędzie[3..*] : Odcinek Obiektowy model (15) Polimorfizm i późne wiązanie Relacja podtypu łącząca klasy i interfejsy umożliwia podstawienia polimorficzne polegające na podstawieniu pod zmienną typu klasy bazowej obiektu, który jest wystąpieniem klasy pochodnej. Podstawienia polimorficzne umożliwiają dynamiczne wiązanie nazw metod. zmienna polimorficzna podstawienie polimorficzne Figura f = new Koło(10,6,5); Float p = f.powierzchnia(); Koło::powierzchnia( ) f = new Wielokąt(p1,p2,p3); wiązanie dynamiczne p = f.powierzchnia(); Wielokąt::powierzchnia( ) Obiektowy model (16) 8

Tożsamość Obiektowe języki programowania: identyfikacja przez symboliczną ą nazwę ę i fizyczny y adres w pamięci ę operacyjnej. class Pracownik {...}; PAO Pracownik Nowak("Jan","Nowak"); 0c78:89ad Nowak.nazwisko = "Kowalski"; Obiektowy model (17) Tożsamość Model relacyjny: identyfikacja przez ich wartości SELECT * FROM płatnicy WHERE Nazwisko = 'NOWAK'; JAN TADEUSZ MACIEJ JAN KUBA JÓZEF JAN NOWAK KOWALSKI NOWAK RZEPA TARZAN MALINIAK NOWAK Jednoznaczna identyfikacja wymaga zdefiniowania dla każdej relacji klucza podstawowego Obiektowy model (18) 9

Tożsamość w obiektowej bazie Identyfikacja na podstawie wartości identyfikatora obiektu nazywanego OID Identyfikacja przez OID jest niezależna od wartości atrybutów obiektu Osoba *kowalski, *kowalska; kowalski = new Osoba("Jan","Kowalski"); kowalska = new Osoba("Janina","Kowalska"); Kowalska->małżonek = kowalski; //podstawienie oid Kowalski->nazwisko = "Nowak"; Kowalski->pesel = 68040102766; Kowalski->płeć = "K"; Kowalska->małżonek->dochody->pokaż(); Obiektowy model (19) Trwałość Obiekty mogą być tworzone w trwałym lub ulotnym obszarze składowania Trwałość powinna być własnością poszczególnych obiektów, a nie klas obiektów Trwałość powinna być własnością obiektów dowolnej klasy Sposób operowania na obiektach trwałych i ulotnych powinien być taki sam Obiekty w ciągu cyklu życia mogą być przenoszone między trwałym i nietrwałym obszarem składowania Obiektowy model (20) 10

Trwałość Obiekty stają się trwałe przez jawne utrwalenie lub przez bycie osiągalnymi przez inne obiekty trwałe. Obiekty trwałe Wszystkie wystąpienia klasy o3 Baza o1 o2 o4 Obiekty nietrwałe pm = pmf.getpersistencemanager(); Punkt p = new Punkt(10.5, 7.1); // obiekt nietrwały Koło k = new Koło(p, 4); // obiekt nietrwały transaction = pm.currenttransaction(); pm.makepersistent(k); // utrwalenie obiektów p i k w bazie transaction.commit(); Obiektowy model (21) 11