Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

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

Podobne prezentacje


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

1 K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, 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 2: Wprowadzenie do obiektowości, cz. 2

2 K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 2 Wprowadzenie do obiektowości, cz. 2 Klasy Metody Przesłanianie, przeciążanie Ekstensja Typ, abstrakcyjny typ danych Własność zastępowania Hermetyzacja Dziedziczenie Delegacja, prototypy Późne wiązanie Wielokrotne dziedziczenie

3 K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 3 Klasa 2. Klasa jest miejscem przechowywania cech grupy obiektów, które są niezmienne (inwariantów). Klasa nie jest zbiorem obiektów i niekoniecznie jest definicją zbioru obiektów. Stosunek klasa/podklasa oznacza, że obiekty podklasy posiadają wszystkie inwarianty nadklasy, plus swoje inwarianty. Np. klasa Student ma wszystkie inwarianty klasy Osoba, plus niektóre własne. 2. Klasa jest miejscem przechowywania cech grupy obiektów, które są niezmienne (inwariantów). Klasa nie jest zbiorem obiektów i niekoniecznie jest definicją zbioru obiektów. Stosunek klasa/podklasa oznacza, że obiekty podklasy posiadają wszystkie inwarianty nadklasy, plus swoje inwarianty. Np. klasa Student ma wszystkie inwarianty klasy Osoba, plus niektóre własne. Najważniejsze inwarianty to: Możliwe są inne inwarianty: Zdarzenia lub wyjątki, które mogą zajść w operacjach na obiekcie Obsługa zdarzeń lub wyjątków (reguły aktywne) Lista eksportowa, określająca, które atrybuty dostępne są z zewnątrz Ograniczenia, którym musi podlegać każdy obiekt Nazwa, czyli językowy identyfikator obiektu Typ, czyli statyczna budowa obiektu (atrybuty) Metody, czyli operacje, które można wykonać na obiekcie class Dwa rozumienia, które nie zawsze są ze sobą zgodne: 1. Klasa jest nazwanym zbiorem obiektów o podobnych własnościach. Własności te (zestaw atrybutów, metody) są określone w definicji klasy. Stosunek klasa/podklasa oznacza zawieranie się zakresów znaczeniowych. Np. zbiór obiektów Student zawiera się w zbiorze obiektów Osoba. 1. Klasa jest nazwanym zbiorem obiektów o podobnych własnościach. Własności te (zestaw atrybutów, metody) są określone w definicji klasy. Stosunek klasa/podklasa oznacza zawieranie się zakresów znaczeniowych. Np. zbiór obiektów Student zawiera się w zbiorze obiektów Osoba.

4 K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 4 Metody jako inwarianty klasy Zwykle, istnieje wiele bardzo podobnych obiektów:konto, książka, pracownik,,.... Nie byłoby zbyt celowe, aby każdy z takich obiektów przechowywał w sobie własną kopię metod lub informacji o swoim typie. Ta informacja jest przechowywa raz w ramach klasy. Nie byłoby zbyt celowe, aby każdy z takich obiektów przechowywał w sobie własną kopię metod lub informacji o swoim typie. Ta informacja jest przechowywa raz w ramach klasy. 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 Numer: Stan konta: integer Właściciel: string Upoważniony: Numer: Stan konta: PLN Właściciel: Adam Nowak Upoważniony:.... Klasa wszystkich kont Obiekty KONTO import inwariantów methods

5 K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 5 Podklasa, nadklasa Klasy mogą tworzyć hierarchię lub inną strukturę bez pętli. Import inwariantów do obiektów (w szczególności, atrybutów i metod) jest tranzytywny. Klasy mogą tworzyć hierarchię lub inną strukturę bez pętli. Import inwariantów do obiektów (w szczególności, atrybutów i metod) jest tranzytywny. OSOBA NAZWISKO ROK_UR Wiek() PRACOWNIK ZAROBEK DZIAŁ FOTO ZarobekNetto() ZmieńZarobek(...) STUDENT NR_INDEKSU WYDZIAŁ WstawOcenę(...) ZaliczSemestr() JPEGGIF GRAFIKA ROZMIAR Wyświetl(...) Atrybut PRACOWNIKa FOTO należy do własnej klasy. Generalnie, struktura klas może być semantycznie bardziej złożona niż hierarchia. Atrybut PRACOWNIKa FOTO należy do własnej klasy. Generalnie, struktura klas może być semantycznie bardziej złożona niż hierarchia. subclass, superclass

