Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałKonstanty Langiewicz Został zmieniony 10 lat temu
1
Języki i środowiska programowania systemów rozproszonych, Wykład 03, Slajd 1 2011 Języki i środowiska programowania systemów rozproszonych Wykładowca: Tomasz Kowalski Wykłady przygotowane na podstawie materiałów prof. Kazimierza Subiety Wykład 3 Pojęcia obiektowości w bazach danych - przypomnienie i dyskusja
2
Języki i środowiska programowania systemów rozproszonych, Wykład 03, Slajd 2 2011 Co to jest obiektowość? W ostatnich latach termin obiektowy (object-oriented) stał się bardzo popularnym określeniem narzędzi i technologii informatycznych. Równie popularne stały się pojęcia charakteryzujące obiektowość, takie jak: obiekt, tożsamość, klasa, typ, powiązanie, interfejs, metoda, komunikat, dziedziczenie, hermetyzacja, polimorfizm. Centralnym motywem obiektowości jest dopasowanie modeli komputerowych do własności ludzkich zmysłów i mózgu – mechanizmów percepcji, wyobrażeń i rozumienia świata. Świat jest postrzegany przez ludzi jako mnogość obiektów, powiązań pomiędzy obiektami oraz zachowania się obiektów. Obiekty świata rzeczywistego podlegają klasyfikacji na podstawie ich podobieństwa. Mnogość poglądów oraz bardzo różnych koncepcji obiektowości. Po wyjaśnieniu podstaw koncepcyjnych obiektowości będziemy starali się przedstawić nasze formalne spojrzenie na obiektowość, które umożliwi precyzyjne definiowanie własności obiektowych języków zapytań.
3
Języki i środowiska programowania systemów rozproszonych, Wykład 03, Slajd 3 2011 Uporządkowanie pojęć (w wykładach prof. K. Subiety) Obiekt – tożsamość, identyfikator i jego trwałość, nazwa, stan, atrybuty, metody, … Obiekty złożone, Zasada relatywizmu obiektu, Zasada wewnętrznej identyfikacji. Powiązania pomiędzy obiektami, obiekty pointerowe, wyrażenia ścieżkowe, powiązania binarne i n-arne, problem aktualizacji powiązań Hermetyzacja – ortodoksyjna i ortogonalna. Komunikat, a: procedura, zdarzenie, asynchroniczne przetwarzanie. Klasa, Zasada "otwarta-zamknięta", interfejs, dziedziczenie, wielodziedziczenie, obywatelstwo klasy, ekstensja klasy, Zasada zamienialności (LSP), abstrakcyjny typ danych (ADT). Polimorfizm, przesłanianie, przeciążanie. Kolekcje, wartości zerowe, warianty (unie), dane pół-strukturalne Trwałość i jej rodzaje, ortogonalna trwałość Moduły
4
Języki i środowiska programowania systemów rozproszonych, Wykład 03, Slajd 4 2011 Obywatelstwo klasy W językach programowania obywatelem pierwszej kategorii nazywa się taki byt programistyczny, którym można manipulować w czasie wykonania. Obywatelem drugiej kategorii nazywa się ten byt, który istnieje tylko w tekście źródłowym programu - nie istnieje lub jest niedostępny podczas wykonania. Klasa może być obywatelem pierwszej (Smalltalk) lub drugiej kategorii (C++). W zależności od kategorii obywatelstwa są możliwe lub niemożliwe niektóre operacje na klasie, takie jak: Wysłanie komunikatu do klasy (jako obiektu); Zmiana nazwy obiektu; Dynamiczna zmiana zestawu lub typu atrybutów obiektów ; Dynamiczna zmiana zestawu metod znajdujących się wewnątrz klasy. Jeżeli klasy są obywatelami pierwszej kategorii, to mogą one być traktowane na takich samych zasadach jak normalne obiekty programistyczne lub obiekty bazy danych.
5
Języki i środowiska programowania systemów rozproszonych, Wykład 03, Slajd 5 2011 Ekstensja klasy Jest to nazwany zbiór obiektów aktualnie należących do danej klasy. Różne ekstensje mogą mieć wspólne części, co może być powodem trudności semantycznych. Stąd pojęcie ekstensji jest kontrowersyjne. Jest ona uważana za wątpliwe "dziedzictwo" modelu relacyjnego. OSOBA Nazwisko Babacki RokUr 1940 OSOBA Nazwisko Abacki RokUr 1948 OSOBA Nazwisko Nowak RokUr 1951 OSOBA Nazwisko RokUr Wiek() PRACOWNIK Zarobek Dział ZarobekNetto() ZmieńZarobek(...) OSOBA Nazwisko Kowalska RokUr 1975 Ekstensja klasy OSOBA PRACOWNIK Nazwisko Nowak RokUr 1951 Zarobek 2000 Dział zabawki PRACOWNIK Nazwisko Abacki RokUr 1948 Zarobek 2500 Dział zabawki PRACOWNIK Nazwisko Babacki RokUr 1940 Zarobek 3000 Dział sprzedaż Ekstensja klasy PRACOWNIK extent
6
Języki i środowiska programowania systemów rozproszonych, Wykład 03, Slajd 6 2011 Kolekcje Kolekcje są zestawami danych o podobnej strukturze. Rozmiaru kolekcji nie można przewidzieć ani ograniczyć. Do kolekcji zaliczane są zbiory, relacje, wielozbiory, sekwencje, listy, drzewa, itp. Popularne języki programowania nie wprowadzają pojęcia kolekcji lub silnie je ograniczają (np. Java - sekwencja referencji). Brak kolekcji w językach programowania jest powodem niezgodności impedancji pomiędzy językiem programowania i językiem zapytań. Brak kolekcji jest powodem konieczności używania sterty (heap), co np. prowadzi do wyciekania pamięci. Kolekcje mogą być zagnieżdżone (co jest najczęściej ignorowane przez teorie dotyczące obiektowych baz danych, np. obiektowe algebry). Relacje z modelu relacyjnego są przypadkiem kolekcji. Brak możliwości zagnieżdżania relacji jest utrudnieniem dla modelowania pojęciowego, ale zdaniem adwokatów modelu relacyjnego, upraszcza struktury danych i daje możliwość zastosowania matematyki. Są to poglądy kontrowersyjne. collections
7
Języki i środowiska programowania systemów rozproszonych, Wykład 03, Slajd 7 2011 Trwałość Byt programistyczny jest trwały, jeżeli żyje dłużej niż trwa czas działania programu, który go używa Wszystko, co zawierają bazy danych, jest trwałe. Trwałą zmienną jest zmienna programistyczna, która ma wszystkie własności normalnej zmiennej, ale której wartość przy nowym uruchomieniu programu jest taka sama, jak przy zakończeniu poprzedniego uruchomienia programu. Popularne języki programowania (C, C++, Smalltalk, Pascal, Java,...) nie mają trwałych zmiennych / trwałych obiektów. Istnieją prototypowe języki/systemy z trwałością (DBPL, Napier88, PS- Algol, Galileo, Fibonacci, Loqis,... ) Trwałość jest także dobudowywana do języka Java (Pjama) lub jest cechą technologii, np. EJB, ADO. Trwałość wymaga niezależnego od danej aplikacji repozytorium (bazy danych). persistence
8
Języki i środowiska programowania systemów rozproszonych, Wykład 03, Slajd 8 2011 Rodzaje trwałości Trwałość poprzez osiągalność: Obiekt trwały nie może mieć nietrwałych pod-obiektów lub atrybutów, ani też nie może zawierać pointera prowadzącego do obiektu nietrwałego. Wszystkie obiekty trwałe i ich atrybuty są osiągalne z jednego trwałego korzenia. Trwałość poprzez dziedziczenie: specjalne klasy z cechą trwałości, wszystkie klasy potomne są klasami z trwałością. Konieczne są duplikaty klas/typów dla tych samych trwałych i nietrwałych obiektow Trwałość poprzez utworzenie: podczas tworzenia programista ustala, czy tworzony obiekt ma być trwały. Ortogonalna trwałość.
9
Języki i środowiska programowania systemów rozproszonych, Wykład 03, Slajd 9 2011 Ortogonalna trwałość Tradycyjnie, bazy danych przechowywały wyłącznie typy trwałe i masowe (zbiory, relacje, etc.). Podobnie, klasyczne języki programowania zajmowały się wyłącznie typami indywidualnymi i nietrwałymi (zmienne, struktury, zapisy, etc.). Taki podział nie ma uzasadnienia. Niekiedy niezbędne jest zapamiętanie w bazie danych pojedynczych wartości; np. adresu firmy, w której jest zainstalowany system. Brak typów masowych w językach programowania ma liczne wady. Zasada ortogonalnej trwałości oznacza nowy typ języka programowania, w którym cecha trwałości jest ortogonalna w stosunku do konstruktorów struktur danych. Oznacza to m.in., że języki zapytań w równym stopniu dotyczą: trwałych i nietrwałych danych: są ortogonalne w stosunku do trwałości, kolekcji i indywidualnych danych: są ortogonalne w stosunku do masowości. orthogonal persistence
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.