Projektowanie systemów informacyjnych

28
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

description

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

Transcript of Projektowanie systemów informacyjnych

Page 1: Projektowanie systemów informacyjnych

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łaTechnik Komputerowych, Warszawa

Wykład 2:Wprowadzenie do obiektowości, cz. 2

Page 2: Projektowanie systemów informacyjnych

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

Page 3: Projektowanie systemów informacyjnych

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.

Najważniejsze inwarianty to:

Możliwe są inne inwarianty:

Zdarzenia lub wyjątki, które mogą zajść w operacjach na obiekcieObsługa zdarzeń lub wyjątków (reguły aktywne)Lista eksportowa, określająca, które atrybuty dostępne są z zewnątrzOgraniczenia, którym musi podlegać każdy obiekt......

Nazwa, czyli językowy identyfikator obiektuTyp, czyli statyczna budowa obiektu (atrybuty)Metody, czyli operacje, które można wykonać na obiekcie

classDwa 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.

Page 4: Projektowanie systemów informacyjnych

K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 4

Metody jako inwarianty klasyZwykle, 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.

Numer: 123-4321Stan konta: 34567 PLNWłaściciel: Jan KowalskiUpoważniony:....

WypłaćWpłać

Sprawdźstan

UpoważnijZmień

upoważnienie

Porównajpodpis

Zlikwidujkonto

Nalicz procent

Numer: 999-9999Stan konta: integerWłaściciel: stringUpoważniony:........

Numer: 123-4567Stan konta: 454545 PLNWłaściciel: Adam NowakUpoważniony:....

Klasa wszystkich kont Obiekty KONTO

importinwariantów

methods

Page 5: Projektowanie systemów informacyjnych

K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 5

Podklasa, nadklasaKlasy 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.

OSOBANAZWISKO

ROK_URWiek()

PRACOWNIKZAROBEK

DZIAŁFOTO

ZarobekNetto()ZmieńZarobek(...)

STUDENTNR_INDEKSU

WYDZIAŁWstawOcenę(...)ZaliczSemestr()

JPEG GIF

GRAFIKAROZMIARWyświetl(...)

Atrybut PRACOWNIKaFOTO należy do własnejklasy. Generalnie, strukturaklas może być semantycznie bardziej złożona niż hierarchia.

subclass, superclass

Page 6: Projektowanie systemów informacyjnych

K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 6

Klasa abstrakcyjna, klasa konkretnaabstract 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.

Osoba prawna

Osoba fizyczna Firma

Sekwencja

pierwszynastępny

Sekwencja int

... implementacje

Sekwencja char

...implementacje

Klasyczne klasyfikacjew biologii: tylko liście w drzewie klas mogąbyć klasami konkretnymi.

Page 7: Projektowanie systemów informacyjnych

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

Pracowniknazwisko...zwolnij()...

Samodzielny prac.naukowy

zwolnij()

Decyzja o zwolnieniuw gestii dyrekcji

Decyzja o zwolnieniuw gestii sekretariatu PAN

Metody są różne, choć mają tę samą nazwę.

overriding

Page 8: Projektowanie systemów informacyjnych

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 znaczeniezależ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ównanialiczb 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 zawszeda się wydedukować z tekstu programu.

Page 9: Projektowanie systemów informacyjnych

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.wiek pracownik.zwolnij KONTO.Oblicz_procent

Niektóre metody zawarte w ramach klasy odnoszą się do jej ekstensji:

KL_pracownik.nowy KL_pracownik.zlicz KL_KONTO.Oblicz_sumę

Klasa może miećnie jedno lecz wiele ekstensji.

instance, extent

Page 10: Projektowanie systemów informacyjnych

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.

Generalnie, na linii rozróżnień definicyjnych pomiędzy pojęciami:

• klasa (class)• typ (type)• abstrakcyjny typ danych (abstract data type, ADT)• ekstensja (extent)

panuje spore zamieszanie.

type

Page 11: Projektowanie systemów informacyjnych

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.

Page 12: Projektowanie systemów informacyjnych

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.

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ówmasowych lub je ograniczają (Smalltalk, C++).Systemy przed-obiektowe nie są zgodne z zasadą ortogonalności konstruktorów typu.

Page 13: Projektowanie systemów informacyjnych

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.

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...

Z drugiej strony, mocna statyczna kontrola typu powoduje znaczne zmniejszenie mocyjęzyka programowania i jego elastyczności. (Np. jak napisać procedurę w Pascal’u, 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.

Page 14: Projektowanie systemów informacyjnych

K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 14

Podtypsubtype

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.

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.)

Innym (równoważnym) punktem widzienia na kwestię podtypowania jest założenie, żekażdy obiekt może mieć wiele typów (swojej klasy podstawowej i wszystkich jej superklas).

Page 15: Projektowanie systemów informacyjnych

K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 15

Własność zastępowaniasubstitutability

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:

Page 16: Projektowanie systemów informacyjnych

K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 16

Rozszerzalność systemu typówtype system extensibility

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

Page 17: Projektowanie systemów informacyjnych

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 dwiemetody: 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 specyfikowaniewłasności prywatnych i publicznych.