6 K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 6 Klasa abstrakcyjna, klasa konkretna abstract class, concrete class Klasa abstrakcyjna nie ma (nie może mieć) wystąpień i służy wyłącznie jako nadklasa dla innych klas. Klasa abstrakcyjna może zawierać abstrakcyjne operacje, tj. opis operacji, ale nie implementacje. Klasa konkretna może mieć wystąpienia konkretnych obiektów. Klasa konkretna może zawierać implementacje abstrakcyjnych operacji. Klasa abstrakcyjna nie ma (nie może mieć) wystąpień i służy wyłącznie jako nadklasa dla innych klas. Klasa abstrakcyjna może zawierać abstrakcyjne operacje, tj. opis operacji, ale nie implementacje. Klasa konkretna może mieć wystąpienia konkretnych obiektów. Klasa konkretna może zawierać implementacje abstrakcyjnych operacji. Osoba prawna Osoba fizycznaFirma Sekwencja pierwszy następny Sekwencja int... implementacje Sekwencja char...implementacje Klasyczne klasyfikacje w biologii: tylko liście w drzewie klas mogą być klasami konkretnymi.

7 K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 7 Przesłanianie Atrybut lub metoda z klasy bardziej szczegółowej zasłania atrybut lub metodę z klasy bardziej ogólnej Pracownik nazwisko... zwolnij()... Samodzielny prac.naukowy zwolnij() Decyzja o zwolnieniu w gestii dyrekcji Decyzja o zwolnieniu w gestii sekretariatu PAN Metody są różne, choć mają tę samą nazwę. overriding

8 K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 8 Przeciążanie overloading, static polymorphism Pojęcie podobne do przesłaniania. Oznacza, że jakiś symbol (np. operatora, funkcji, porównania) ma znaczenie zależne od kontekstu jego użycia, np. od składni lub ilości/typu argumentów. Oznacza, że jakiś symbol (np. operatora, funkcji, porównania) ma znaczenie zależne od kontekstu jego użycia, np. od składni lub ilości/typu argumentów. Powszechne jest przeciążanie operatora równości: = służy do porównania liczb całkowitych, liczb rzeczywistych, stringów, identyfikatorów, struktur, itd. Podobnie, operator + może oznaczać dodawanie lub konkatenację. Przeciążanie nie wymaga dynamicznego wiązania: znaczenie operatora, mimo że homonimiczne, można wydedukować na podstawie statycznej analizy tekstu programu. W odróżnieniu, przesłanianie jest własnością dynamiczną, nie zawsze da się wydedukować z tekstu programu.

9 K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 9 Wystąpienie, ekstensja Wystąpienie klasy (class instance, class member, class occurence) = obiekt który jest podłączony do danej klasy (jest członkiem). Na ogół taki obiekt przechowuje tylko wartości jego atrybutów; reszta informacji jest zawarta w ramach jego klasy. Ekstensja klasy (class extent) = aktualny (zmienny w czasie) zestaw wszystkich wystąpień tej klasy. Niektóre metody zawarte w ramach klasy odnoszą się do jej wystąpień: pracownik.wiekpracownik.zwolnijKONTO.Oblicz_procent Niektóre metody zawarte w ramach klasy odnoszą się do jej ekstensji: KL_pracownik.nowy KL_pracownik.zliczKL_KONTO.Oblicz_sumę Klasa może mieć nie jedno lecz wiele ekstensji. instance, extent

