background image

Programowanie Obiektowe

Metodyka Obiektowa

Pojęcia podstawowe

A.Gaj

background image

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]

background image

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

background image

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.

background image

PO - Podstawy

W czasie prac nad projektem musimy być 

przygotowani na ustawiczne zmiany.

Powinniśmy też zapewnić wielokrotny 

użytek fragmentów kodu.

background image

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.

background image

PO - Podstawy

Model analizy obiektowej [Yourdon, Coad]

• Warstwa tematów,
• Warstwa klas-i-obiektów,
• Warstwa struktury,
• Warstwa atrybutów,
• Warstwa usług.

background image

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]

background image

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.

background image

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.

background image

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.

background image

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.

background image

PO - Podstawy

Pojęcie klasy

Klasa budowa:

• Nazwa,
• Atrybuty,
• Metody.

background image

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.

background image

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

background image

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

background image

PO - Podstawy

Powiązania pomiędzy klasami – obiektami:

• Dziedziczenia,
• Agregacji,
• Skojarzenia.

background image

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

background image

PO - Podstawy

Dziedziczenie

nadtyp

podtyp

Jednobazowe

ud dziedziczenie

Osoba

Kobieta

Mężczyzna

background image

PO - Podstawy

Dziedziczenie

Wielobazowe

cd dziedziczenie wielobazowe

samochód

jednostka 
pływająca

amfibia

background image

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.

background image

PO - Podstawy

Agregacja

ud agregacja

Auto

Nadwozie

Podwozie

Klima

składa się z

składa się z

może mieć

Kompozycję – oznaczmy czarnym rombem.

background image

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. 

background image

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.

background image

PO - Podstawy

Skojarzenie 

(asocjacja)

ud asocjacja

Auto

Osoba

jest związany z

background image

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

background image

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

background image

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

background image

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

background image

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.

background image

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

św

ia

ta

 r

ze

cz

yw

is

te

go

...

Rys.2. Mechanizm obiektowego postrzegania rzeczywistości

background image

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

background image

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

background image

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
.

background image

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. 

background image

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

.

background image

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,

background image

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

background image

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


Document Outline