Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 1 Projektowanie systemów informacyjnych Kazimierz Subieta Instytut Podstaw Informatyki.

Podobne prezentacje


Prezentacja na temat: "K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 1 Projektowanie systemów informacyjnych Kazimierz Subieta Instytut Podstaw Informatyki."— Zapis prezentacji:

1 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 1 Projektowanie systemów informacyjnych Kazimierz Subieta Instytut Podstaw Informatyki PAN, Warszawa Polsko-Japońska Wyższa Szkoła Technik Komputerowych, Warszawa Wykład 1: Wprowadzenie do obiektowości, cz. 1

2 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 2 Wprowadzenie do obiektowości, cz. 1 Geneza obiektowości Motywacje stojące za obiektowością Pojęcia obiektowości obiekty tożsamość obiektu powiązania komunikaty trwałość polimorfizm Obiektowość jako nowa ideologia informatyczna Zasady obiektowości Obszary oddziaływania obiektowości obiektowe języki programowania obiektowe bazy danych

3 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 3 Oczekiwania dotyczące obiektowości Większa wydajność tworzenia oprogramowania, krótszy cykl tworzenia oprogramowania, mniejsze kosztytworzenia i utrzymywania oprogramowania. Większa wydajność tworzenia oprogramowania, krótszy cykl tworzenia oprogramowania, mniejsze kosztytworzenia i utrzymywania oprogramowania. Ponowne użycie (reuse) wcześniej wytworzonych komponentów oprogramowania. Może ono dotyczyć wszystkich elementów projektu i oprogramowania. Podstawowe mechanizmy: tworzenie klas wyspecjalizowanych, tworzenie agregatów. Mechanizmy abstrakcji dostarczone projektantowi, pozwalające budować coraz większe jednostki oprogramowania i operować tymi jednostkami bez wnikania w ich wewnętrzną struktur; oddzielenie specyfikacji od implementacji. Jakość, niezawodność, testowalność, rozszerzalność, łatwa pielęgnacja oprogramowania, szybkie prototypowanie, współdziałanie, przenaszalność Jakość, niezawodność, testowalność, rozszerzalność, łatwa pielęgnacja oprogramowania, szybkie prototypowanie, współdziałanie, przenaszalność Mechanizmy kompozycji i dekompozycji: - zamykanie detali projektu lub oprogramowania w coraz większe jednostki - dekomponowanie złożonych struktur na ich fragmenty i rozpatrywanie tych fragmentów niezależnie od siebie i niezależnie od całości Efekty:

4 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 4 Symptomy kryzysu oprogramowania USA : Utrzymanie 10 mld. linii istniejących programów kosztuje 70 mld. $ rocznie (IEEE Software Development, Aug 94, p.65) 31% nowych projektów jest anulowanych przed zakończeniem; koszt 81 mld. $ Średnia wydajność wykonawców oprogramowania spadła o 13% w ciągu dwóch lat; stosunek najlepszej wydajności do najgorszej od 1990 r. rozszerzył się od 4:1 do 600:1. (Ed Yourdons Guerilla Programmer, Jul 95) (PC Week, 16 Jan 95, p.68)

5 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 5 Wyzwania technologiczne Wydajność wytwarzania oprogramowania Ponowne użycie składników projektów i oprogramowania Hermetyzacja składowych oprogramowania Automatyzacja wytwarzania oprogramowania Skalowalność oprogramowania (możliwość rozbudowy) Rynek składników oprogramowania

6 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 6 Czynniki wydajności produkcji oprogramowania Programowanie wizyjne sterowane zdarzeniami Wysoki poziom abstrakcji w programowaniu Środowisko obiektowe Środki uniwersalne (generic) wysokiego poziomu Współdziałanie systemów informatycznych (standardy) Składniki oprogramowania ponownego użycia Automatyczne składanie modułów oprogramowania Wydajność = krótki czas cyklu tworzenia