10 K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 10 Typ W wielu opracowaniach i językach (C++, Eiffel) typ utożsamia się z klasą. Wielu autorów uważa jednak te dwa pojęcia za różne. Klasa: przechowalnia inwariantów, implementacja metod. Typ: specyfikacja budowy obiektu, specyfikacja metod. Podstawowe zastosowanie klasy: modelowanie pojęciowe. Podstawowe zastosowanie typu: statyczna kontrola poprawności programów Typ obiektu określa jego formalną budowę (atrybuty) oraz ogranicza kontekst, w którym odwołanie do obiektu może być użyte w programie. Typ obiektu określa jego formalną budowę (atrybuty) oraz ogranicza kontekst, w którym odwołanie do obiektu może być użyte w programie. Generalnie, na linii rozróżnień definicyjnych pomiędzy pojęciami: klasa (class) typ (type) abstrakcyjny typ danych (abstract data type, ADT) ekstensja (extent) klasa (class) typ (type) abstrakcyjny typ danych (abstract data type, ADT) ekstensja (extent) panuje spore zamieszanie. type

11 K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 11 Abstrakcyjny typ danych Abstrakcyjny typ danych jest bardzo bliski pojęciu klasy, której wystąpienia eksportują (niektóre) operacje, zaś ich struktura jest niedostępna dla operacji z zewnątrz. ADT nie wyznacza typu konkretnego (tj. budowy obiektu), ale ogranicza kontekst, w którym odwołanie do obiektu może być użyte w programie. ADT może odnosić się nie tylko do obiektów, ale również do wartości. abstract data type, ADT Pojęcie udostępniane w niektórych językach programowania oparte na założeniu, że typ struktury danych jest skojarzony z operacjami działającymi na elementach tego typu. Nie istnieje potrzeba i możliwość używania operacji nie należących do oferowanego zestawu; operacje są kompletne i wyłączne (patrz hermetyzacja). Bezpośredni dostęp do składowych takiej struktury danych nie jest możliwy. Np. definiujemy typ abstrakcyjny KameraWideo z operacjami: Włącz, Wyłącz, Nagrywaj, Stop, Bliżej, Dalej, PrzewińWTył, Odtwarzaj,... Zestaw tych operacji jest stosunkowo nieliczny, natomiast wewnętrzna budowa obiektu jest bardzo złożona (zawiera tysiąceatrybutów), ale niezbyt interesująca z punktu widzenia operacji zewnętrznych.

12 K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 12 Typy masowe bulk types Typy, dla których rozmiar wartości nie da się przewidzieć ani sensownie ograniczyć. Kolekcje (terminologia ODMG-93): Zbiory (sets): kolekcja elementów dowolnego typu, ale bez powtórzeń. Wielo-zbiory (multisets, bags): kolekcje elementów dowolnego typu, elementy mogą się powtarzać. Sekwencje (sequences): uporządkowane kolekcje elementów dowolnego typu; porządek ma znaczenie informacyjne, elementy mogą się powtarzać. Tablice dynamiczne (dynamic arrays): sekwencje, ale z dostępem poprzez indeks. Zbiory (sets): kolekcja elementów dowolnego typu, ale bez powtórzeń. Wielo-zbiory (multisets, bags): kolekcje elementów dowolnego typu, elementy mogą się powtarzać. Sekwencje (sequences): uporządkowane kolekcje elementów dowolnego typu; porządek ma znaczenie informacyjne, elementy mogą się powtarzać. Tablice dynamiczne (dynamic arrays): sekwencje, ale z dostępem poprzez indeks. Ortogonalność konstruktorów typu: typy masowe mogą być dowolnie kombinowanez dowolnymi innymi typami, np. zbiór sekwencji; obiekt, którego atrybutami są wielo-zbiory, itd. Popularne języki obiektowe nie mają typów masowych lub je ograniczają (Smalltalk, C++). Systemy przed-obiektowe nie są zgodne z zasadą ortogonalności konstruktorów typu.

