Języki i środowiska przetwarzania danych rozproszonych

Transkrypt

Języki i środowiska przetwarzania danych rozproszonych
Języki i środowiska przetwarzania
danych rozproszonych
Pojęcia obiektowości przypomnienie i
dyskusja
Wykładowca: Tomasz Kowalski
Wykłady przygotowany na
podstawie materiałów
prof. Kazimierza Subiety
Języki i środowiska przetwarzania danych rozproszonych, Pojęcia obiektowości, Slajd 1
2013
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ń.
Języki i środowiska przetwarzania danych rozproszonych, Pojęcia obiektowości, Slajd 2
2013
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
Języki i środowiska przetwarzania danych rozproszonych, Pojęcia obiektowości, Slajd 3
2013
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.
Języki i środowiska przetwarzania danych rozproszonych, Pojęcia obiektowości, Slajd 4
2013
Ekstensja klasy
extent
 Jest to nazwany zbiór obiektów aktualnie należących do danej klasy.
OSOBA
Nazwisko Kowalska
RokUr 1975
Ekstensja
klasy OSOBA
OSOBA
Nazwisko Nowak
RokUr 1951
OSOBA
Nazwisko Abacki
RokUr 1948
PRACOWNIK
Nazwisko Nowak
RokUr 1951
Zarobek 2000
Dział zabawki
PRACOWNIK
Nazwisko Abacki
RokUr 1948
Zarobek 2500
Dział zabawki
OSOBA
Nazwisko
RokUr
Wiek()
OSOBA
Nazwisko Babacki
RokUr 1940
PRACOWNIK
Nazwisko Babacki
RokUr 1940
Zarobek 3000
Dział sprzedaż
PRACOWNIK
Zarobek
Dział
ZarobekNetto()
ZmieńZarobek(...)
Ekstensja klasy PRACOWNIK
 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.
Języki i środowiska przetwarzania danych rozproszonych, Pojęcia obiektowości, Slajd 5
2013
Kolekcje
collections
 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.
Języki i środowiska przetwarzania danych rozproszonych, Pojęcia obiektowości, Slajd 6
2013
Trwałość
persistence
 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, PSAlgol, 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).
Języki i środowiska przetwarzania danych rozproszonych, Pojęcia obiektowości, Slajd 7
2013
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ść.
Języki i środowiska przetwarzania danych rozproszonych, Pojęcia obiektowości, Slajd 8
2013
Ortogonalna trwałość
orthogonal persistence
 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.
Języki i środowiska przetwarzania danych rozproszonych, Pojęcia obiektowości, Slajd 9
2013