Page 18: Projektowanie systemów informacyjnych

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ętrznastruktura obiektu

Zewnętrznastruktura obiektu

Wiek()

Patrz Modula-2:dowolna własność możebyć prywatna, lub możebyć “wyeksportowana”do publicznego użytku.

Page 19: Projektowanie systemów informacyjnych

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.

PRACOWNIKNAZWISKO

ROK_URZAROBEK

DZIAŁ

OSOBANAZWISKO

ROK_UR

Klasaogólna

Klasawyspecjalizowana

OSOBANAZWISKO

ROK_UR

PRACOWNIKZAROBEK

DZIAŁ

inheritance

Page 20: Projektowanie systemów informacyjnych

K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 20

OSOBANAZWISKO: Nowacki

ROK_UR: 1940

OSOBANAZWISKO: Abacki

ROK_UR: 1948

OSOBANAZWISKO: Nowak

ROK_UR: 1951

Dziedziczenie (2)OSOBA

NAZWISKOROK_UR

Wiek()

PRACOWNIKZAROBEK

DZIAŁZarobekNetto()

ZmieńZarobek(...)

OSOBANAZWISKO: Kowalska

ROK_UR: 1975

PRACOWNIKNAZWISKO: Nowak

ROK_UR: 1951ZAROBEK: 2000DZIAŁ: zabawki

PRACOWNIKNAZWISKO: Abacki

ROK_UR: 1948ZAROBEK: 2500DZIAŁ: zabawki

PRACOWNIKNAZWISKO: Nowacki

ROK_UR: 1940ZAROBEK: 3000DZIAŁ: sprzedaż

EkstensjaOSOBA

EkstensjaPRACOWNIK

Page 21: Projektowanie systemów informacyjnych

K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 21

Delegacjadelegation

Lista

pierwszynastępnyostatnidodajusuń

Stos

push pop

Lista

pierwszynastępnyostatnidodajusuń

Stoszawartośćpush pop

Obiekt “Stos” niepotrzebnie dziedziczy operacje z klasy “Lista”

Obiekt “Stos” składa się zpod-obiektu “zawartość”, który z kolei dziedziczyoperacje z klasy “Lista”.

Anomalia dziedziczenia jestusunięta. Obsługa obiektu Stosjest (częściowo) oddelegowanado (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.

Page 22: Projektowanie systemów informacyjnych

K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 22

Prototypyprototypes

Wabi_się: Rex

Rasa: jamnik

Płeć: M

PiesWabi_się: Mrusia

Rasa: nieznana

Płeć: Ż

Kot

Uszy:1

Łapy: 4 Ogon: 1

Uszy:2 Oczy:2

Ulubieniec

Szczepienie()

Języki prototypowe (np. Self) niewprowadzają pojęcia klasy. Obiekt może dziedziczyć cokolwiekz 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ą.

Page 23: Projektowanie systemów informacyjnych

K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 23

Dynamiczne (poźne) wiązanieWią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ówWady: 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 efektuWady: 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

Page 24: Projektowanie systemów informacyjnych

K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 24

Wielokrotne dziedziczenieObiekt dziedziczy inwarianty z więcej niż jednej klasy, które nie są zależne

Nazwisko

Osoba

Pracownik

Zarobek

Student

Nr_indeksu

Pracujący_student

Adam Basia Kasia

Kazio

JolaKrzyś

Aga

multiple inheritance, multi-inheritance

Page 25: Projektowanie systemów informacyjnych

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ść eksploatacyjnawynosi 50% prędkości maksymalnej

Pojazd lądowymax_prędkość.....

Pojazd wodnymax_prędkość.....

AmfibiaSamochód Jacht

Page 26: Projektowanie systemów informacyjnych

K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 26

RoleStudent 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.

OsobaKowalski

Właściciel

psa

Pracownik Student Pacjent

Członek klubu

golfowegoKibicLegii

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

Page 27: Projektowanie systemów informacyjnych

K.Subieta. Projektowanie systemów informacyjnych, Wykład 2, Folia 27

Role - przykład

OSOBANAZWISKO: Nowacki

ROK_UR: 1940

OSOBANAZWISKO: Abacka

ROK_UR: 1948

OSOBANAZWISKO: Nowak

ROK_UR: 1951

OSOBANAZWISKO

ROK_URWiek()

PRACOWNIKZAROBEK

DZIAŁZarobekNetto()

ZmieńZarobek(...)

OSOBANAZWISKO: Kowalska

ROK_UR: 1975

PRACOWNIKZAROBEK: 2000DZIAŁ: zabawki

PRACOWNIKZAROBEK: 2500DZIAŁ: zabawki

STUDENTNR_INDEKSU

INDEKSWpiszOcenę(...)

ObliczŚredniąOcen()

STUDENTNR_INDEKSU:223344

INDEKS:......

STUDENTNR_INDEKSU:556677

INDEKS:......

Kowalska: pracownikNowak: pracownik+studentAbacka:Nowacki: student

Rola dziedziczy nie tylko inwarianty swojej klasy, lecz także wartości atrybutów swojego obiektu i inwarianty jego klasy.

Page 28: Projektowanie systemów informacyjnych

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ązanychz 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.