13 K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 13 Mocna kontrola typu (1) strong type checking, strong typing Każdy byt programistyczny (obiekty, zmienne, procedury, funkcje, metody, operacje, moduły, klasy, ADT) podlega obowiązkowej specyfikacji typu. Każda operacja w programie jest sprawdzana na zgodność z specyfikacją typu. Każdy byt programistyczny (obiekty, zmienne, procedury, funkcje, metody, operacje, moduły, klasy, ADT) podlega obowiązkowej specyfikacji typu. Każda operacja w programie jest sprawdzana na zgodność z specyfikacją typu. Statyczna kontrola typu: kontrola tekstu programu (podczas kompilacji). Dynamiczna kontrola typu: kontrola typów podczas czasu wykonania. Zwykle mocna kontrola typu oznacza kontrolę statyczną. Kontrola dynamiczna jest znacznie mniej skuteczna, z dwóch powodów: jest istotnym obciążeniem czasu wykonania błąd typu podczas wykonania jest takim samym błędem jak każdy inny, a rakieta przecież jest już w locie... Zwykle mocna kontrola typu oznacza kontrolę statyczną. Kontrola dynamiczna jest znacznie mniej skuteczna, z dwóch powodów: jest istotnym obciążeniem czasu wykonania błąd typu podczas wykonania jest takim samym błędem jak każdy inny, a rakieta przecież jest już w locie... Z drugiej strony, mocna statyczna kontrola typu powoduje znaczne zmniejszenie mocy języka programowania i jego elastyczności. (Np. jak napisać procedurę w Pascalu, która mnoży dwie macierze o dowolnych rozmiarach?) Własności takie jak: późne wiązanie, wartości zerowe, warianty, perspektywy, procedury bazy danych, dynamiczne klasy, etc. wymagają kontroli dynamicznej.

14 K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 14 Podtyp subtype Dwie definicje: Ekstensja podtypu jest podzbiorem ekstensji typu. Np. liczba naturalna (1,2,...) jest podtypem typu liczba całkowita (...,-2,-1,0,1,2,...). Typ A jest podtypem typu B, jeżeli A zawiera więcej atrybutów (operacji, metod,...) niż B. Typ A jest podtypem typu B, jeżeli A zawiera więcej atrybutów (operacji, metod,...) niż B. struct Osoba ( string Nazwisko, int Rok_urodz ) struct Pracownik( string Nazwisko, int Rok_urodz, int Zarobek ) A < B < Pracownik jest podtypem Osoba Pojęcie podtypu staje się bardziej złożone w przypadku procedur, funkcji i metod. Kiedy typ funkcji A jest podtypem typu funkcji B? (Warunki na typy parametrów dla obu funkcji oraz na typy ich wyników.) Pojęcie podtypu staje się bardziej złożone w przypadku procedur, funkcji i metod. Kiedy typ funkcji A jest podtypem typu funkcji B? (Warunki na typy parametrów dla obu funkcji oraz na typy ich wyników.) Innym (równoważnym) punktem widzienia na kwestię podtypowania jest założenie, że każdy obiekt może mieć wiele typów (swojej klasy podstawowej i wszystkich jej superklas).

15 K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 15 Własność zastępowania substitutability Podstawowa zasada kontroli typów w obiektowości: Jezeli w jakimś miejscu programu (zapytania,...) może być użyty typ A, to może tam byc także użyty dowolny podtyp typu A. Podstawowa zasada kontroli typów w obiektowości: Jezeli w jakimś miejscu programu (zapytania,...) może być użyty typ A, to może tam byc także użyty dowolny podtyp typu A. Jezeli w jakimś miejscu programu może być użyta liczba całkowita, to może być tam także użyta liczba naturalna. Jeżeli w jakimś miejscu programu może być użyty obiekt Osoba, to w tym samym miejscu może być użyty obiekt Pracownik. Zasada ta wydaje się oczywista, ale niekiedy powoduje anomalie:

