Programowanie Obiektowe
Metodyka Obiektowa
Pojęcia podstawowe
A.Gaj
PO - Podstawy
Wg. Encyklopedii Britannica:
W percepcji świata ludzie używają stale trzech metod
organizacji, które przenikają całe ich myślenie:
• Różnicowanie doznania na poszczególne obiekty i ich
atrybuty – na przykład rozróżnianie między drzewem, a
jego rozmiarami i relacją przestrzenną do innych
obiektów,
• Rozróżnienie między całymi obiektami i ich częściami
składowymi – na przykład, kiedy kontrastuje się drzewo
z gałęziami, z których się ono składa,
• Tworzenie klas obiektów i rozróżnianie ich – na przykład
konstrukcja klasy wszystkich drzew i klasy wszystkich
kamieni oraz rozróżnienie między nimi.
[Britannica, Teoria klasyfikacji,
1986]
PO - Podstawy
Dziedzina problemu i zakres obowiązków systemu
Dziedzina problemu to rozważane pole działania.
np.: zarządzanie przestrzenią powietrzną, lotnictwo,
finanse, ....
System [gr. umieścić razem] zbiór lub ułożenie elementów
tak powiązanych, że tworzą jedność lub ograniczoną całość;
jak na przykład system słoneczny, system nawadniający,
system zasilania.
Odpowiedzialność [gr. wymaganie odpowiedzi] warunek
jakość, fakt lub przykład bycia odpowiedzialnym (w
oryginale więcej synonimów – responsible, answerable,
accountable, liable) co do osoby, urzędu lub długu.
[Webster, 1977]
System – zbiór elementów (obiektów) i powiązań pomiędzy
nimi, dodatkowo wyróżnienie tego zbioru elementów i
powiązań musi mieć swój cel (cel modelowania).
PO - Podstawy
Dziedzina problemu i zakres obowiązków
systemu
Dziedzina problemu to rozważane pole
działania.
Zakres obowiązków (odpowiedzialności)
systemu.
To powiązany w całość zbiór rzeczy, za
które system odpowiada.
PO - Podstawy
W czasie prac nad projektem musimy być
przygotowani na ustawiczne zmiany.
Powinniśmy też zapewnić wielokrotny
użytek fragmentów kodu.
PO - Podstawy
Zasady zarządzania złożonością:
• Abstrakcja,
• Hermetyzacja,
• Dziedziczenie,
• Skojarzenie,
• Komunikacja za pomocą komunikatów,
• Powszechnie występujące metody organizacji: obiekty i
atrybuty, całość i części, klasy i składowe oraz
rozróżnianie między nimi,
• Skala,
• Kategorie zachowania: bezpośrednia przyczynowość,
zmiany w czasie, podobieństwo funkcji.
PO - Podstawy
Model analizy obiektowej [Yourdon, Coad]
• Warstwa tematów,
• Warstwa klas-i-obiektów,
• Warstwa struktury,
• Warstwa atrybutów,
• Warstwa usług.
PO - Podstawy
Pojęcie klasy
Klasa – [łac.] zbiorowisko ludzi lub rzeczy
połączonych podobieństwem lub
wspólnymi cechami.
Obiekt – [łac.] osoba lub rzecz, do której
odnosi się czynność, myśl lub uczucie.
Coś, co jest widoczne lub namacalne;
produkt lub substancja.
[Webster,1977]
PO - Podstawy
Obiekt - jest abstrakcyjnym bytem
reprezentującym lub opisującym pewną rzecz
lub pojęcie obserwowane w świecie
rzeczywistym. Obiekt jest odróżnialny od innych
obiektów, ma nazwę i dobrze określone granice.
PO - Podstawy
Pojęcie klasy
Klasa (class) pojęcie klasy jest używane w
trzech dość bliskich znaczeniach:
• Zbiór obiektów o zbliżonych właściwościach.
• Byt semantyczny rozumiany jako miejsce
przechowywania takich cech grupy podobnych
obiektów, które są dla nich niezmienne (np.
zestaw atrybutów, nazwy, metod, ograniczeń
dostępu).
• Wyrażenie językowe specyfikujące budowę
obiektów, dozwolone operacje na obiektach,
ograniczenia dostępu, wyjątki, itd.
PO - Podstawy
Pojęcie klasy
Obiekty są klasyfikowane zgodnie z podobieństwem
pewnych ich własności oraz podobieństwem sposobów
ich użycia. Niezmienne cechy obiektów (zwane
inwariantami lub niezmiennikami), w szczególności
zestaw atrybutów (wraz z typami) oraz operacje, które
można na nich wykonywać (metody), są zbierane
wewnątrz specjalnego bytu programistycznego
nazywanego klasą. Typy umożliwiają statyczną i
dynamiczną kontrolę poprawności budowy obiektów,
poprawności ich użycia w programach oraz poprawności
użycia operacji przypisanych do obiektów. Obiektowość
zakłada oddzielenie zewnętrznej specyfikacji klasy,
zwanej interfejsem, od jej implementacji.
PO - Podstawy
Pojęcie klasy
Klasa abstrakcyjna (abstract class) klasa
zawierająca własności (atrybuty, metody)
dziedziczone przez jej podklasy, ale nie
posiadająca bezpośrednich wystąpień
obiektów.
PO - Podstawy
Pojęcie klasy
Klasa budowa:
• Nazwa,
• Atrybuty,
• Metody.
PO - Podstawy
Pojęcie klasy
• Metoda obiektu – operacja (jest abstrakcją
programistyczną tej samej kategorii co funkcja i
procedura) związana semantycznie z obiektem,
stanowiąca jego interfejs do otoczenia obiektu
lub będącą operacją wykonywaną na
atrybutach danego obiektu.
• Atrybut obiektu – zmienna zdefiniowana w
ciele klasy; jej wartość, wraz wartościami
innych atrybutów, w konkretnym obiekcie
określa stan tego obiektu.
PO - Podstawy
Pojęcie klasy
Atrybut obiektu:
– Nazwana własność lub wartość przypisana do obiektu
np. Nazwisko („Kowalski”) dla obiektu Pracownik,
– Obiekt będący składową innego obiektu; taki obiekt-
atrybut jest zwykle wystąpieniem swojej własnej
klasy,
– Nazwa przypisana do pewnej wartości
przechowywanej w ramach obiektu, np. nazwa
Nazwisko,
– Wyrażenie składające się z nazwy i typu wartości
przechowywanych wewnątrz pewnej grupy obiektów;
takie wyrażenie jest częścią definicji klasy (typu)
obiektów, np. Nazwisko: string.
PO - Podstawy
Powiązania (relacje) pomiędzy klasami–
obiektami
Relacja (łac.) – stosunek, filoz. byt
niesamodzielny, wiążący 2 byty samodzielne,
wszelki związek lub zależność (stosunek)
między dwoma lub więcej przedmiotami danego
rodzaju, pojęciami, wielkościami.
Relacja – mat. podzbiór iloczynu kartezjańskiego
pewnych dziedzin (zbiorów).
PO - Podstawy
Powiązania pomiędzy klasami – obiektami:
• Dziedziczenia,
• Agregacji,
• Skojarzenia.
PO - Podstawy
Dziedziczenie
Związek pomiędzy klasami obiektów
określający przekazywanie cech (definicji
atrybutów, metod, itd.) z nadklasy do jej
podklas. Dziedziczenie jest podstawowym
mechanizmem sprzyjającym ponownemu
użyciu.
Zachodzi pomiędzy klasami.
Oznacza dla klas potomnych uzyskanie
wszystkich cech klas nadrzędnych (rodziców).
PO - Podstawy
Dziedziczenie
nadtyp
podtyp
Jednobazowe
ud dziedziczenie
Osoba
Kobieta
Mężczyzna
PO - Podstawy
Dziedziczenie
Wielobazowe
cd dziedziczenie wielobazowe
samochód
jednostka
pływająca
amfibia
PO - Podstawy
Agregacja
Związek pomiędzy klasami obiektów
(szczególny przypadek asocjacji), modelujący
stosunek całości do jej części (np. stosunek
samochodu do silnika). Obiekty są powiązane
związkiem agregacji, jeżeli jeden z nich
można uważać za część drugiego, zaś czas i
cykl życia tych obiektów są jednakowe.
Odzwierciedla powiązanie całość-część
pomiędzy klasami-obiektami.
Kompozycja – mocna forma agregacji;
oznacza, że dana część może należeć tylko
do jednej całości i część nie może istnieć bez
całości.
PO - Podstawy
Agregacja
ud agregacja
Auto
Nadwozie
Podwozie
Klima
składa się z
składa się z
może mieć
Kompozycję – oznaczmy czarnym rombem.
PO - Podstawy
Skojarzenie (asocjacja)
Związek pomiędzy klasami obiektów; może
łączyć dwie lub więcej klas (niekoniecznie
różnych). Skojarzenie umożliwia wymianę
komunikatów pomiędzy obiektami klas
skojarzonych.
PO - Podstawy
Komunikat
Sygnał skierowany od obiektu nadawcy do
obiektu odbiorcy, którego efektem jest
wywołanie odpowiedniej metody u
odbiorcy komunikatu, określonej przez
nadawcę. Komunikat może mieć
parametry. Obiekt nadawcy musi „znać”
obiekt odbiorcy, tzn. posiada nazwę lub
adres odbiorcy, aby właściwie
zaadresować komunikat.
PO - Podstawy
Skojarzenie
(asocjacja)
ud asocjacja
Auto
Osoba
jest związany z
PO - Podstawy
Przykład Diagramu Powiązań Klas
cd Use Case View
Auto
Osoba
Nadwozie
Podwozie
Auto terenowe
Kobieta
Mężczyzna
Klima
może mieć
dziedziczy z
składa się z
składa się z
jest związany z
Notacja dla zapisu liczności
związków asocjacji pomiędzy
obiektami
Czytając od
lewej do prawej
A jest zawsze
związane z
jednym B
A jest zawsze
związane z
jednym lub
wieloma B
A jest zawsze
związane z
żadnym lub
jednym B
A jest zawsze
związane z
żadnym, jed-
nym lub
wieloma B
Martin/Odell
Booch (w. 2.0)
Coad/Yourdon
Rumbaugh
(OMT)
Barker (CASE
Method)
A
B
A
B
A
B
A
B
A
B
1
A
B
1..N
A
B
0..
1
A
B
N
A
B
1
A
B
1,m
A
B
0,1
A
B
0,m
A
B
A
B
A
B
1+
A
B
A
B
A
B
A
B
A
B
Zalety podejścia
obiektowego
• Metodyka obiektowa daje projekt bardziej stabilny - odporny na
zmiany - klas-obiektów w porównaniu z funkcjami.
• Metodyka obiektowa posługuje się tymi samymi technikami
(diagramami) we wszystkich fazach wytwarzania aplikacji, co
czyni ją bardziej zrozumiałą dla dużego zespołu projektowego.
• Rzecz najistotniejsza, w metodyce obiektowej dane i procesy są
połączone w klasy - obiekty, nie prowadzi się tu dwóch
projektów: struktur danych i procesów jak to jest w metodyce
strukturalnej.
• Metodyka obiektowa pozwala na stosowanie procesu spiralnego
(przyrostowego) wytwarzania aplikacji, co znakomicie poprawia
komunikację - wzajemne zrozumienie - z użytkownikiem i co za
tym idzie wydatnie skraca czas produkcji aplikacji.
• Dziedziczenie pozwala w metodyce obiektowej na wielokrotne
wykorzystanie fragmentów projektów (klas lub nawet całych
podsystemów).
Metody obiektowe
• Metody obiektowe wynikają z naturalnego
postrzegania świata przez nas. Człowiek
analizuje otoczenie poprzez jego relację
względem otaczających go obiektów.
• Świat nie jest obiektem jednorodnym. Składa
się on z wielu innych obiektów pozostających
w pewnych powiązaniach (relacjach)
względem siebie, funkcjonujących w jego
otoczeniu. Obiektami są na przykład ludzie,
państwa, nacje, domy, miasta, zespoły miast.
Przykładów takich można podać jeszcze
bardzo wiele (zarówno obiektów widocznych
„gołym okiem”, jak i obiektów, których
wyodrębnienie jest mniej oczywiste).
Obiektowa rzeczywistość
woda
w.słodka
w.słona
destylowana
rzeki
jeziora
oceany
ryby
delfiny
akumulatory
lekarstwa
może być
może być
może być
zasila
zasila
zasila
zasila
żyją w nich
żyją w nich
żyją w nich
żyją w nich
napełnia się
można użyć
do produkcji
Przykłady różnych związków pomiędzy obiektami.
Obiektowa rzeczywistość, cd.
• Człowiek postrzega rzeczywistość
stosując klasyfikację obiektów względem
różnych pojęć abstrakcyjnych:
Pojęcie 1
Pojęcie 2
Pojęcie 3
Pojęcie n
postrzeganie
abstrakcyjne
ob
ie
kt
y
św
ia
ta
r
ze
cz
yw
is
te
go
...
Rys.2. Mechanizm obiektowego postrzegania rzeczywistości
Podstawowe terminy
• pojęcie
jest wyobrażeniem lub oznaczeniem,
które stosujemy dla obiektów w naszej
świadomości. Pojęcie będziemy utożsamiać z
typem obiektowym (klasą obiektów)
,
• obiekt
jest egzemplarzem pojęcia,
• dziedzina
jest wybranym obszarem
zainteresowań, który zawiera kolekcję
obiektów będących egzemplarzami
dziedziny,
• specyfikacja dziedziny
jest kolekcją pojęć
odnoszących się do wybranego obszaru
zainteresowań.
Instensja i ekstensja klasy
obiektów
• instensja
typu obiektowego (klasy
obiektów, pojęcia) jest definicją
pojęcia. Jest to pewna koncepcja, idea
stosująca się do określonej grupy
obiektów w naszej świadomości,
• ekstensja
typu obiektowego (klasy
obiektów, pojęcia) to zbiór obiektów
danej klasy (pojęcia).
Klasa obiektów w języku
programowania
• współczesne języki programowania, np.
Pascal, Modula2, C++ czy Java
nazywamy językami programowania
zorientowanymi obiektowo (OOP).
Oznacza to, że do środowiska
nieobiektowego wstawiono tzw.
obiektowe rozszerzenie (object
extention) i w ten sposób umożliwiono
programowanie zgodne z podejściem
obiektowym.
Klasa obiektów w języku
programowania, cd.
• w językach zorientowanych
obiektowo nadrzędną jednostką
programową jest moduł, w którym
umieszczana jest implementacja
typów i zmiennych obiektowych.
• w językach obiektowych
podstawową jednostką
syntaktyczną i semantyczną
programu jest klasa obiektów.
Klasa obiektów w języku
programowania, cd.
• klasa w języku programowania składa
się ze swoich zmiennych i metod.
• atrybuty obiektu umożliwiają
przechowywanie zestawu wartości
określających stan obiektu,
• metody obiektu są jedynym
interfejsem obiektu z jego
otoczeniem. Mówimy wtedy, że
obiekty są hermetyczne
.
Mechanizmy obiektowości
• Obiekt jako dana - wykorzystywane
tak, jak zmienne w językach
programowania,
• Ukrywanie informacji - informacja o
wewnętrznej budowie obiektu nie jest
dostępna poza jego definicją,
• Hermetyzacja - dostęp do obiektu
wyłącznie za pośrednictwem jego
metod,
• Polimorfizm – wielopostaciowość; w terminologii
obiektowej jest to możliwość istnienia wielu metod o tej
samej nazwie, powiązana z możliwością wyboru
konkretnej metody podczas wykonywania (dynamiczne
wiązanie).
• Polimorfizm metod - wielopostaciowość metod
obiektów; oznacza możliwość istnienia w danej klasie
wielu metod o tej samej nazwie rozróżnianych po typie
lub liczbie argumentów; powiązana z możliwością
wyboru konkretnej metody podczas wykonywania
(dynamiczne wiązanie). Często jest utożsamiany z
przesłanianiem i przeciążaniem.
Mechanizmy obiektowości, cd.
• Przesłanianie – odnosi się do sytuacji, gdy
implementacje metod posiadających tą samą nazwę
znajdują się na różnych poziomach hierarchii
dziedziczenia klas. Metoda zdefiniowana na danym
poziomie drzewa klas przesłania metody zdefiniowane
„wyżej” w drzewie dziedziczenia posiadające tą samą
nazwę. Przesłanianie wymaga dynamicznego wiązania.
• Przeciążanie – sytuacja w której ta sama nazwa (lub
symbol) jest użyta dla oznaczenia dwóch lub więcej
funkcji (procedur, operatorów lub metod), rozstrzygnięcie
tej homonimii następuje na podstawie kontekstu jej
użycia (np. typu lub liczby argumentów operacji) .
Mechanizmy obiektowości, cd.