7 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 7 Obiektowość jako ideologia Obiektowość jest nową ideologią która wynika z zaobserwowanych wad istniejącego świata i podaje receptę jak te wady usunąć. Wady: Kryzys softwerowy: oprogramowanie i jego utrzymanie kosztuje zbyt dużo i jest zawodne współdziałanie pomiędzy produktami oprogramownia jest problemem Niedopasowanie metodyk analizy i projektowania systemów informacyjnych do bazy realizacyjnej systemów (języków programowania, systemów zarządzania bazami danych) Podwyższyć poziom abstrakcji w projektowaniu i programowaniu. Dopasować wszystkie fazy projektu do uwarunkowań technicznych i ludzkich. Podwyższyć poziom abstrakcji w projektowaniu i programowaniu. Dopasować wszystkie fazy projektu do uwarunkowań technicznych i ludzkich. Złożoność powoduje, że głównym problemem systemów stał się człowiek (analityk, projektant, programista) z jego róznymi uwarunkowaniami psychologicznymi i mentalnymi. Technologie komputerowe powinny być bardziej zorientowane na ludzi, nie na maszyny Złożoność powoduje, że głównym problemem systemów stał się człowiek (analityk, projektant, programista) z jego róznymi uwarunkowaniami psychologicznymi i mentalnymi. Technologie komputerowe powinny być bardziej zorientowane na ludzi, nie na maszyny Złożoność: syndrom obecnych systemów informatycznych, przekleństwo ciążące na większości projektów i produktów informatyki. Co robić?

8 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 8 Filozoficzna misja obiektowości Mentalna percepcja świata rzeczywistego Model pojęciowy Schemat struktury danych W modelu relacyjnym model pojęciowy stara się odwzorować świat rzeczywisty, lecz jest ograniczony dostępną bazą implementacyjną. W rezultacie, schemat struktury danych gubi semantykę danych. Uzyskanie jak najmniejszej luki pomiędzy myśleniem o rzeczywistości a myśleniem o danych i procesach które zachodzą na danych. Model obiektowy podtrzymuje te zgodności, przybliżając semantykę danych do świata rzeczywistego.

9 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 9 Współczesne pojęcia obiektowości Współczesne pojęcia obiektowości Źródła obiektowości Metodyki projektowania oprogramowania, od swojego początku bazujące na wyróżnianiu obiektów i ich klas w otaczającej nas rzeczywistości Języki programowania operujące na złożonych strukturach danych, wprowadzające klasy, metody, dziedziczenie i hermetyzację. (Simula 67, Smalltalk) Bazy danych, od początku bazujące na obiektach (IMS, CODASYL). Wady modelu relacyjnego baz danych; odrzucenie jego powierzchownej prostoty. Skierowanie uwagi na czynniki ludzkie w tworzeniu oprogramowania.

10 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 10 Podstawowe zasady obiektowości Obiekty - Oprogramowanie powinno składać się z małych, zrozumiałych modułów, zawierających struktury danych i dozwolone na nich operacje, czyli obiektów. Hermetyzacja - Jasne rozróżnienie pomiędzy interfejsem do obiektu opisującym co obiekt zawiera i co robi, a implementacją definiującą jak on jest zbudowany i jak on to robi. Typy i klasy - Zgrupowanie obiektów o tych samych charakterystykach i traktowanie ich jako bytów tej samej klasy; sprawdzanie typologicznej poprawności użycia obiektów. Dziedziczenie - Wielokrotne użycie tego, co wcześniej zostało zrobione: definiowanie typów, które mają wszystkie wcześniej zdefiniowane cechy plus niektóre nowe cechy. Komunikaty - Obiekt wykonuje jedną z jego funkcji po wysłaniu do niego odpowiedniego komunikatu, który nie zależy od tego jak obiekt jest zaimplementowany. Polimorfizm - Wybór nazwy dla operacji jest określony wyłącznie jej zewnętrznym, pojęciowym znaczeniem. Obiekt sam decyduje, którą operację wybrać, jeżeli w skierowanym do niego komunikacie została użyta ta nazwa.

11 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 11 Obszary oddziaływania obiektowości Metodyki analizy i projektowania SI (Rumbaugh, Booch, Jacobson, Yourdon,...), narzędzia CASE.Najbardziej istotna zmiana: możliwość związania z obiektami operacji, które można wykonać na tych obiektach. Języki programowania (Smalltalk, C++, Java, Eiffel,...) Klasy, metody, dziedziczenie, hermetyzacja, późne wiązanie Bazy danych i składy trwałych obiektów (standard ODMG-93, ObjectStore, O2, Poet, Versant,...) przeniesienie obiektowych technologii programowania na grunt baz danych Współdziałanie systemów heterogenicznych (OMG CORBA,OLE/DCOM/ActiveX) Obiekty i klasy jako standard wymiany informacji pomiędzy systemami Wizyjne środki programistyczne (Smalltalk, CA OpenRoad, IBM VisualAge,...) Przeniesienie technik obiektowych do programowania wizyjnego Inne: biblioteki oprogramowania, grafika, miary i oceny oprogramowania, re-inżynieria biznesu (BPR)