16 K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 16 Rozszerzalność systemu typów type system extensibility Projektant ma do wyboru wiele konstruktorów typu (ortogonalna kombinacja). Nowy typ można zdefiniować na podstawie typu już istniejącego. Projektant ma do wyboru wiele konstruktorów typu (ortogonalna kombinacja). Nowy typ można zdefiniować na podstawie typu już istniejącego. Konstruktorzy typów: typy atomowe: character, integer, float, string, boolean, bitmap,... typy zapisów (records): struct(nazwa:string, waga:float) zbiory (sets): set of bitmap, set of struct(nazwa:string, waga:float) tablice (arrays): array of integer, array[5..30] of set of bitmap wielozbiory (bags): zbiory z powtórzeniami sekwencje (sequences): wielozbiory uporządkowane..... (jest jeszcze trochę mniej istotnych możliwości) Definicja nowego typu na podstawie typu już zdefiniowanego: istotna możliwość ponownego użycia. TypCzęści = struct(string nazwa, float waga); TypRelacjiCzęści = set of TypCzęści; TypCzęściKolorowej is TypCzęści {string kolor} podtyp

17 K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 17 Hermetyzacja, ukrywanie informacji Zasada inżynierii oprogramowania (Parnas, 1972): programista ma tyle wiedzieć o obiekcie programistycznym, ile mu trzeba, aby go efektywnie użyć. Wszystko, co może być przed nim ukryte, powinno być ukryte. Hermetyzacja i ukrywanie informacji jest podstawą pojęć modułu, klasy i ADT. Hermetyzacja ortodoksyjna (Smalltalk) Na zewnątrz są widoczne metody; atrybuty obiektu są ukryte. Hermentyzacja ortogonalna (C++) Dowolna własność obiektu (atrybut, metoda,...) może być prywatna (ukryta) lub publiczna Ergo: prawie każdy atrybut atr jest obsługiwany przez dwie metody: czytaj_atr, zmień_atr encapsulation, information hiding Hermetyzacja: zgromadzenie elementów struktury i implementacji obiektu w postaci jednej manipulowalnej bryły; oddzielenie specyfikacji obiektu od jego implementacji. Hermetyzacja oznacza takżeukrycie części struktury i implementacji obiektu. Tę własność określa się jako ukrywanie informacji. Hermetyzacja i ukrywanie informacji są różnymi pojęciami, ale mocno powiązanymi. Specjalne środki do specyfikowanie własności prywatnych i publicznych.

18 K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 18 Hermetyzacja ortogonalna PRAC NAZWISKO Nowak ROK_UR 1951 ZAROBEK 2500 ZmieńZarobek(...)Podatek()ZarobekNetto() Wiek() begin return RokBież() - ROK_UR end; DZIAŁ Zabawki PRAC NAZWISKO Nowak ROK_UR 1951 ZAROBEK 2500 ZmieńZarobek(...) Podatek() ZarobekNetto() DZIAŁ Zabawki Wiek() begin return RokBież() - ROK_UR end; Wewnętrzna struktura obiektu Zewnętrzna struktura obiektu Wiek() Patrz Modula-2: dowolna własność może być prywatna, lub może być wyeksportowana do publicznego użytku.

19 K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 19 Dziedziczenie (1) Dziedziczenie umożliwia: zdefiniowanie nowej, bardziej wyspecjalizowanej klasy na podstawie klasy już istniejącej. automatyczny import wszystkich inwariantów (opisu atrybutów, metod, etc.) z klas bardziej ogólnych do klas wyspecjalizowanych. Dziedziczenie umożliwia: zdefiniowanie nowej, bardziej wyspecjalizowanej klasy na podstawie klasy już istniejącej. automatyczny import wszystkich inwariantów (opisu atrybutów, metod, etc.) z klas bardziej ogólnych do klas wyspecjalizowanych. PRACOWNIK NAZWISKO ROK_UR ZAROBEK DZIAŁ OSOBA NAZWISKO ROK_UR Klasa ogólna Klasa wyspecjalizowana OSOBA NAZWISKO ROK_UR PRACOWNIK ZAROBEK DZIAŁ inheritance

