Projektowanie systemów informacyjnych
description
Transcript of 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
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
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.
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
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
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.
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
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.
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
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
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.
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.
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.
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).
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:
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
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.
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.
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
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
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.
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ą.
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
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
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
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
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.
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.