12 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 12 Nakładające się obszary obiektowości Metodyki obiektowe Narzędzia obiektowe Obiektowe interfejsy użytkownika Programowanie obiektowe Obiektowe bazy danych Obiektowe systemy operacyjne

13 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 13 Przeszkody dla obiektowości Każda nowa ideologia ściera się z zastanym stanem rzeczy i poprzednimi ideologiami. Z czym walczy obiektowość? Zastany świat interfejsów programistycznych (C, COBOL, Fortran, SQL,...) Mity i fałszywe steoretypy: Relacyjna baza danych zapewnia prostotę struktur danych Bezpośrednie powiązania (wskaźniki) w bazie danych są niekorzystne Tylko relacyjna baza danych zapewnia możliwość definiowania języków zapytań Tylko relacyjna baza danych zapewnia sprawne przetwarzanie transakcji Relacyjne bazy danych mają solidne podstawy matematyczne Relacyjne bazy danych mają bardzo dobrą wydajność, nieosiągalną dla innych. Własna słabość: słabo wyartykułowane zasady, formalizmy, języki, standardy; kompromisy w zakresie celów. Spuścizna: ogromne inwestycje w hierarchiczne, sieciowe i relacyjne bazy danych Porównywanie technologicznie dojrzałych interfejsów z laboratoryjnymi

14 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 14 Obiektowość - potencjalne ryzyko Nieopracowane mechanizmy zarządzania dużą bazą obiektów, sterowania wersjami, rejestrowania zmian, zapewnienia stabilności interfejsów Technologie obiektowe są jak dotąd stosowane przez małe i średnie organizacje. Nie jest do końca pewne jak przeskalują się dla wielkich organizacji. Duża liczba tematów znajduje się ciągle w fazie laboratoryjnej. Szereg technologii jest mało stabilnych (np. metodyki projektowania). Przejście na technologie obiektowe może zagrozić funkcjonowaniu obecnie działających i sprawnych systemów, które są krytyczne dla misji organizacji. Zbyt mała liczba ekspertów jest wyszkolona w zakresie technologii obiektowych. Nie jest jasne, jakie koszty pociągnie za sobą przejście na technologie obiektowe. Standardy w zakresie obiektowości są niedopracowane i niestabilne. Nie wiadomo w jakim zakresie będą one pełnić swoją funkcję.

15 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 15 Obiektowe języki programowania (1) Smalltalk Jezyk zrobiony w latach w Xerox Palo Alto Research Center w Kalifornii. Klasy, podklasy, wirtualne funkcje, przesyłanie komunikatów, meta-klasy. Wszystko jest obiektem, w szczególności liczby i klasy. Istotą sukcesu Smalltalka jest to, że nie jest on tylko językiem, ale mocnym zintegrowanym środowiskiem programistycznym z doskonałym interfejsem okienkowym. Prostota, możliwość szybkich dynamicznych zmian, elastyczna natura Smalltalka uczyniła go doskonałym narzędziem do szybkiego tworzenia prototypów. Mniej są znane przemysłowe aplikacje na dużą skalę. C++ Język hybrydowy, pochodna języka C. Łączy własności C niskiego poziomu, takie jak arytmetyka wskaźników, z konstrukcjami wysokiego poziomu, takimi jak klasy, podklasy, funkcje wirtualne, hermetyzacja. (Eklektyczna natura C++ jest przedmiotem krytyki.) Duże zastosowania na skalę przemysłową. Jednocześnie, jest on krytykowany z powodu wolnego tworzenia aplikacji, zawodności, słabej przenaszalność, zwiększonego ryzyka wadliwego działania programów.