20 K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 20 OSOBA NAZWISKO: Nowacki ROK_UR: 1940 OSOBA NAZWISKO: Abacki ROK_UR: 1948 OSOBA NAZWISKO: Nowak ROK_UR: 1951 Dziedziczenie (2) OSOBA NAZWISKO ROK_UR Wiek() PRACOWNIK ZAROBEK DZIAŁ ZarobekNetto() ZmieńZarobek(...) OSOBA NAZWISKO: Kowalska ROK_UR: 1975 PRACOWNIK NAZWISKO: Nowak ROK_UR: 1951 ZAROBEK: 2000 DZIAŁ: zabawki PRACOWNIK NAZWISKO: Abacki ROK_UR: 1948 ZAROBEK: 2500 DZIAŁ: zabawki PRACOWNIK NAZWISKO: Nowacki ROK_UR: 1940 ZAROBEK: 3000 DZIAŁ: sprzedaż Ekstensja OSOBA Ekstensja PRACOWNIK

21 K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 21 Delegacja delegation Lista pierwszy następny ostatni dodaj usuń Stos push pop Lista pierwszy następny ostatni dodaj usuń Stos zawartość push pop Obiekt Stos niepotrzebnie dziedziczy operacje z klasy Lista Obiekt Stos składa się z pod-obiektu zawartość, który z kolei dziedziczy operacje z klasy Lista. Anomalia dziedziczenia jest usunięta. Obsługa obiektu Stos jest (częściowo) oddelegowana do (pod) obiektu Lista. Delegacja: alternatywa dla dziedziczenia. Dziedziczenie w ramach wystąpień obiektów, dziedziczenie dynamiczne. Część własności danego obiektu (np. metody) jest przechowywana w innym obiekcie. Operacje na obiekcie są oddelegowane do innego obiektu.

22 K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 22 Prototypy prototypes Wabi_się: Rex Rasa: jamnik Płeć: M Pies Wabi_się: Mrusia Rasa: nieznana Płeć: Ż Kot Uszy:1 Łapy: 4Ogon: 1 Uszy:2Oczy:2 Ulubieniec Szczepienie() Języki prototypowe (np. Self) nie wprowadzają pojęcia klasy. Obiekt może dziedziczyć cokolwiek z jakiegokolwiek innego obiektu. Języki prototypowe (np. Self) nie wprowadzają pojęcia klasy. Obiekt może dziedziczyć cokolwiek z jakiegokolwiek innego obiektu. Prototyp Podstawowym argumentem zwolenników prototypów jest zmniejszenie liczby pojęć. Koncepcja prototypów jest nieunikniona, jeżeli ktoś chciałby implementować dynamiczne role obiektów. Pojęcie klasy ma jednak ogromne znaczenie dla modelowania pojęciowego, stąd pojęcia prototypu i klasy uzupełniają się. Pojęcie ściśle powiązane z delegacją.

23 K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 23 Dynamiczne (poźne) wiązanie Wiązanie (binding) - zamiana identyfikatora symbolicznego występującego w programie (tj. nazwy) na wartość, adres lub wewnętrzny identyfikator elementu programistycznego (danej, zmiennej, procedury,...) Wczesne (statyczne) wiązanie: przed uruchomieniem programu, podczas kompilacji i konsolid. Zalety: szybkość działania programu, możliwość pełnej statycznej kontroli typów Wady: słaba możliwość komponowania programu z niezależnych składowych, brak możliwości rozbudowy aplikacji podczas jej działania Wczesne (statyczne) wiązanie: przed uruchomieniem programu, podczas kompilacji i konsolid. Zalety: szybkość działania programu, możliwość pełnej statycznej kontroli typów Wady: słaba możliwość komponowania programu z niezależnych składowych, brak możliwości rozbudowy aplikacji podczas jej działania Późne (dynamiczne) wiązanie: w czasie wykonania programu. Zalety: możliwość dynamicznego przesłaniania i polimorfizmu, możliwość komponowania programu z niezależnych składowych, szybkie przechodzenie od nowego pomysłu do efektu Wady: wolniejsze działanie programu, utrudniona kontrola typów Późne (dynamiczne) wiązanie: w czasie wykonania programu. Zalety: możliwość dynamicznego przesłaniania i polimorfizmu, możliwość komponowania programu z niezależnych składowych, szybkie przechodzenie od nowego pomysłu do efektu Wady: wolniejsze działanie programu, utrudniona kontrola typów Późne wiązanie jest nieodzownym warunkiem dla: implementacji komunikatów (polimorfizmu) dynamicznie tworzonych perspektyw dynamicznie tworzonych procedur bazy danych języków zapytań migracji obiektów ewolucji schematu BD dynamic (late) binding

