Programowanie obiektowe
1
L
L
a
a
b
b
o
o
r
r
a
a
t
t
o
o
r
r
i
i
u
u
m
m
z
z
p
p
r
r
z
z
e
e
d
d
m
m
i
i
o
o
t
t
u
u
P
P
r
r
o
o
g
g
r
r
a
a
m
m
o
o
w
w
a
a
n
n
i
i
e
e
o
o
b
b
i
i
e
e
k
k
t
t
o
o
w
w
e
e
-
-
z
z
e
e
s
s
t
t
a
a
w
w
0
0
6
6
Cel zajęć. Celem zajęć jest zaprojektowanie związków między klasami na podstawie słownego opisu problemu i ich
implementacja.
Wprowadzenie teoretyczne. Rozważana w ramach niniejszych zajęć tematyka jest ważna, gdyż przed
implementacją danej aplikacji należy zaprojektować jej strukturę w postaci diagramu klas. Aby ze zrozumieniem
zrealizować zadania przewidziane do wykonania w ramach zajęć laboratoryjnych, należy znać znaczenie pojęć:
zależności, asocjacji, agregacji, kompozycji.
1. Relacje zachodzące pomiędzy klasami
Zależność – jest najsłabszym rodzajem powiązania między klasami. Zależność pomiędzy klasami
oznacza, że jedna klasa używa drugiej klasy lub posiada dotyczące niej informacje. Związek ten jest
zazwyczaj krótkotrwały. Zależność występuje, kiedy zmiana specyfikacji jednej z klas może
powodować konieczność wprowadzania zmian w innej klasie. Zależności używa się najczęściej do
pokazania, że jedna klasa używa innej jako parametru jakiejś operacji.
Rys. 6 – Graficzna reprezentacja relacji zależności
Asocjacja – jest silniejszym typem powiązań niż zależność. Oznacza, że jeden obiekt jest związany
z innym przez pewien okres czasu, jednak czas życia obiektów nie jest od siebie zależny (usunięcie
jednego nie powoduje usunięcia drugiego).
Firma
Pracownik
Pracownicy
1
Pracodawca
1..*
3 Pracuje w
Rys. 7 – Graficzna reprezentacja relacji asocjacji
Asocjacja może zawierać nazwę, wraz z kierunkiem asocjacji, role (opcjonalne nazwy zadań klas
w ramach zależności) oraz specyfikację liczebności (liczba obiektów z poszczególnych klas, mogących
kojarzyć się z obiektami innej klasy).
Liczebność może być reprezentowana przez liczby całkowite lub przez przedziały:
0..1 – zero lub jeden obiekt
0..* - od zera do nieograniczonej liczby obiektów (często reprezentowane również w postaci
„*”)
n ..* - od n do nieograniczonej liczby obiektów
m..n – liczba obiektów z przedziału od m do n
Należy pamiętać, że za n i m można również podstawić liczby całkowite.
Agregacja – agregacja jest silniejszą formą asocjacji. Stanowi relację typu całość-część, w której część
może należeć do kilku całości, a całość nie zarządza czasem istnienia części (usunięcie całości nie
powoduje usunięcia części). Obiekt będący całością składa się z określonej liczby
obiektów-składników.
Strona HTML
Obrazy
Rys. 8 – Graficzna reprezentacja relacji asocjacji
Kompozycja (agregacja całkowita) – kompozycja jest najsilniejszym rodzajem powiązania między
klasami. Stanowi relację całość-część, w której części są tworzone i zarządzane przez obiekt
Programowanie obiektowe
2
reprezentujący całość. „Część” może być zaangażowana tylko w jeden związek tego typu w danym
czasie. Czasy życia instancji biorących udział w takim związku są ze sobą powiązane (usunięcie całości
powoduje usunięcie części).
Strona HTML
head
body
Rys. 9 – Graficzna reprezentacja relacji kompozycji
Zadanie 1.
Proszę zaprojektować diagram klas na podstawie słownego opisu problemu. Następnie proszę
o implementację zaprojektowanego diagramu.
Opis problemu:
W pewnym ogrodzie zoologicznym znajdują się trzy rodzaje zwierząt: ssaki, ptaki i gady. O każdym
ze zwierząt gromadzone są informacje na temat gatunku, rodzaju pożywienia oraz pochodzenia zwierzęcia.
Każdy z trzech rodzajów zwierząt posiada też pewne unikatowe cechy i/lub umiejętności.
Ptaki potrafią latać, a informacja o maksymalnej długości lotu ptaka bez odpoczynku wyznaczana
jest na podstawie iloczynu rozpiętości skrzydeł ptaka i jego wytrzymałość. Niektóre gady mogą być
jadowite. W zoo gromadzone są także informacje na temat naturalnego środowiska życia ssaków.
Wszystkie zwierzęta trzymane są w klatkach, które mają pewną określoną pojemność. Klatka może
wymagać posprzątania. Każda klatka jest identyfikowana za pomocą unikatowego numeru.
W zoo zatrudnieni są również opiekunowie, którzy odpowiadają m.in. za sprzątanie klatek. Każdy
z nich może być przydzielony do opieki nad kilkoma klatkami.
Dyrekcja zoo potrzebuje na bieżąco sprawdzać informacje na temat wszystkich klatek wraz ze
szczegółowymi informacjami na temat znajdujących się w nich zwierząt oraz na temat opiekunów
pracujących w zoo.
Dyrekcja może podjąć decyzję o budowie nowej klatki, powiększeniu klatki, zatrudnieniu nowego
pracownika oraz umieszczeniu w klatce nowego zwierzęcia.
Proszę o zaprojektowanie systemu umożliwiającego dyrekcji podjęcie powyższych działań.
Przy ocenie zadania główny nacisk będzie kładziony na:
Utworzony diagram klas.
Implementację.
Wyniki testów.
Na następnych zajęciach odbędzie się kolokwium!!!