16 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 16 Obiektowe języki programowania (2) Java Mieszanina C++, Smalltalka i Objective-C, z obcięciem własności niskiego poziomu i wyeliminowaniem niektórych ograniczeń i mętnych własności. Język pomyślany jako narzędzie do programowania stron Webu (ale oczywiście, jest to tylko jedno z zastosowań). Istotną własnością Java jest to, że programy kompiluje się nie do poziomu kodu maszynowego, a do poziomu znakowego języka pośredniego, czyli. tzw. apletów (applets), które są następnie interpreto- wane. Daje to efekt dużej przenaszalności programów oraz zwiększenia bezpieczeństwa (security), co jest szczególnie istotne w środowiskach rozproszonych takich jak Internet. Ada95 Agora CLOS Eiffel Modula-3 Objective-C OO-COBOL Self LENS Sather Python Sina Theta Dylan Ponadto mrowie języków: Trellis-Owl DSM Actor Object Pascal Beta

17 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 17 Obiektowe bazy danych Bazy danych w swoich początkach były obiektowe, chociaż nie realizowały wszystkich pojęć obiektowości, takich jak klasy, metody i dziedziczenie. Bazy danych w swoich początkach były obiektowe, chociaż nie realizowały wszystkich pojęć obiektowości, takich jak klasy, metody i dziedziczenie. Kategorie obiektowości Systemy strukturalnie obiektowe (wyróżniające obiekty) Systemy operacyjnie obiektowe (obiektom są przypisane operacje) Systemy behawioralnie obiektowe (hierarchia klas, metody i dziedziczenie) Podstawowy wyróżnik: trwałe obiekty + identyfikatory obiektów Docelowa tendencja: Programista podczas programowania nie musi nic wiedzieć o bazie danych, operując na jej obiektach tak jak na zmiennych programu. Baza danych powinna być niewidoczna (przezroczysta). Programista podczas programowania nie musi nic wiedzieć o bazie danych, operując na jej obiektach tak jak na zmiennych programu. Baza danych powinna być niewidoczna (przezroczysta).

18 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 18 Obiektowy SZBD jest to SZBD Klasyczne funkcje SZBD: Zarządzanie pamięcią zewnętrzną Zarządzanie schematem Sterowanie współbieżnością Zarządzanie transakcjami Odtwarzalność Przetwarzanie zapytań Kontrola dostępu Do tych funkcji dołożone są: Złożone obiekty Typy definiowane przez użytkownika Tożsamość obiektów Hermetyzacja Typy i/lub klasy oraz ich hierarchia Przesłanianie/przeciązanie/późne wiązanie Kompletność obliczeniowa (pragmatyczna)

19 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 19 Obiekty (1) Obiektem może być także pewien zamknięty fragment oprogramowania (dana, procedura, moduł, dokument, okienko dialogu,...), którym można operować jako zwartą bryłą (wyszukiwać, wiązać, kopiować, blokować, usuwać, indeksować,...). Obiektem może być także pewien zamknięty fragment oprogramowania (dana, procedura, moduł, dokument, okienko dialogu,...), którym można operować jako zwartą bryłą (wyszukiwać, wiązać, kopiować, blokować, usuwać, indeksować,...). Obiekt posiada swoją tożsamość, która wyróżnia go spośród innych obiektów. Tożsamość obiektu jest niezależna od wartości jakichkolwiek jego atrybutów i od jego lokacji w świecie rzeczywistym lub w przestrzeni adresowej komputera. (praktycznie: tożsamość = trwały wewnętrzny identyfikator obiektu) Obiekt posiada swoją tożsamość, która wyróżnia go spośród innych obiektów. Tożsamość obiektu jest niezależna od wartości jakichkolwiek jego atrybutów i od jego lokacji w świecie rzeczywistym lub w przestrzeni adresowej komputera. (praktycznie: tożsamość = trwały wewnętrzny identyfikator obiektu) Obiektem jest rzecz lub pojęcie obserwowane w świecie rzeczywistym którego dotyczy SI. Obiekt jest odróżnialny od innych obiektów, ma dobrze określone granice i nazwę. Obiektem jest rzecz lub pojęcie obserwowane w świecie rzeczywistym którego dotyczy SI. Obiekt jest odróżnialny od innych obiektów, ma dobrze określone granice i nazwę. Obiekt posiada stan, który może zmieniać się w czasie (bez zmiany tożsamości obiektu). Obiekt posiada stan, który może zmieniać się w czasie (bez zmiany tożsamości obiektu).