24 K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 24 Wielokrotne dziedziczenie Obiekt dziedziczy inwarianty z więcej niż jednej klasy, które nie są zależne Nazwisko Osoba Pracownik Zarobek Student Nr_indeksu Pracujący_ student AdamBasiaKasia Kazio Jola Krzyś Aga multiple inheritance, multi-inheritance

25 K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 25 Problemy wielokrotnego dziedziczenia Kontrola typu: Jaki będzie wynikowy typ obiektów Amfibia? Najczęściej wielo-dziedziczenie jest konsekwencją braku koncepcji ról Konflikt nazw: Który atrybut max_prędkość ma odziedziczyć amfibia? Czy znaczenie metody prędk_eksploat() zależy od ścieżki dziedziczenia? (O2: mechanizm zmiany nazwy dziedziczonej cechy; Eiffel: konflikt jest traktowany jako błąd.) Pojazd..... prędk_eksploat() Np. prędkość eksploatacyjna wynosi 50% prędkości maksymalnej Pojazd lądowy max_prędkość..... Pojazd wodny max_prędkość..... AmfibiaSamochódJacht

26 K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 26 Role Student jest Osobą Źle! Osoba staje się Studentem Każdy obiekt w czasie swojego życia może nabywać i tracić wiele ról, nie zmieniając swojej tożsamości. Role zmieniają się dynamicznie. Każdy obiekt w czasie swojego życia może nabywać i tracić wiele ról, nie zmieniając swojej tożsamości. Role zmieniają się dynamicznie. Osoba Kowalski Osoba Kowalski Właściciel psa Pracownik Student Pacjent Członek klubu golfowego Kibic Legii Podatnik Rola importuje wartości atrybutów obiektu oraz dziedziczy inwarianty jego klasy Rola może mieć własne (dodatkowe) atrybuty Rola może należeć do własnej klasy

27 K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 27 Role - przykład OSOBA NAZWISKO: Nowacki ROK_UR: 1940 OSOBA NAZWISKO: Abacka ROK_UR: 1948 OSOBA NAZWISKO: Nowak ROK_UR: 1951 OSOBA NAZWISKO ROK_UR Wiek() PRACOWNIK ZAROBEK DZIAŁ ZarobekNetto() ZmieńZarobek(...) OSOBA NAZWISKO: Kowalska ROK_UR: 1975 PRACOWNIK ZAROBEK: 2000 DZIAŁ: zabawki PRACOWNIK ZAROBEK: 2500 DZIAŁ: zabawki STUDENT NR_INDEKSU INDEKS WpiszOcenę(...) ObliczŚredniąOcen() STUDENT NR_INDEKSU: INDEKS: STUDENT NR_INDEKSU: INDEKS: Kowalska: pracownik Nowak: pracownik+student Abacka: Nowacki: student Rola dziedziczy nie tylko inwarianty swojej klasy, lecz także wartości atrybutów swojego obiektu i inwarianty jego klasy.

28 K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 28 Podsumowanie Obiektowość jest nową ideologią, która zmienia myślenie realizatorów SI z zorientowanego na maszynę na zorientowane na człowieka. Obiektowość jest konsekwencją kryzysu oprogramowania: kosztów związanych z oprogramowaniem, jego zawodnością, i trudną do opanowania złożonością. Obiektowość przenika wszelkie fazy projektowania, oraz narzędzia i interfejsy. Obiektowość dopracowała się własnej kolekcji pojęć i narzędzi. Obiektowość jest na początku swojej drogi i musi walczyć z konserwą i spuścizną poprzednich ideologii.


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

Podobne prezentacje


Reklamy Google