background image

Programowanie obiektowe 

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 

background image

Programowanie obiektowe 

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