20 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 20 Obiekty (2) Obiekt może być złożony, tj. może składać się z mniejszych obiektów. Obiekt złożony zawiera w sobie wszelkie informacje, które składają się na jego stan Obiekt może być złożony, tj. może składać się z mniejszych obiektów. Obiekt złożony zawiera w sobie wszelkie informacje, które składają się na jego stan Obiekt może być powiązany z innymi obiektami związkami skojarzeniowymi. Obiekt ma przypisane zachowanie, tj. zestaw operacji które wolno do niego stosować (implementacja operacji jest zwana metodą). Obiekt ma przypisane zachowanie, tj. zestaw operacji które wolno do niego stosować (implementacja operacji jest zwana metodą). Obiekt ma przypisany typ, tj. wyrażenie językowe, które ogranicza dopuszczalną budowę obiektu oraz ustala operacje, które wolno wykonać na obiekcie. Obiekt ma przypisany typ, tj. wyrażenie językowe, które ogranicza dopuszczalną budowę obiektu oraz ustala operacje, które wolno wykonać na obiekcie.

21 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 21 Przykład obiektu Obiekt KONTO definiujący konto bankowe Numer: Stan konta: PLN Właściciel: Jan Kowalski Upoważniony: Wypłać Wpłać Sprawdź stan Upoważnij Zmień upoważnienie Porównaj podpis Zlikwiduj konto Nalicz procent

22 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 22 Tożsamość obiektu Obiekt jest wyróżnialny w otaczającym nas świecie poprzez swoje istnienie, nie poprzez jakąkolwiek wartość, która go odróżnia od innych obiektów. Obiekt jest wyróżnialny w otaczającym nas świecie poprzez swoje istnienie, nie poprzez jakąkolwiek wartość, która go odróżnia od innych obiektów. Może się zdarzyć, że z punktu widzenia naszych obserwacji (tj. stanu obiektu) dwa obiekty są nieodróżnialne. Niemniej są to różne obiekty. W implementacji obiektowej bazy danych system automatycznie nadaje unikalny identyfika- tor dla obiektu, który odróżnia go od innych obiektów oraz umożliwia budowanie referencji do obiektu. Taki identyfikator jest wewnętrzny, nie ma żadnego znaczenia dla dziedziny problemowej i programista/użytkowwnik nigdy nie operuje jego wartością explicite. Identyfikator może być trwały, tj. niezmienny dla całego życia obiektu. W implementacji obiektowej bazy danych system automatycznie nadaje unikalny identyfika- tor dla obiektu, który odróżnia go od innych obiektów oraz umożliwia budowanie referencji do obiektu. Taki identyfikator jest wewnętrzny, nie ma żadnego znaczenia dla dziedziny problemowej i programista/użytkowwnik nigdy nie operuje jego wartością explicite. Identyfikator może być trwały, tj. niezmienny dla całego życia obiektu. identity

23 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 23 Powiązania pomiędzy obiektami W obiektowych językach programowania i bazach danych możliwe jest tworzenie bezpośrednich powiązań wskaźnikowych prowadzących od jednego obiektu do innego obiektu. Wskaźnik jest daną zawierającą identyfikator jako swoją wartość. W metodykach obiektowych unika się pojęcia wskaźnika, na rzecz czegoś bardziej abstrakcyjnego. W obiektowych językach programowania i bazach danych możliwe jest tworzenie bezpośrednich powiązań wskaźnikowych prowadzących od jednego obiektu do innego obiektu. Wskaźnik jest daną zawierającą identyfikator jako swoją wartość. W metodykach obiektowych unika się pojęcia wskaźnika, na rzecz czegoś bardziej abstrakcyjnego. PRACOWNIK Nazwisko Nowak Zarobek 1500 Pracuje_w o FIRMA Nazwa Relax Ltd. Szef o Zatrudnia o Zalety powiązań: naturalne odwzorowanie semantycznych związków między obiektami, konceptualizacja programów (wyrażenia ścieżkowe), zwiększenie szybkości działania. Wady: zwiększona sztywność struktury danych, możliwość utraty spójności wskutek zwisających wskaźników, możliwość naruszenia reguł hermetyzacji. links, pointers, associations, relationships

