1
1
UML – diagramy klas
UML – diagramy klas
cz.2/2
cz.2/2
2
2
Plan wykładu
Plan wykładu
Związki między klasami
Związki między klasami
Konstruowanie diagramu klas
Konstruowanie diagramu klas
Identyfikacja klas metodą DDD
Identyfikacja klas metodą DDD
3
3
Związki między klasami
Związki między klasami
Asocjacje/Powiązania
Asocjacje/Powiązania
Agregacje klas
Agregacje klas
Uogólnienia
Uogólnienia
Interfejsy
Interfejsy
Przykłady diagramów klas
Przykłady diagramów klas
4
4
Asocjacja/Powiązani
Asocjacja/Powiązani
e
e
5
5
Powiązanie
Powiązanie wyraża “równorzędność”
lub “starszeństwo” egzemplarzy.
Dostępne są 4 podstawowe dodatki
do powiązań:
nazwa, rola,
liczebność
(przy każdym końcu)
oraz
agregacja
.
Rola
to zachowanie bytu w
określonym kontekście.
6
6
Powiązanie
Biblioteka
Powiązanie – jest to związek
strukturalny, który wskazuje, że obiekty
jednego elementu są połączone z
obiektami innego.
Książka
1
*
zawier
a
kierunek nawigacji
kierunek nazwy
nazwa
liczebność
Osoba
Przedsiębiorst
wo
pracow
nik
pracodaw
ca
pracuje dla
rola
powiązanie
7
7
Klasa powiązania
klasa powiązania – byt posiadający cechy
klasy i powiązania. Umożliwia zdefiniowanie
właściwości powiązania jeśli są potrzebne.
Przedsiębiorst
wo
*
1..
*
klasa powiązania
pracodaw
ca
Osoba
pracowni
k
Stanowisko
opis
dataZatrudnie
nia
wynagrodzeni
e
8
8
reprezentuje związki między instancjami
klas;
nawigowalność (jednokierunkowa lub
dwukierunkowa). Asocjacji bez strzałek należy
traktować jako dwukierunkowe bądź o nieznanej
nawigowalności (kwestia umowna);
klasy asocjacyjne pozwalają na dodanie
atrybutów, operacji i innych elementów do
asocjacji.
Między dwoma obiektami połączonymi
asocjacją może istnieć tylko jedna instancja
klasy asocjacyjnej
ASOCJACJA/POWIĄZANIE
ASOCJACJA/POWIĄZANIE
9
9
Diagram klas z asocjacjami- przykład
Diagram klas z asocjacjami- przykład
10
10
Zależność
Zależność
Zależności
Zależności
są
są
najprostszym i najsłabszym rodzajem
najprostszym i najsłabszym rodzajem
relacji
relacji
łączących klasy. Oznaczają, że zmiana jednej z
łączących klasy. Oznaczają, że zmiana jednej z
nich w pewien sposób wpływa na drugą, np.
nich w pewien sposób wpływa na drugą, np.
«
«
call
call
»
»
- operacje w klasie A wywołują operacje w
- operacje w klasie A wywołują operacje w
klasie B
klasie B
«
«
create
create
»
»
- klasa A tworzy instancje klasy B
- klasa A tworzy instancje klasy B
«
«
instantiate
instantiate
»
»
- obiekt A jest instancją klasy B
- obiekt A jest instancją klasy B
«
«
use
use
»
»
- do zaimplementowania klasy A
- do zaimplementowania klasy A
wymagana jest
wymagana jest
klasa B
klasa B
A
B
«call»
11
11
Agregacje
Agregacje
klas
klas
12
12
Agregacja klas
Agregacja klas
Agregacja
- związek całość-część, w którym
klasa reprezentuje większy element składający
się z części; wyraża się zależnością „
ma
”:
obiekt-całość ma obiekty-części
Agregacja w tej postaci ma jedynie
znaczenie
pojęciowe
, nie zmienia znaczenia nawigacji,
nie wyznacza zależności między czasem życia
poszczególnych obiektów . Można to
ograniczyć poprzez określenie
kierunku
nawigacji
.
Agregacja całkowita
- charakteryzuje się
relacją wyłącznej własności oraz jednością
czasu życia całości i części. Części o
nieustalonej liczebności mogą powstawać po
utworzeniu całości, ale potem żyją i umierają
razem z całością.
13
13
Agregacja klas
Agregacja klas
Agregacja jest cechą asocjacji.
Agregacja jest cechą asocjacji.
Kompozycja jest lepsza od
Kompozycja jest lepsza od
dziedziczenia.
dziedziczenia.
14
14
Agregacja
Agregacja
Agregacja
Agregacja
reprezentuje relację typu całość-część,
reprezentuje relację typu całość-część,
w której część może należeć do kilku całości, a
w której część może należeć do kilku całości, a
całość nie zarządza czasem istnienia części.
całość nie zarządza czasem istnienia części.
Karta wydawnictwa
Numer w katalogu : String
Autor : String
Tytuł : String
ISBN : String
Data rejestracji : Date
Data usunięcia : Date
Katalog
Sortowanie()
Znajdź()
**
Katalog zawiera karty
wydawnictw, ale nie tworzy ich.
Nie jest ich wyłącznym
właścicielem
15
15
Agregacja całkowita
Okno
agregacja całkowita
– oznacza, że część
biorąca udział w agregacji może należeć tylko
do jednej całości oraz, że o czasie życia części
decyduje całość. Całość musi zadbać o
stworzenie i zniszczenie części. (Czas życia
części <= czasowi życia całości).
Ramka
1
*
agregacja całkowita
PlanszaGry
Pole
1
64
16
16
Agregacje i kompozycje
17
17
Kompozycja
Kompozycja
Kompozycja
Kompozycja
jest relacją typu
jest relacją typu
całość-część
całość-część
, w
, w
której całość jest wyłącznym właścicielem
której całość jest wyłącznym właścicielem
części, tworzy je i zarządza nimi.
części, tworzy je i zarządza nimi.
Książka
Autor : String
Tytuł : String
ISBN : String
Tom
Liczba stron
Numer : Integer
n
n
Książka składa się z tomów. Tom
nie może istnieć bez pojęcia
książki, ani książka bez tomów.
18
18
Uogólnienie
Uogólnienie
19
19
przedstawiane jest jako linia ciągła
zakończona zamkniętym, niewypełnionym
grotem wskazującym przodka;
może posiadać nazwę (gdy model ma wiele
uogólnień – konieczne).
Osoba prywatna
imie : String
nazwisko : String
pesel : String
nr_dowodu : String
nowy()
modyfikuj()
Zrzeszenie
prezes : String
nazwa : String
nowy()
modyfikuj()
Dostawca
nr_konta : String
adres : String
telefon : String
NIP : String
usun()
wyszukaj()
* pokaz()
klasa
podstawowa
liść
uogólnienie
UOGÓLNIENIE
UOGÓLNIENIE
20
20
Interfejsy
Interfejsy
21
21
Interfejsy
Interfejs to zestaw operacji które
wyznaczają usługi oferowane przez
klasę lub komponent.
<<interface>>
ObsługaPołączeniaUR
L
nawiążPołączenie()
analizujURL()
ustawURL()
formaCzytelna()
Interfejs nie posiada argumentów!
Interfejs definiowany jest jako
stereotypowana klasa.
interfejs
22
22
Przykład klasy i interfejsu
Przykład klasy i interfejsu
23
23
Specyfikator interfejsu
specyfikator interfejsu – określa jaki
interfejs udostępnia klasa w danej roli.
Osoba
*
1
specyfikator interfejsu
Przełożony :
IKierownik
Podwładny :
IPracownik
24
24
Przykłady diagramów
Przykłady diagramów
klas
klas
25
25
Diagram klas modelujący zamówienie z katalogu
26
26
Diagram klas dla systemu
Diagram klas dla systemu
informacyjnego uczelni
informacyjnego uczelni
27
27
Diagram klas „organizacja lotów”
Diagram klas „organizacja lotów”
28
28
Konstruowanie diagramu klas
Konstruowanie diagramu klas
Identyfikowanie klas
Identyfikowanie klas
Identyfikacja potencjalnych atrybutów
Identyfikacja potencjalnych atrybutów
Identyfikacja związków generalizacji-
Identyfikacja związków generalizacji-
specjalizacji
specjalizacji
Identyfikacja asocjacji
Identyfikacja asocjacji
29
29
Identyfikowanie klas
Identyfikowanie klas
30
30
Identyfikowanie klas
Identyfikowanie klas
Dobry system powinien opierać się w
Dobry system powinien opierać się w
jak największym stopniu na klasach
jak największym stopniu na klasach
reprezentujących
reprezentujących
byty wyróżnialne w
byty wyróżnialne w
dziedzinie problemowej
dziedzinie problemowej
, a nie na
, a nie na
funkcjonalności, która może się zmienić
funkcjonalności, która może się zmienić
Identyfikacja klas polega na
Identyfikacja klas polega na
wyszukaniu w specyfikacji wymagań
wyszukaniu w specyfikacji wymagań
użytkownika
użytkownika
rzeczowników
rzeczowników
i
i
określenie, które z nich mogą opisywać
określenie, które z nich mogą opisywać
potencjalne klasy
potencjalne klasy
31
31
Przykład klasy
Przykład klasy
Gazeta
Gazeta
, która
, która
może definiować następujące
może definiować następujące
byty
byty
:
:
Konkretny egzemplarz
Konkretny egzemplarz
gazety
gazety
kupiony przez czytelnika;
kupiony przez czytelnika;
Konkretne wydanie
Konkretne wydanie
gazety
gazety
(niezależnie od liczby ezemolarzy);
(niezależnie od liczby ezemolarzy);
Partię egzemplarzy
Partię egzemplarzy
danej gazety
danej gazety
dostarczaną codziennie do kiosku;
dostarczaną codziennie do kiosku;
Tytuł i wydawnictwo
Tytuł i wydawnictwo
niezależnie od
niezależnie od
egzemplarzy i wydań.
egzemplarzy i wydań.
32
32
Kandydata na klasę odrzucamy
Kandydata na klasę odrzucamy
gdy:
gdy:
Jest
Jest
redundantny
redundantny
(istnieją różne rzeczowniki
(istnieją różne rzeczowniki
dla określenia tego samego bytu)
dla określenia tego samego bytu)
Jest
Jest
nieuchwytny
nieuchwytny
(co właściwie oznacza?)
(co właściwie oznacza?)
Oznacza
Oznacza
wydarzenie
wydarzenie
lub
lub
operację
operację
Stanowi wyrażenie
Stanowi wyrażenie
meta
meta
języka
języka
, czyli służy
, czyli służy
do opisywania innych bytów
do opisywania innych bytów
Oznacza coś, co znajduje się na
Oznacza coś, co znajduje się na
zewnątrz
zewnątrz
systemu
systemu
, np. aktorów
, np. aktorów
Oznacza
Oznacza
atrybut
atrybut
, czyli byt prostszy niż
, czyli byt prostszy niż
klasa
klasa
33
33
Identyfikacja potencjalnych
Identyfikacja potencjalnych
atrybutów
atrybutów
34
34
Identyfikacja potencjalnych
Identyfikacja potencjalnych
atrybutów
atrybutów
Rzeczowniki
Rzeczowniki
mogą opisywać nie tylko klasy
mogą opisywać nie tylko klasy
ale
ale
także atrybuty
także atrybuty
Jeśli danemu rzeczownikowi
Jeśli danemu rzeczownikowi
nie można
nie można
przypisać atrybutów ani zachowania
przypisać atrybutów ani zachowania
to taki
to taki
rzeczownik zazwyczaj opisuje
rzeczownik zazwyczaj opisuje
atrybut
atrybut
Rzeczownik opisuje atrybut, jeśli
Rzeczownik opisuje atrybut, jeśli
wyjaśnienie
wyjaśnienie
jego znaczenia wymaga odwołania się do
jego znaczenia wymaga odwołania się do
jakiegoś innego rzeczownika
jakiegoś innego rzeczownika
(oznaczającego
(oznaczającego
obiekt), np. rzeczownik „kolor” zmusza do
obiekt), np. rzeczownik „kolor” zmusza do
zadania pytania „kolor czego”
zadania pytania „kolor czego”
Dla każdego atrybutu należy
Dla każdego atrybutu należy
identyfikować
identyfikować
klasę lub asocjację
klasę lub asocjację
35
35
Identyfikacja związków
Identyfikacja związków
generalizacji-specjalizacji
generalizacji-specjalizacji
36
36
W sytuacji gdy podstawowe klasy
W sytuacji gdy podstawowe klasy
zostały zdefiniowane, należy
zostały zdefiniowane, należy
pogrupować klasy podobne
pogrupować klasy podobne
, dokonać
, dokonać
generalizacji
generalizacji
Po czym „
Po czym „
wyciągnąć przed nawias
wyciągnąć przed nawias
”
”
(tzn. dokonać generalizacji) wszelkie
(tzn. dokonać generalizacji) wszelkie
wspólne własności tych klas i umieścić
wspólne własności tych klas i umieścić
je w
je w
nowo utworzonej klasie
nowo utworzonej klasie
Np.
Np.
Pies
Pies
może być nadklasą dla klas:
może być nadklasą dla klas:
Pekińczyk, Jamnik, Pudel
Pekińczyk, Jamnik, Pudel
Identyfikacja związków
Identyfikacja związków
generalizacji-specjalizacji
generalizacji-specjalizacji
37
37
Identyfikacja
Identyfikacja
asocjacji
asocjacji
38
38
W
W
czasie identyfikacji asocjacji
czasie identyfikacji asocjacji
należy zwracać uwagę na następujące
należy zwracać uwagę na następujące
aspekty modelu
aspekty modelu
:
:
Ścieżka dostępu do obiektu
Ścieżka dostępu do obiektu
Liczność asocjacji
Liczność asocjacji
Atrybuty związane z asocjacjami
Atrybuty związane z asocjacjami
Asocjacje, które nie mogą być
Asocjacje, które nie mogą być
agregacjami, kompozycjami
agregacjami, kompozycjami
Klasy docelowe – czy asocjacja
Klasy docelowe – czy asocjacja
prowadzi do danej klasy, czy też
prowadzi do danej klasy, czy też
raczej do jej podklasy lub nadklasy
raczej do jej podklasy lub nadklasy
39
39
Identyfikacja klas
Identyfikacja klas
metodą DDD
metodą DDD
DDD-Data Driven Design
DDD-Data Driven Design
(Projektowanie diagramu
(Projektowanie diagramu
klas w oparciu o dane )
klas w oparciu o dane )
40
40
Proces przebiega w dwóch
Proces przebiega w dwóch
etapach:
etapach:
Identyfikacja potencjalnych klas poprzez
Identyfikacja potencjalnych klas poprzez
podkreślenie
podkreślenie
wszystkich rzeczowników i
wszystkich rzeczowników i
fraz rzeczowników w tekście wymagań
fraz rzeczowników w tekście wymagań
Odrzucenie
Odrzucenie
niektórych kandydatów i
niektórych kandydatów i
zmiana nazw, o ile wyniknie taka potrzeba
zmiana nazw, o ile wyniknie taka potrzeba
Uwaga
Uwaga
Nazwy powinny być rzeczownikami w
Nazwy powinny być rzeczownikami w
mianowniku liczby pojedynczej
mianowniku liczby pojedynczej
41
41
Przykład tekstu wymagań
Przykład tekstu wymagań
Biblioteka
Biblioteka
posiada
posiada
książki
książki
i
i
czasopisma
czasopisma
. Może być
. Może być
kilka
kilka
egzemplarzy
egzemplarzy
tej samej
tej samej
książki
książki
. Tylko
. Tylko
personel
personel
może wypożyczać
może wypożyczać
czasopisma
czasopisma
.
.
Członek biblioteki
Członek biblioteki
może mieć jednocześnie wypożyczonych 6
może mieć jednocześnie wypożyczonych 6
pozycji
,
,
podczas gdy
podczas gdy
osoba
osoba
pracująca w
pracująca w
bibliotece
bibliotece
może
może
wypożyczyć 12.
wypożyczyć 12.
System
System
ma rejestrować
ma rejestrować
wypożyczenia
wypożyczenia
i
i
zwroty
zwroty
oraz pilnować by przestrzegano wymienionych
oraz pilnować by przestrzegano wymienionych
powyżej
powyżej
reguł (ograniczeń)
reguł (ograniczeń)
Oznaczenia:
Oznaczenia:
Czerwony
Czerwony
- rzeczowniki w tekście wymagań
- rzeczowniki w tekście wymagań
Czerwony z podkreśleniem
Czerwony z podkreśleniem
- klasy
- klasy
Beżowy
Beżowy
- mogą być klasami, atrybutami klas istniejących, albo w postaci
- mogą być klasami, atrybutami klas istniejących, albo w postaci
asocjacji
asocjacji
42
42
Przykład (identyfikacja związków
Przykład (identyfikacja związków
generalizacji)
generalizacji)
Np. Klasa
Np. Klasa
Personel
Personel
i
i
Członek
Członek
biblioteki
biblioteki
mogą dziedziczyć z nowo
mogą dziedziczyć z nowo
utworzonej klasy
utworzonej klasy
Osoba
Osoba
43
43
Przykład (identyfikacja związków
Przykład (identyfikacja związków
asocjacji)
asocjacji)
W tekście wymagań wyszukuje się
W tekście wymagań wyszukuje się
czasowniki
czasowniki
Asocjacje
Asocjacje
pojawiają się także gdy
pojawiają się także gdy
obiekt klasy A musi mieć
obiekt klasy A musi mieć
możliwość dostępu do danych
możliwość dostępu do danych
obiektu klasy B
obiektu klasy B
44
44
Przykład (związki asocjacji)
Przykład (związki asocjacji)
Biblioteka posiada książki i czasopisma.
Biblioteka posiada książki i czasopisma.
Może być kilka
Może być kilka
egzemplarzy tej samej książki
egzemplarzy tej samej książki
. Tylko personel może
. Tylko personel może
wypożyczać
wypożyczać
czasopisma. Członek biblioteki może mieć
czasopisma. Członek biblioteki może mieć
jednocześnie wypożyczonych 6 pozycji, podczas gdy
jednocześnie wypożyczonych 6 pozycji, podczas gdy
osoba pracująca w bibliotece może wypożyczyć 12.
osoba pracująca w bibliotece może wypożyczyć 12.
System ma rejestrować wypożyczenia i zwroty oraz
System ma rejestrować wypożyczenia i zwroty oraz
pilnować by przestrzegano wymienionych powyżej
pilnować by przestrzegano wymienionych powyżej
reguł (ograniczeń).
reguł (ograniczeń).
Asocjacje:
Asocjacje:
-
-
jest egzemplarzem
jest egzemplarzem
(od frazy „może być kilka
(od frazy „może być kilka
egzemplarzy tej samej książki”)
egzemplarzy tej samej książki”)
-
-
Wypożyczyła
Wypożyczyła
(od frazy „wypożyczać”)
(od frazy „wypożyczać”)
45
45
Diagram klas dla biblioteki
46
46
Podsumowanie
Podsumowanie
Związki między klasami
Związki między klasami
Konstruowanie diagramu klas
Konstruowanie diagramu klas
Identyfikacja klas metodą DDD
Identyfikacja klas metodą DDD
47
47
Literatura
1.
1.
Cheesman J., Daniels J.:
Cheesman J., Daniels J.:
Komponenty
Komponenty
w UML,
w UML,
Wydawnictwa Naukowo-
Wydawnictwa Naukowo-
Techniczne
Techniczne
,
,
Warszawa 2004.
Warszawa 2004.
2.
2.
Płodzień J.,Stemposz E.:
Płodzień J.,Stemposz E.:
Analiza i
Analiza i
projektowanie
systemów
projektowanie
systemów
informatycznych.
informatycznych.
Wyd.
PJWSTK.
Wyd.
PJWSTK.
Warszawa 2005.
Warszawa 2005.