24 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 24 Komunikaty (1) Komunikat jest wyrażeniem językowym skierowanym do obiektu i wywołującym jedną z metod, które są z nim związane. Komunikat jest wyrażeniem językowym skierowanym do obiektu i wywołującym jedną z metod, które są z nim związane. Komunikat jest wysyłany z jednego obiektu do innego obiektu, lub z pewnego programu sterującego do obiektu (Smalltalk vs. C++). Komunikat może mieć zero, jeden lub więcej parametrów. Obiekt, który otrzymał komunikat wykonując odpowiednią metodę może zmienić stan. Po wykonaniu metody obiekt, który otrzymał komunikat może zwrócić odpowiedź do obiektu lub programu, który go wysłał (czyli wartość, lub w terminologii Smalltalka - obiekt). Odpowiedź nie jest komunikatem. message

25 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 25 Komunikaty (2) Numer: Stan konta: PLN Właściciel: Jan Kowalski Upoważniony:.... Wypłać Wpłać Sprawdź stan Upoważnij Zmień upoważnienie Porównaj podpis Zlikwiduj konto Nalicz procent Wypłać 1000 PLN OK, wypłaciłem Graj Cccco proszę...?

26 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 26 Komunikat a wołanie procedury (1) Wołanie procedury: obiekt jest komunikowany jako parametr: procedura( obiekt, par1, par2,...) Komunikat: obiekt-adresat poprzedza wywołanie metody: obiekt.metoda(par1, par2,...) Wołanie procedury: obiekt jest komunikowany jako parametr: procedura( obiekt, par1, par2,...) Komunikat: obiekt-adresat poprzedza wywołanie metody: obiekt.metoda(par1, par2,...) Nie jest to wyłącznie różnica syntaktyczna, gdyż: Dla metody, środowisko na którym działa, może zmieniać się dynamicznie (późne wiązanie metod, w odróżnieniu od wczesnego wiązania dla procedur). Dla metody, środowisko na którym działa, może zmieniać się dynamicznie (późne wiązanie metod, w odróżnieniu od wczesnego wiązania dla procedur). Komunikat nie określa która konkretnie metoda ma być wywołana; komunikat idzie do obiektu, i w zależności od niego może być wywołana zupełnie inna metoda. Komunikat nie określa która konkretnie metoda ma być wywołana; komunikat idzie do obiektu, i w zależności od niego może być wywołana zupełnie inna metoda. Pojęcia są podobne:

27 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 27 Komunikat a wołanie procedury (2) X = dochody( emeryt ) Y = dochody( pracownik ) Przełączenie explicite wewnątrz procedury dochody; procedurę musi pisać jeden programista, na wszystkie okazje X = emeryt.dochody() Y = pracownik.dochody() Nie ma przełączenia; wywoływana jest zupełnie inna metoda dochody w zależności od obiektu - adresata komunikatu. Te metody (i ich programiści) nie muszą nic o sobie wiedzieć.

28 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 28 Trwałość Wartość jest trwała, jeżeli żyje dłużej niż czas działania programu, który jej używa (przenosi się pomiędzy kolejnymi uruchomieniami programu). Wszystko, co zawierają bazy danych, jest trwałe. Wartość jest trwała, jeżeli żyje dłużej niż czas działania programu, który jej używa (przenosi się pomiędzy kolejnymi uruchomieniami programu). Wszystko, co zawierają bazy danych, jest trwałe. Trwała zmienna: zmienna programistyczna, która ma wszystkie własności normalnej zmiennej (w sensie konstrukcji programistycznych, w których może być użyta), 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. Wymagają one wczytania explicite trwałej wartości z pliku zewnętrznego na swoją zmienną (i zapisania vice versa). Istnieje grupa prototypowych języków posiadających trwałe zmienne (PJama). persistence Trwały obiekt: obiekt o własnościach trwałej zmiennej, obiekt bazy danych.

29 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 29 Ortogonalna trwałość orthogonal persistence Tradycyjnie, bazy danych przechowywały typy trwałe i masowe (zbiory, relacje, etc.). Tradycyjnie, języki programowania zajmowały się typami indywidualnymi i nietrwałymi (zmienne, struktury, zapisy, etc.). Tradycyjnie, istnieją różnice w koncepcjach dostępu do bazy danych i dostępu do zmiennych programu. Tradycyjnie, bazy danych przechowywały typy trwałe i masowe (zbiory, relacje, etc.). Tradycyjnie, języki programowania zajmowały się typami indywidualnymi i nietrwałymi (zmienne, struktury, zapisy, etc.). Tradycyjnie, istnieją różnice w koncepcjach dostępu do bazy danych i dostępu do zmiennych programu. Nie istnieje logiczne uzasadnienie takiego podziału. Można podać wiele przykładów, kiedy przydałoby się zapamiętanie w bazie danych jakichś zmiennych indywidualnych (np. nazwisko prezydenta RP). Podobnie, brak typów masowych w językach programowania doprowadził do koncepcji sterty (heap), która ma liczne wady, w szczególności, ograniczoną kontrolę typów, konieczność dynamicznych operacji alokacji i zwalniania pamięci, konieczność przetwarzania poprzez wskaźniki. Ortogonalna trwałość oznacza nowy typ języka programowania, w którym cecha trwałości jest ortogonalna do konstruktorów typu. W szczególności, baza danych może przechowywać dane indywidualne (trwałe), zaś w obszarze roboczym programu mogą znajdować się wartości masowe (nietrwałe). Cecha trwałości powinna być obsługiwana przez wyspecjalizowane funkcje, ale wszystkie pozostałe funkcjonalności (w tym języki zapytań) powinny nie robić żadnej różnicy w dostępie do trwałych i nietrwałych danych. Ortogonalna trwałość oznacza nowy typ języka programowania, w którym cecha trwałości jest ortogonalna do konstruktorów typu. W szczególności, baza danych może przechowywać dane indywidualne (trwałe), zaś w obszarze roboczym programu mogą znajdować się wartości masowe (nietrwałe). Cecha trwałości powinna być obsługiwana przez wyspecjalizowane funkcje, ale wszystkie pozostałe funkcjonalności (w tym języki zapytań) powinny nie robić żadnej różnicy w dostępie do trwałych i nietrwałych danych.

30 K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 30 Polimorfizm Z greckiego, oznacza wiele form. Znaczenie słowa polimorfizm jest też polimorficzne. Znaczenie 1 (zostało już wyjaśnione) : ta sama nazwa operacji może mieć różne znaczenie, w zależności od tego, do którego obiektu został wysłany komunikat zawierający tę nazwę. Znaczenie 1 (zostało już wyjaśnione) : ta sama nazwa operacji może mieć różne znaczenie, w zależności od tego, do którego obiektu został wysłany komunikat zawierający tę nazwę. Znaczenie 2 (z teorii typów): polimorfizm w jęz. programowania oznacza istnienie procedur lub funkcji, które mogą działać na wartościach wielu typów i zwracać wartości wielu typów. Przykładowo, funkcja daj_pierwszy(lista) zwraca pierwszy element dowolnej listy, niezależnie od tego, czy jest to lista liczb całkowitych, czy lista liczb rzeczywistych, czy lista rekordów, czy też inna. Znaczenie 2 (z teorii typów): polimorfizm w jęz. programowania oznacza istnienie procedur lub funkcji, które mogą działać na wartościach wielu typów i zwracać wartości wielu typów. Przykładowo, funkcja daj_pierwszy(lista) zwraca pierwszy element dowolnej listy, niezależnie od tego, czy jest to lista liczb całkowitych, czy lista liczb rzeczywistych, czy lista rekordów, czy też inna. Dość powszechne jest plątanie Znaczenia 1 ze Znaczeniem 2. Argumentacja, że Znaczenie 1 jest szczególnym przypadkiem Znaczenia 2 (obiekt, do którego jest wysłany komunikat jest dodatkowym parametrem metody) jest nie zawsze poprawna. Polimorficzne języki programowania (ML, Quest, Napier88,...) nie muszą być obiektowe, ale mogą być obiektowe (Fibonacci). polymorphism


Pobierz ppt "K.Subieta. Projektowanie systemów informacyjnych, Wykład 1, Folia 1 Projektowanie systemów informacyjnych Kazimierz Subieta Instytut Podstaw Informatyki."

Podobne prezentacje


Reklamy Google