Bartosz Walter
UML cz. I
1
In
ż
ynieria oprogramowania
UML cz. I
Prowadz
ą
cy:
Bartosz Walter
Bartosz Walter
UML cz. I
2
In
ż
ynieria oprogramowania
UML cz. I (2)
Plan wykładów
Zasady skutecznego działania
Specyfikacja wymagań (przypadki użycia)
Przeglądy artefaktów (inspekcje Fagana)
Język UML, cz. I
Język UML, cz. II
Metody formalne (sieci Petriego)
Wzorce projektowe
Zarządzanie konfiguracją (CVS)
Wprowadzenie do testowania
Automatyzacja wykonywania testów (jUnit)
Programowanie Ekstremalne
Ewolucja oprogramowania i refaktoryzacja
Wykład jest pierwszym z dwóch, po
ś
wi
ę
conych j
ę
zykowi modelowania
UML.
Bartosz Walter
UML cz. I
3
In
ż
ynieria oprogramowania
UML cz. I (3)
Agenda
1.Historia i geneza UMLa
2.Koncepcja modeli UML
3.Modelowanie funkcjonalności
4.Diagram klas
5.Diagram obiektów
6.Przykład
Podczas tego wykładu zostanie przedstawione wprowadzenie do j
ę
zyka
UML, jego geneza oraz struktura. Omówione b
ę
d
ą
tak
ż
e dwie
perspektywy UML: przypadków u
ż
ycia oraz logiczna.
Bartosz Walter
UML cz. I
4
In
ż
ynieria oprogramowania
UML cz. I (4)
Historia UML
ok.1990
1995 1996
wł
ą
czenie si
ę
do
prac OMG
UML 1.0
(Rational
Software)
i
UML 1.1
(OMG)
UML 1.5
1997
2000
2004
UML 2.0
UML 1.3
niezale
ż
ne notacje
modelowania:
Booch, Coad/Yourdon,
OMT, OOSE, Fusion
OOPSLA 1995: wersja
0.8
Metody Zunifikowanej
(Booch & Rumbaugh,
Rational Software),
doł
ą
cza Jacobson
2003
2006
UML 2.1
(plan)
W latach 80-tych i na pocz
ą
tku lat 90-tych istniało na rynku wiele notacji i
metodyk modelowania, stosuj
ą
cych elementy o zbli
ż
onej semantyce (np.
klasy), ale całkowicie ró
ż
ni
ą
ce si
ę
sposobem ich reprezentacji. Cz
ęść
z
nich, z uwagi na wcze
ś
niejsze do
ś
wiadczenia ich autorów, zdobyły
wi
ę
ksz
ą
popularno
ść
(np. OOAD, OOSE, OMT, Fusion, metoda Shlaera-
Mellora czy Coada-Yourdona), jednak nadal brak było jednego standardu,
który zaspokajałby wszystkie potrzeby. W wi
ę
kszo
ś
ci były to notacje
niekompletne, obejmuj
ą
ce cz
ęść
problematyki modelowania, i nie
definiuj
ą
ce szczegółowo wielu poj
ęć
.
Dlatego, na pocz
ą
tku lat 90-tych G. Booch (twórca metody OOAD,
kład
ą
cej nacisk na kwestie projektowania i implementacji) i J. Rumaugh
(autor metody OMT, skupiaj
ą
cej si
ę
na modelowaniu dziedziny
przedmiotowej), pracuj
ą
cy dla Rational Software (dzisiaj Rational jest
własno
ś
ci
ą
IBMa) dostrzegli mo
ż
liwo
ść
wzajemnego uzupełnienia swoich
metod i rozpocz
ę
li prace nad Metod
ą
Zunifikowan
ą
, która miała obj
ąć
elementy dotychczas oddzielnych metodyk. Na konferencji OOPSLA w
1995 roku zaprezentowali oni wersj
ę
0.8 Metody Zunifikowanej, a krótko
potem doł
ą
czył do nich inny metodolog - I. Jacobson (twórca metody
OOSE, posiadaj
ą
cej elementy zwi
ą
zane z modelowanie funkcjonalno
ś
ci,
u
ż
ytkowników i cyklu
ż
ycia produktu). W ten sposób powstała "masa
krytyczna", która dawała szans
ę
na opanowanie rynku przez
nowopowstał
ą
metod
ę
. W roku 1996 do prac wł
ą
czyła si
ę
niezale
ż
na
organizacja OMG, której udział dawał szans
ę
na wpływ na UML tak
ż
e
innym firmom, nie tylko Rational Software.
Bartosz Walter
UML cz. I
5
In
ż
ynieria oprogramowania
UML cz. I (5)
Historia UML
ok.1990
1995 1996
wł
ą
czenie si
ę
do
prac OMG
UML 1.0
(Rational
Software)
i
UML 1.1
(OMG)
UML 1.5
1997
2000
2004
UML 2.0
UML 1.3
niezale
ż
ne notacje
modelowania:
Booch, Coad/Yourdon,
OMT, OOSE, Fusion
OOPSLA 1995: wersja
0.8
Metody Zunifikowanej
(Booch & Rumbaugh,
Rational Software),
doł
ą
cza Jacobson
2003
2006
UML 2.1
(plan)
Efektem prac była najpierw wersja 1.0 UML opublikowana przez Rational,
a kilka miesi
ę
cy pó
ź
niej – wersja 1.1, wydana ju
ż
pod egid
ą
OMT. Kolejne
wersje pojawiały si
ę
w odst
ę
pach kilkuletnich, pozwalaj
ą
c na stosowanie
nowych diagramów, uspójniaj
ą
c notacj
ę
i umo
ż
liwiaj
ą
c na modelowanie
nowych dziedzin. Najnowsza wersja UML to 2.0.
Wraz z rozwojem UML zdobył dominuj
ą
c
ą
pozycj
ę
na rynku – poza nim
pozostaj
ą
jedynie notacje zwi
ą
zane z narz
ę
dziami 4GL.
Bartosz Walter
UML cz. I
6
In
ż
ynieria oprogramowania
UML cz. I (6)
Trzej amigos
G. Booch
I. Jacobson
J. Rumbaugh
metoda Boocha
przypadki u
ż
ycia
OMT
Trzej autorzy UMLa: Booch, Jacobson i Rumbaugh zunifikowali swoje
notacje, tworz
ą
c jedn
ą
metod
ę
. Z poszczególnych notacji przej
ę
to
najlepsze rozwi
ą
zania.
Bartosz Walter
UML cz. I
7
In
ż
ynieria oprogramowania
UML cz. I (7)
Czym jest UML?
UML jest
UML nie jest
metodyk
ą
– UML nie okre
ś
la metody
modelowania
– zaleca jedynie stosowanie
podej
ś
cia przyrostowego
narz
ę
dziem
– UML to specyfikacja dla
narz
ę
dzi
notacj
ą
graficzn
ą
– UML okre
ś
la sposób
zapisu modeli
j
ę
zykiem programowania
– generowanie kodu z
modelu stosowane obecnie
na niewielk
ą
skal
ę
Bartosz Walter
UML cz. I
8
In
ż
ynieria oprogramowania
UML cz. I (8)
Konstrukcja UML
notacja
• elementy graficzne
• składnia j
ę
zyka
modelowania
• istotna przy
szkicowaniu modeli
metamodel
• definicje poj
ęć
j
ę
zyka
i powi
ą
zania pomi
ę
dzy
nimi
• istotny przy graficznym
programowaniu
Z punktu widzenia modelowania wa
ż
niejsza jest notacja.
Z punktu widzenia generacji kodu – metamodel.
UML składa si
ę
z dwóch podstawowych elementów:
UML definiuje dwie podstawowe składowe: notacj
ę
poszczególnych
elementów u
ż
ywanych na diagramach, a z drugiej strony – ich semantyk
ę
,
czyli tzw. metamodel. Z punktu widzenia analityka istotniejsze jest
czytelne i jednoznaczne opisanie modelu tak, aby inne osoby mogły
zrozumie
ć
jego znaczenie. Zatem wa
ż
niejsza dla niego jest notacja, za
ś
metamodel powinien by
ć
zrozumiały intuicyjnie. Z kolei przy generowaniu
kodu i przej
ś
ciu do implementacji wa
ż
niejsze jest
ś
cisłe rozumienie
znaczenia poszczególnych elementów, tak, aby mo
ż
liwa była
automatyczna konwersja modelu do innego formalizmu.
Bartosz Walter
UML cz. I
9
In
ż
ynieria oprogramowania
UML cz. I (9)
Perspektywy 4+1
Implementacyjna
Przypadków u
ż
ycia
Logiczna
Procesowa
Wdro
ż
enia
Model
Modelowanie zło
ż
onych systemów jest zadaniem trudnym i anga
ż
uje
wiele osób o ró
ż
nym sposobie postrzegania systemu. Aby uwzgl
ę
dni
ć
te
punktu widzenia, UML jest cz
ę
sto okre
ś
lany jako j
ę
zyk modelowania z
4+1 perspektyw
ą
. Cztery pierwsze opisuj
ą
wewn
ę
trzn
ą
struktur
ę
programu na ró
ż
nych poziomach abstrakcji i szczegółowo
ś
ci. Ostatnia
perspektywa opisuje funkcjonalno
ść
systemu widzian
ą
przez jego
u
ż
ytkowników. Ka
ż
da perspektywa korzysta z własnego zestawu
diagramów pozwalaj
ą
cych czytelnie przedstawi
ć
modelowane
zagadnienie. S
ą
to:
•Perspektywa przypadków u
ż
ycia – opisuje funkcjonalno
ść
, jak
ą
powinien
dostarcza
ć
system, widzian
ą
przez jego u
ż
ytkowników.
•Perspektywa logiczna – zawiera sposób realizacji funkcjonalno
ś
ci,
struktur
ę
systemu widzian
ą
przez projektanta
•Perspektywa implementacyjna – opisuje poszczególne moduły i ich
interfejsy wraz z zale
ż
no
ś
ciami; perspektywa ta jest przeznaczona dla
programisty
•Perspektywa procesowa – zawiera podział systemu na procesy
(czynno
ś
ci) i procesory (jednostki wykonawcze); opisuje wła
ś
ciwo
ś
ci
pozafunkcjonalne systemu i słu
ż
y przede tak
ż
e programistom i
integratorom
•Perspektywa wdro
ż
enia – definiuje fizyczny podział elementów systemu i
ich rozmieszczenie w infrastrukturze; perspektywa taka słu
ż
y integratorom
i instalatorom systemu
Bartosz Walter
UML cz. I
10
In
ż
ynieria oprogramowania
UML cz. I (10)
Diagramy UML
UML obejmuje 13 rodzajów diagramów:
• diagram pakietów
• diagram klas i diagram obiektów
• diagram struktur zło
ż
onych
• diagram komponentów
• diagram wdro
ż
enia
• diagram przypadków u
ż
ycia
• diagram czynno
ś
ci
• diagram maszyny stanowej
• diagramy interakcji (sekwencji,
komunikacji, przegl
ą
du interakcji)
• diagram uwarunkowa
ń
czasowych
modelowanie
strukturalne
modelowanie
behawioralne
W UML zdefiniowano 13 rodzajów diagramów podzielonych na dwie
główne grupy: opisuj
ą
cych struktur
ę
systemu i opisuj
ą
cych zachowanie.
Nie wszystkie s
ą
i musz
ą
by
ć
u
ż
ywane jednocze
ś
nie – zale
ż
y to od
rodzaju i zło
ż
ono
ś
ci modelowanego systemu. Cz
ęść
z nich słu
ż
y do
modelowania tego samego aspektu, jednak uj
ę
tego nieco inaczej, dlatego
dobór rodzajów diagramów zale
ż
y tak
ż
e od preferencji analityka.
Bartosz Walter
UML cz. I
11
In
ż
ynieria oprogramowania
UML cz. I (11)
Diagram przypadków u
ż
ycia
Diagram przypadków u
ż
ycia
• definiuje
granice
modelowanego systemu
• okre
ś
la jego
kontekst
• wymienia
u
ż
ytkowników
systemu i jednostki
zewn
ę
trzne
• przedstawia
funkcje
dost
ę
pne dla
u
ż
ytkowników
• okre
ś
la
powi
ą
zania
i zale
ż
no
ś
ci
pomi
ę
dzy nimi
Rejestracja czytelnika
Bibliotekarz
Przedłu
ż
enie
Zw rot
Wypo
ż
yczenie do czytelni
Wypo
ż
yczenie
Rezerw acja
Wyszukanie
<<include>>
<<include>>
<<inc lude>>
Czytelnik
Diagram przypadków u
ż
ycia (ang. use-case diagram) słu
ż
y do
modelowania aktorów (u
ż
ytkowników systemu, odbiorców efektów pracy
systemu, systemów zewn
ę
trznych) i ich potrzeb w stosunku do
tworzonego systemu. Przypadki u
ż
ycia prezentowane na tym diagramie to
sekwencje czynno
ś
ci, które prowadz
ą
do spełnienia celu przypadku
u
ż
ycia (zaspokojenia pewnej potrzeby u
ż
ytkownika).
Bartosz Walter
UML cz. I
12
In
ż
ynieria oprogramowania
UML cz. I (12)
Aktor
Aktor
• inicjuje wykonanie funkcji systemu
• wymaga dost
ę
pu do systemu
• reprezentuje punkt widzenia na system
• jest osob
ą
fizyczn
ą
, rol
ą
w systemie lub systemem
zewn
ę
trznym
Bibliotekarz
Czytelnik
Zegar
Aktor jest osob
ą
(lub dowoln
ą
inn
ą
jednostk
ą
), która w jaki
ś
sposób
wymienia informacje z systemem, cho
ć
pozostaje poza jego zakresem.
Jest wi
ę
c w szerokim znaczeniu u
ż
ytkownikiem tego systemu, tzn.
żą
da
od systemu wykonania pewnych funkcji i/lub odbiera efekty ich
wykonania. Aktor opisuje rol
ę
, a nie konkretn
ą
osob
ę
lub jednostk
ę
.
Aktorzy mog
ą
by
ć
powi
ą
zani ze sob
ą
relacj
ą
uogólnienia/uszczegółowienia: w ten sposób zachowanie bardziej
ogólnego aktora jest dziedziczone przez aktora bardziej szczegółowego.
Ponadto s
ą
powi
ą
zani z przypadkami u
ż
ycia, z których korzystaj
ą
.
Aktor jest reprezentowany na diagramie przypadków u
ż
ycia w ró
ż
noraki
sposób: jako sylwetka z nazw
ą
aktora, jako prostok
ą
t ze słowem
kluczowym «actor» lub z ikon
ą
.
Przykładami aktorów w systemie bibliotecznym mog
ą
by
ć
Bibliotekarz i
Czytelnik, reprezentuj
ą
cy fizyczne osoby korzystaj
ą
ce z tego systemu, ale
tak
ż
e Zegar, który cyklicznie wysyła komunikat powoduj
ą
cy wyszukanie
ksi
ąż
ek o przekroczonym terminie zwrotu.
Bartosz Walter
UML cz. I
13
In
ż
ynieria oprogramowania
UML cz. I (13)
Przypadek u
ż
ycia
Przypadek u
ż
ycia reprezentuje
kompletn
ą
funkcj
ę
dost
ę
pn
ą
dla
aktora.
Przypadki u
ż
ycia mog
ą
by
ć
powi
ą
zane zale
ż
no
ś
ciami:
• Uszczegółowienie
:
specjalizowana wersja
przypadku u
ż
ycia
• Rozszerzanie
: dodatkowa
funkcjonalno
ść
przypadku
u
ż
ycia
• Zawieranie
: wykonanie
jednego przypadku u
ż
ycia
przez drugi
uszczegółowienie
Powiadomienie
Czytelnik
Wyszukanie
Rezerwacja czasopisma
Rezerwacja
<<extend>>
<<include>>
Rezerwacja ksi
ąż
ki
zawieranie
rozszerzanie
Przypadek u
ż
ycia reprezentuje zamkni
ę
t
ą
i kompletn
ą
funkcjonalno
ść
dost
ę
pn
ą
dla aktora. Zgodnie z definicj
ą
, przypadek u
ż
ycia w UML jest
zdefiniowany jako zbiór akcji wykonywanych przez system, które
powoduj
ą
efekt zauwa
ż
alny dla aktora.
Przypadki u
ż
ycia zawsze musz
ą
by
ć
inicjowane (bezpo
ś
rednio lub przez
zale
ż
no
ś
ci) przez aktora i wykonywane w jego imieniu. Ponadto,
przypadek u
ż
ycia musi dostarcza
ć
pewn
ą
warto
ść
u
ż
ytkownikowi oraz
musi by
ć
kompletny, to znaczy w pełni realizowa
ć
podan
ą
funkcjonalno
ść
oraz dostarcza
ć
wyniki aktorowi.
Przypadki u
ż
ycia komunikuj
ą
si
ę
z aktorami poprzez powi
ą
zania,
pokazuj
ą
ce, który aktor ma dost
ę
p do podanego przypadku u
ż
ycia.
Ponadto mog
ą
by
ć
powi
ą
zane pomi
ę
dzy sob
ą
: relacj
ą
uogólnienia,
rozszerzenia i zawierania.
Bartosz Walter
UML cz. I
14
In
ż
ynieria oprogramowania
UML cz. I (14)
Przykład
Przedłu
ż
enie
Zwrot
Wypo
ż
yczenie do czytelni
Wypo
ż
yczenie
Rezerwacja czasopisma Rezerwacja ksi
ąż
ki
Rezerwacja
Bibliotekarz
Rejestracja czytelnika
Czytelnik
Wyszukanie
<<include>>
<<include>>
<<include>>
Zegar
Powiadomienie
<<extend>>
Przykład przedstawia diagram przypadków u
ż
ycia. Wyst
ę
puje w nim
trzech aktorów: Czytelnik, Bibliotekarz i Zegar. Pierwsi dwaj reprezentuj
ą
role u
ż
ytkowników systemu, natomiast Zegar słu
ż
y do generowania
cyklicznych Powiadomie
ń
.
Czytelnik i Bibliotekarz korzystaj
ą
z przypadków u
ż
ycia. Niektóre z nich,
np. Zwrot lub Wypo
ż
yczenie do czytelni, s
ą
przez nich współdzielone,
natomiast Rejestracja czytelnika i Przedłu
ż
enie s
ą
dost
ę
pne tylko dla
jednego albo drugiego aktora.
Przypadek u
ż
ycia Wyszukanie jest wł
ą
czany do kilku innych przypadków
u
ż
ycia: Rezerwacj
ę
, Wypo
ż
yczenie i Wypo
ż
yczenie do czytelni. W ten
sposób jest on wywoływany w sposób po
ś
redni przez aktora, a
bezpo
ś
rednio przez inny przypadek u
ż
ycia.
Przypadek u
ż
ycia Rezerwacja jest rozszerzany przez Powiadomienie.
Oznacza to,
ż
e Powiadomienie mo
ż
e uczestniczy
ć
w realizacji funkcji
Rezerwacji. Ponadto Rezerwacja posiada dwa szczegółowe przypadki:
Rezerwacj
ę
ksi
ąż
ki i Rezerwacj
ę
czasopisma.
Bartosz Walter
UML cz. I
15
In
ż
ynieria oprogramowania
UML cz. I (15)
Diagram klas
Diagram klas
przedstawia klasy wyst
ę
puj
ą
ce w systemie
i statyczne relacje pomi
ę
dzy nimi wraz z ograniczeniami.
Jest podstawowym diagramem struktury logicznej systemu.
Katalog alfabetyczny
Sortowanie()
Znajd
ź
()
Katalog autorow
Sortowanie()
Znajd
ź
()
Katalog rzeczowy
Sortowanie()
Znajd
ź
()
Ksi
ąż
ka
Autor : String
Tytuł : String
ISBN : String
Czasopismo
Katalog
wydawnictwa : List
...
...
Hi storia
data
operacja
status
do kiedy
Numer w katalogu
Czy tel nik
Pesel : String
Nazwisko : String
Adres : String
Identyfikator : Integer
Imi
ę
: String
Data zapisu : Date
SZABLON IDENTYFIKATORA : String
Rezerwuj()
Wypo
ż
ycz()
(from Use Ca se View)
<<Actor>>
1.. n
1
1.. n
1
Karta wydawni ctwa
Numer w katalogu : String
Autor : String
Tytuł : String
ISBN : String
Data rejestracji : Date
Data usuni
ę
cia : Date
**
0..n
1
0..n
1
Rezerwacja
id_karty
Nr w katalogu
od kiedy
do kiedy
0..n
1
0..n
1
Egzemplarz
Numer w katalogu : String
Identyfikator : String
Wydanie : String
Stron : Integer
1
1
1
1
0..n
1
0..n
1
Diagram klas (ang. class diagram) jest najcz
ęś
ciej u
ż
ywanym diagramem
UML. Z reguły zawiera tak
ż
e najwi
ę
ksz
ą
ilo
ść
informacji i stosuje
najwi
ę
ksz
ą
liczb
ę
symboli.
Na diagramie s
ą
prezentowane klasy, ich atrybuty i operacje, oraz
powi
ą
zania mi
ę
dzy klasami. Diagram klas przedstawia wi
ę
c podział
odpowiedzialno
ś
ci pomi
ę
dzy klasy systemu i rodzaj wymienianych
pomi
ę
dzy nimi komunikatów. Z uwagi na rodzaj i ilo
ść
zawartych na tym
diagramie danych jest on najcz
ęś
ciej stosowany do generowania kodu na
podstawie modelu.
Bartosz Walter
UML cz. I
16
In
ż
ynieria oprogramowania
UML cz. I (16)
Klasa i obiekt
Czyt elnik
Pesel : String
Nazwisk o : String
Adres : String
Identyfikator : Integer
Imi
ę
: String
Data zapisu : Date
SZABLON IDENTYFIKATORA : String
Rezerwuj(wyd : Wydawnictwo)
Wypo
ż
ycz(egz : Egzemplarz)
(from Use Case View)
n
a
z
w
a
o
p
e
ra
c
je
a
tr
y
b
u
ty
Klasa jest reprezentowana przez prostok
ą
t z wydzielonymi przedziałami:
nazw
ą
, atrybutami i operacjami. W celu zwi
ę
kszenia czytelno
ś
ci, dowolny
z nich mo
ż
na ukry
ć
b
ą
d
ź
doda
ć
nowy (np. przechowuj
ą
cy zdarzenia lub
wyj
ą
tki), cho
ć
zwykle s
ą
to wła
ś
nie trzy przedziały. Tradycyjnie nazwa
klasy zaczyna si
ę
z du
ż
ej litery, jest wytłuszczona, a w przypadku klasy
abstrakcyjnej – tak
ż
e pochyła.
Obiekt jest instancj
ą
klasy, podobnie jak w przypadku programowania
obiektowego. Nazwa obiektu jest umieszczana przed nazw
ą
klasy i
oddzielana od niej dwukropkiem.
Cechy klasy reprezentuj
ą
informacj
ę
, jak
ą
klasa przechowuje. Mog
ą
zosta
ć
zapisane w postaci dwóch, w zasadzie równowa
ż
nych notacji: jako
atrybuty klasy (umieszczane w przedziale atrybutów) lub jako relacje
pomi
ę
dzy klasami (zapisywane w postaci linii ł
ą
cz
ą
cej klasy). Zwykle
pierwsza notacja jest stosowana do typów prostych lub obiektów
reprezentuj
ą
cych warto
ś
ci, natomiast druga do typów zło
ż
onych.
Operacje reprezentuj
ą
usługi, jakie klasa oferuje. Ich realizacje – metody
– dostarczaj
ą
implementacji tych usług.
Bartosz Walter
UML cz. I
17
In
ż
ynieria oprogramowania
UML cz. I (17)
Atrybuty klasy
Cechy klasy s
ą
zapisywane w postaci
atrybutów klasy
lub
asocjacji
z innymi klasami. Atrybuty reprezentuj
ą
warto
ś
ci
proste lub niewielkie obiekty, asocjacje – obiekty zło
ż
one
widoczność
nazwa
:
typ
[krotność] {ograniczenia} = wartość dom.
Sk
ą
d atrybut jest
widoczny?
Ile obiektów trzeba i ile
mo
ż
na umie
ś
ci
ć
w
atrybucie?
Jakie dodatkowe warunki
spełniaj
ą
warto
ś
ci atrybutu?
Jaka jest warto
ść
atrybutu, gdy nie
podano jej wprost?
Zwykle atrybut jest opisywany tylko przez dwa elementy: nazw
ę
i typ.
Jednak pełna definicja obejmuje tak
ż
e widoczno
ść
atrybutu, definiuj
ą
c
ą
,
z jakich miejsc systemu atrybut jest dost
ę
pny, krotno
ść
, która okre
ś
la ile
obiektów mie
ś
ci si
ę
w atrybucie, dodatkowe ograniczenia nało
ż
one na
atrybut, i warto
ść
domy
ś
ln
ą
. Elementom, których w definicji atrybutu nie
podano warto
ś
ci, przypisywane s
ą
warto
ś
ci domy
ś
lne (widoczno
ść
prywatna, krotno
ść
1) lub pomija si
ę
je.
Bartosz Walter
UML cz. I
18
In
ż
ynieria oprogramowania
UML cz. I (18)
Poziomy widoczno
ś
ci
UML definiuje
4 poziomy widoczno
ś
ci
cech i metod
• + publiczny
– element jest widoczny z ka
ż
dego miejsca
w systemie
• # chroniony
– element jest widoczny we własnej klasie i
jej podklasach
• – prywatny
– element jest widoczny tylko we własnej
klasie
• ~ publiczny wewn
ą
trz pakietu
– element jest widoczny
tylko wewn
ą
trz własnego pakietu
Podobnie jak w wielu wysokopoziomowych j
ę
zykach programowania,
UML posiada 4 poziomy widoczno
ś
ci: publiczny, chroniony, prywatny i
publiczny wewn
ą
trz pakietu. Poziomy te zwykle słu
żą
do opisywania
widoczno
ś
ci cech (atrybutów i asocjacji) oraz operacji, jednak dotycz
ą
tak
ż
e np. klas pakietów etc.
Bartosz Walter
UML cz. I
19
In
ż
ynieria oprogramowania
UML cz. I (19)
Krotno
ść
Krotno
ść
pozwala okre
ś
li
ć
minimaln
ą
i maksymaln
ą
liczb
ę
obiektów, jakie mo
ż
na powi
ą
za
ć
z dan
ą
cech
ą
:
• dolna granica..górna granica
– przedział od-do
• 1
– dokładnie jeden obiekt
• 0..1
– opcjonalnie jeden obiekt
• 1..*
- przynajmniej jeden obiekt
• 1, 3, 5
– konkretne liczby obiektów
• *
- dowolna liczba obiektów
Krotno
ść
cechy wskazuje, ile obiektów mo
ż
na, a ile trzeba w niej zawrze
ć
.
Krotno
ść
mo
ż
na okre
ś
la
ć
jako ograniczenie dolne i górne, jednak
oczywiste lub powtarzaj
ą
ce si
ę
warto
ś
ci graniczne mo
ż
na pomija
ć
, np..
zapis 0..* jest skracany do *, a zapis 1..1 do 1.
W praktyce programowania istotna jest krotno
ść
0, 1 i dowolna, natomiast
warto
ś
ci dyskretne s
ą
mniej wa
ż
ne, jako szczególne przypadki
wymienionych trzech. W UMLu 2.0 dlatego formalnie usuni
ę
to mo
ż
liwo
ść
podawania dowolnych liczb b
ę
d
ą
cych ograniczeniami, np. 2..4, jednak z
uwagi na czytelno
ść
tego zapisu u
ż
ycie go nie stanowi wielkiego bł
ę
du.
Bartosz Walter
UML cz. I
20
In
ż
ynieria oprogramowania
UML cz. I (20)
Wła
ś
ciwo
ś
ci i ograniczenia atrybutów
Z atrybutem mog
ą
by
ć
zwi
ą
zane dodatkowe
ograniczenia, które okre
ś
laj
ą
jego wła
ś
ciwo
ś
ci, np.:
• {ordered}
– obiekty wewn
ą
trz cechy s
ą
uporz
ą
dkowane
• {unordered}
– obiekty s
ą
nieuporz
ą
dkowane
• {unique}
– obiekty wewn
ą
trz cechy nie powtarzaj
ą
si
ę
• {nonunique}
– obiekty wewn
ą
trz cechy mog
ą
si
ę
powtarza
ć
• {readOnly}
– warto
ść
atrybutu słu
ż
y tylko do odczytu
• {frozen}
– warto
ść
atrybutu nie mo
ż
e by
ć
zmodyfikowana po jej przypisaniu
Niemal ka
ż
dy element w UML mo
ż
e posiada
ć
dodatkowe wła
ś
ciwo
ś
ci i
ograniczenia, które szczegółowo opisuj
ą
jego zachowanie i
przeznaczenie. S
ą
one zapisywane w nawiasach klamrowych. Atrybuty
klasy mo
ż
na oznaczy
ć
jako uporz
ą
dkowane za pomoc
ą
ograniczenia
{sorted}, co oznacza,
ż
e s
ą
one w jaki
ś
sposób (zwykle rosn
ą
co,
leksykograficznie) posortowane. Ograniczenie {unique} wymaga, aby
obiekty pami
ę
tane wewn
ą
trz atrybutu nie powtarzały si
ę
. Wła
ś
ciwo
ść
{readOnly} oznacza atrybut, którego warto
ść
jest przeznaczona wył
ą
cznie
do odczytu, natomiast {frozen} – którego warto
ść
po zdefiniowaniu nie
mo
ż
e by
ć
zmieniona.
Bartosz Walter
UML cz. I
21
In
ż
ynieria oprogramowania
UML cz. I (21)
Wypo
ż
yczenie
Data pocz
ą
tku : Date
Data ko
ń
ca : Date
/ Przekroczone : Boolean
MAX_WYPO
ś
YCZENIE : int
zako
ń
cz()
Atrybuty pochodne
Atrybut pochodny
(wywiedziony) mo
ż
e zosta
ć
obliczony na
podstawie innych atrybutów. Atrybutów pochodnych nie
trzeba implementowa
ć
.
przekroczone = (Data ko
ń
ca.Dni() – Data pocz
ą
tku.Dni()) >
MAX_WYPO
ś
YCZENIE
Atrybuty pochodne (ang. derived) s
ą
zale
ż
ne od innych atrybutów i ich
warto
ś
ci mo
ż
na obliczy
ć
na podstawie tych atrybutów. Cz
ę
sto w fazie
implementacji s
ą
przekształcane w metody lub ich warto
ść
jest obliczana
na bie
żą
co. Nie ma zatem potrzeby ich zapami
ę
tywania w klasie.
Atrybuty pochodne s
ą
oznaczane znakiem '/' umieszczonym przed nazw
ą
atrybutu.
Bartosz Walter
UML cz. I
22
In
ż
ynieria oprogramowania
UML cz. I (22)
Składowe statyczne
Składowe (atrybuty i operacje) statyczne
s
ą
widoczne
tak
ż
e wewn
ą
trz klasy, nie tylko wewn
ą
trz obiektów.
Wypo
ż
yczenie
Data pocz
ą
tku : Date
Data ko
ń
ca : Date
/ Przekroczone : Boolean
MAX_WYPO
ś
YCZENIE : int
zako
ń
cz()
Wypo
ż
yczenie
MAX_WYP O
ś
YCZENIE : int
«instantiates»
W klasie widoczny tylko atrybut statyczny
W obiekcie widoczne wszystkie atrybuty
Klasa
Obiekt
Składowe statyczne w klasie s
ą
widoczne zarówno w klasie, jak i w jej
instancji. Składowe niestatyczne s
ą
widoczne jedynie w obiektach danej
klasy, zatem wymagaj
ą
utworzenia jej instancji.
Składowe statyczne klasy s
ą
oznaczane podkre
ś
leniem jej sygnatury.
Bartosz Walter
UML cz. I
23
In
ż
ynieria oprogramowania
UML cz. I (23)
Operacje
widoczność
nazwa(parametr1, parametr2,...)
:
typ
{ograniczenia}
kierunek
nazwa typ
[krotno
ść
] = warto
ść
dom.
kierunki parametrów:
• in
: wej
ś
ciowy
•
out
: wyj
ś
ciowy
•
inout
: wej
ś
ciowo-wyj
ś
ciowy
•
return
: zwracany z metody
Operacja
to proces, który klasa potrafi wykona
ć
.
Operacje s
ą
opisywane w UMLu podobnie jak atrybuty, oczywi
ś
cie, z
uwzgl
ę
dnieniem listy parametrów i pomini
ę
ciem warto
ś
ci domy
ś
lnej.
Parametry s
ą
zapisywane identycznie jak atrybuty klasy, jednak s
ą
poprzedzone informacj
ą
o kierunku jego przekazania: in, out, inout i
return. Domy
ś
lnym kierunkiem jest wej
ś
ciowy.
Bartosz Walter
UML cz. I
24
In
ż
ynieria oprogramowania
UML cz. I (24)
Wła
ś
ciwo
ś
ci i ograniczenia operacji
Operacje, podobnie jak atrybuty, mog
ą
posiada
ć
dodatkowe wła
ś
ciwo
ś
ci i ograniczenia
:
• {query}
– operacja nie modyfikuje stanu obiektu – jest
zapytaniem
•
«exception»
– metoda mo
ż
e zgłasza
ć
wyj
ą
tek
Definicja operacji wewn
ą
trz klasy przewiduje, podobnie jak w przypadku
atrybutów, mo
ż
liwo
ść
umieszczenia dodatkowych informacji i ogranicze
ń
.
Spo
ś
ród nich najwi
ę
ksze znaczenie ma słowo kluczowe {query}
oznaczaj
ą
ce,
ż
e metoda jedynie zwraca fragment stanu obiektu,
natomiast go nie modyfikuje (czyli nie ma efektu ubocznego). Informacja
taka ma bardzo du
ż
e znaczenie w fazie implementacji.
Podobnie metoda mo
ż
e zgłasza
ć
wyj
ą
tki. Wprawdzie UML nie definiuje
sposobu, w jaki powinna by
ć
oznaczona taka metoda, jednak
powszechnie stosowane jest słowo kluczowe exception wraz z nazw
ą
wyj
ą
tku jako opis klasy wyj
ą
tku, oraz informacja o mo
ż
liwo
ś
ci zgłoszenia
wyj
ą
tku skojarzona z metod
ą
.
Bartosz Walter
UML cz. I
25
In
ż
ynieria oprogramowania
UML cz. I (25)
Warunki wst
ę
pne i ko
ń
cowe
wyszukaj(tytuł: String) : Wydawnictwo[]
post:
wynik != null
wynik instanceof Wydawnictwo[]
pre:
tytuł != null
Warunki wst
ę
pne
• opisuj
ą
stan systemu
wymagany przed
wykonaniem operacji
Warunki ko
ń
cowe
• gwarancje dotycz
ą
ce
stanu systemu po
wykonaniu operacji
Operacj
ę
mo
ż
na tak
ż
e opisywa
ć
przez dwa rodzaje warunków: wst
ę
pne
(ang. preconditions) i ko
ń
cowe (ang. postconditions). Opisuj
ą
one
wymagany i oczekiwany stan fragmentu systemu wymagany odpowiednio
przed i po wykonaniu operacji. Pozwala to na precyzyjniejsze opisane
zadania realizowanego przez metod
ę
, jej wymaga
ń
i efektów jej
wykonania. Projektant ma mo
ż
liwo
ść
wyra
ż
enia poprzez nie, jakie warunki
musz
ą
by
ć
spełnione w celu poprawnego wykonania zadania przez
operacj
ę
.
W tym przykładzie warunkiem wst
ę
pnym poprawnego wykonania operacji
wyszukaj() jest przekazanie niepustego parametru reprezentuj
ą
cego tytuł
wydawnictwa, a warunkiem ko
ń
cowym – zwrócenie warto
ś
ci ró
ż
nej od null
b
ę
d
ą
cej tablic
ą
typu Wydawnictwo. Operacja wyszukaj() nie gwarantuje
okre
ś
lonego rozmiaru zwracanej tablicy.
Bartosz Walter
UML cz. I
26
In
ż
ynieria oprogramowania
UML cz. I (26)
Zale
ż
no
ść
Zale
ż
no
ś
ci
s
ą
najprostszym i najsłabszym rodzajem relacji
ł
ą
cz
ą
cych klasy. Oznaczaj
ą
,
ż
e zmiana jednej z nich w
pewien sposób wpływa na drug
ą
, np.
• «call»
- operacje w klasie A wywołuj
ą
operacje w klasie B
• «create»
- klasa A tworzy instancje klasy B
«instantiate»
- obiekt A jest instancj
ą
klasy B
• «use»
- do zaimplementowania klasy A wymagana jest
klasa B
A
B
«call»
Zale
ż
no
ść
mi
ę
dzy klasami jest najsłabszym typem relacji, jaka mo
ż
e
mi
ę
dzy nimi zaistnie
ć
. Ma ona miejsce wówczas, gdy zmiana definicji
jednej klasy mo
ż
e spowodowa
ć
zmian
ę
drugiej. Oznacza to zwykle,
ż
e
zale
ż
no
ść
jest jednokierunkowa.
Zale
ż
no
ś
ci cz
ę
sto opisuje si
ę
fraz
ą
"...korzysta z...", "...oddziałuje na...",
"...ma wpływ na...", "...tworzy...". Z uwagi na ró
ż
ny rodzaj zale
ż
no
ś
ci,
stosuje si
ę
tzw. słowa kluczowe, które doprecyzowuj
ą
znaczenie
zale
ż
no
ś
ci. Du
ż
a liczba zale
ż
no
ś
ci w nawet niewielkim systemie
powoduje,
ż
e nie warto przedstawia
ć
wszystkich, koncentruj
ą
c si
ę
jedynie
na nieoczywistych, znacz
ą
cych dla zrozumienia diagramu.
Zale
ż
no
ś
ci s
ą
oznaczane lini
ą
przerywan
ą
, a o rodzaju zale
ż
no
ś
ci
decyduje słowo kluczowe umieszczone nad lini
ą
.
Bartosz Walter
UML cz. I
27
In
ż
ynieria oprogramowania
UML cz. I (27)
Asocjacja
Asocjacja
reprezentuje czasowe powi
ą
zanie pomi
ę
dzy
obiektami dwóch klas. Obiekty zwi
ą
zane asocjacj
ą
s
ą
od
siebie niezale
ż
ne.
Asocjacja jest te
ż
u
ż
ywana jako alternatywny (obok
atrybutu) i równorz
ę
dny sposób zapisu cech klasy.
Rezerwacja
id_karty
Nr w katalogu
od kiedy
do kiedy
Czytelnik
Pesel : String
Nazwisko : String
Adres : String
Identyfikator : Integer
Imi
ę
: String
Data zapisu : Date
SZABLON IDENTYFIKATORA : String
Rezerwuj()
Wypo
ż
ycz()
(from Use Case View)
1
0..n
+składa
1
0..n
{od kiedy < do kiedy}
Asocjacje s
ą
silniejszymi relacjami ni
ż
zale
ż
no
ś
ci. Wskazuj
ą
,
ż
e jeden
obiekt jest zwi
ą
zany z innym przez pewien okres czasu. Jednak czas
ż
ycia obu obiektów nie jest od siebie zale
ż
ny: usuni
ę
cie jednego nie
powoduje usuni
ę
cia drugiego.
Relacje asocjacji s
ą
zwykle opisywane frazami "...posiada...", "...jest
wła
ś
cicielem...", jednak ich znaczenie cz
ę
sto jest mylone z inn
ą
relacj
ą
–
agregacj
ą
. W przypadku asocjacji
ż
aden obiekt nie jest wła
ś
cicielem
drugiego: nie tworzy go, nie zarz
ą
dza nim, a moment usuni
ę
cia drugiego
obiektu nie jest z nim zwi
ą
zany. Z drugiej strony, obiekt powi
ą
zany
asocjacj
ą
z drugim posiada referencj
ę
do niego, mo
ż
e si
ę
do niego
odwoła
ć
etc. Asocjacje mog
ą
posiada
ć
nazwy, zwykle w postaci
czasownika, który pozwala przeczyta
ć
w j
ę
zyku naturalnym jej znaczenie,
np. „A posiada B”. Cz
ę
sto pomija si
ę
jedn
ą
z nazw asocjacji
dwukierunkowej, je
ż
eli jest ona jedynie stron
ą
biern
ą
drugiej nazwy, np.
„przechowuje” – „jest przechowywany”.
Asocjacja jest równowa
ż
na atrybutowi: UML nie rozró
ż
nia obiektu, który
jest polem klasy od obiektu i jest z ni
ą
zwi
ą
zany asocjacj
ą
. Warto jednak
przyj
ąć
konwencj
ę
, w której obiekty reprezentuj
ą
ce warto
ś
ci (np. daty)
oraz typy proste (liczby, napisy, znaki) s
ą
modelowane jako atrybuty,
natomiast obiekty dost
ę
pne poprzez referencje – s
ą
przedstawiane
poprzez asocjacje.
Bartosz Walter
UML cz. I
28
In
ż
ynieria oprogramowania
UML cz. I (28)
Nawigowalno
ść
asocjacji
Rezerwacja
Czytelnik
(from Use Case View)
1
0..n
+składa
1
0..n
{od kiedy < do kiedy}
Czytelnik
(from Use Case View)
Rezerwacja
*
1
+dotyczy
+składa
1
*
{do kiedy > od kiedy}
Nawigowalno
ść
okre
ś
la wiedz
ę
o sobie nawzajem
obiektów uczestnicz
ą
cych w relacji.
Czytelnik wie o swoich rezerwacjach.
Rezerwacja nie odwołuje si
ę
do czytelnika
Oba obiekty pozwalaj
ą
na nawigacj
ę
do siebie nawzajem
Asocjacje modeluj
ą
wzgl
ę
dn
ą
równowag
ę
pomi
ę
dzy poł
ą
czonymi nimi
obiektami, jednak nie oznacza to,
ż
e ich wiedza o sobie jest taka sama.
Informacj
ę
o kierunku relacji (czyli który obiekt mo
ż
e odwoła
ć
si
ę
do
drugiego) opisuje kierunek asocjacji (czyli jej nawigowalno
ść
).
Nawigowalno
ść
pomi
ę
dzy klas
ą
A i klas
ą
B oznacza,
ż
e od obiektu klasy
A mo
ż
na przej
ść
do obiektu klasy B, ale nie odwrotnie. Nawigowalno
ść
dwukierunkowa oznacza,
ż
e nawiguj
ą
c od obiektu klasy A do obiektu
klasy B, a nast
ę
pnie z powrotem, w zbiorze wyników mo
ż
na znale
źć
pocz
ą
tkowy obiekt klasy A.
Nawigowalno
ść
oznaczana jest na diagramach strzałk
ą
. W przypadku
nawigowalno
ś
ci dwukierunkowej strzałki pomija si
ę
.
Bartosz Walter
UML cz. I
29
In
ż
ynieria oprogramowania
UML cz. I (29)
Klasa asocjacyjna
Klasy asocjacyjne
s
ą
zwi
ą
zane z relacj
ą
asocjacji i opisuj
ą
jej wła
ś
ciwo
ś
ci.
Maj
ą
dost
ę
p do innych obiektów uczestnicz
ą
cych w relacji
Czytelnik
(from Us e Case View)
Rezerwacja
*
1
+dotyczy
+składa
1
*
Zamówienie
data
kanał
opisuje dat
ę
zło
ż
enia rezerwacji
i kanał (telefon, www)
Klasa asocjacyjna umo
ż
liwia opisanie za pomoc
ą
atrybutów i operacji nie
obiektu, ale wła
ś
nie samej asocjacji pomi
ę
dzy klasami. Informacje
przechowywane w klasie asocjacyjnej nie s
ą
zwi
ą
zane z
ż
adn
ą
z klas
uczestnicz
ą
cych w asocjacji, dlatego wygodnie jest stworzy
ć
dodatkow
ą
klas
ę
i powi
ą
za
ć
j
ą
z relacj
ą
.
Klasy asocjacyjne s
ą
reprezentowane graficznie jako klasy poł
ą
czone lini
ą
przerywan
ą
z relacj
ą
asocjacji, której dotycz
ą
.
Bartosz Walter
UML cz. I
30
In
ż
ynieria oprogramowania
UML cz. I (30)
Asocjacja kwalifikowana
Asocjacja kwalifikowana
pozwala wskaza
ć
, który atrybut
jednej z klas słu
ż
y do zapewnienia unikatowo
ś
ci zwi
ą
zku
(jest jego kwalifikatorem).
Czytelnik
(from Use Case View)
Rezerwacja
id wydawnictwa
*
1
1
*
id wydawnictwa
Czytelnik
(from Use Case View)
Rezerwacja
*
1
1
*
Asocjacja kwalifikowana jest rozszerzeniem zwykłej asocjacji o mo
ż
liwo
ść
okre
ś
lenia, który z atrybutów jednej z klas decyduje o zwi
ą
zku mi
ę
dzy
nimi. Na przykład, składaj
ą
c Rezerwacj
ę
, Czytelnik podaje list
ę
Wydawnictw, które chciałby po
ż
yczy
ć
. Innymi słowy, mi
ę
dzy Rezerwacj
ą
a Czytelnikiem wyst
ę
puje relacja typu wiele-jeden. Jednak w danym
momencie Czytelnik mo
ż
e zarezerwowa
ć
dane Wydawnictwo tylko jeden
raz – i dlatego atrybut id wydawnictwa jest kwalifikatorem tej relacji. W
efekcie pomi
ę
dzy instancj
ą
Czytelnika a instancj
ą
Rezerwacji wyst
ę
puje
relacja jeden-jeden, poniewa
ż
konkretny Czytelnik rezerwuje konkretne
Wydawnictwo w danym momencie tylko raz.
Bartosz Walter
UML cz. I
31
In
ż
ynieria oprogramowania
UML cz. I (31)
Agregacja
Agregacja
reprezentuje 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.
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
Agregacja jest silniejsz
ą
form
ą
asocjacji. W przypadku tej relacji
równowaga mi
ę
dzy powi
ą
zanymi klasami jest zaburzona: istnieje
wła
ś
ciciel i obiekt podrz
ę
dny, które s
ą
ze sob
ą
powi
ą
zane czasem
swojego
ż
ycia. Wła
ś
ciciel jednak nie jest wył
ą
cznym wła
ś
cicielem obiektu
podrz
ę
dnego, zwykle te
ż
nie tworzy i nie usuwa go.
Relacja agregacji jest zaznaczana lini
ą
ł
ą
cz
ą
c
ą
klasy/obiekty, zako
ń
czon
ą
białym rombem po stronie wła
ś
ciciela
Bartosz Walter
UML cz. I
32
In
ż
ynieria oprogramowania
UML cz. I (32)
Kompozycja
Kompozycja
jest relacj
ą
typu
cało
ść
-cz
ęść
, w której
cało
ść
jest wył
ą
cznym wła
ś
cicielem 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.
Kompozycja jest najsilniejsz
ą
relacj
ą
ł
ą
cz
ą
c
ą
klasy. Reprezentuje relacje
cało
ść
-cz
ęść
, w których cz
ęś
ci s
ą
tworzone i zarz
ą
dzane przez obiekt
reprezentuj
ą
cy cało
ść
. Ani cało
ść
, ani cz
ęś
ci nie mog
ą
istnie
ć
bez siebie,
dlatego czasy ich istnienia s
ą
bardzo
ś
ci
ś
le ze sob
ą
zwi
ą
zane i pokrywaj
ą
si
ę
: w momencie usuni
ę
cie obiektu cało
ś
ci obiekty cz
ęś
ci s
ą
równie
ż
usuwane.
Typowa fraza zwi
ą
zana z tak
ą
relacj
ą
to "...jest cz
ęś
ci
ą
...".
Kompozycja jest przedstawiana na diagramie podobnie jak agregacja,
przy czym romb jest wypełniony.
Bartosz Walter
UML cz. I
33
In
ż
ynieria oprogramowania
UML cz. I (33)
Uogólnienie
Uogólnienie
tworzy hierarchi
ę
klas, od ogólnych do
bardziej szczegółowych. Pozwala wył
ą
czy
ć
cz
ęś
ci
wspólne klas.
Katalog
wydawnictwa : List
Sortowanie()
Znajd
ź
()
Katalog alfabetyczny
Sortowanie()
Znajd
ź
()
Kat alog aut orow
Sortowanie()
Znajd
ź
()
Kat alog rzeczowy
Sortowanie()
Znajd
ź
()
Klasa ogólna
Klasy szczegółowe
Uogólnienie posiada ró
ż
ne interpretacje. Na przykład, w modelu
poj
ę
ciowym Katalog jest uogólnieniem Katalogu rzeczowego, je
ż
eli ka
ż
da
instancja Katalogu rzeczowego jest tak
ż
e instancj
ą
Katalogu. Inn
ą
interpretacj
ą
jest zastosowanie zasady podstawiania Liskov (LSP – Liskov
Substitution Principle): w zamian za typ uogólniony mo
ż
na podstawi
ć
typ
pochodny bez konieczno
ś
ci zmiany reszty programu.
Uogólnienie w przypadku klas cz
ę
sto jest traktowane jako synonim
dziedziczenia, podczas gdy dziedziczenie jest tylko mo
ż
liw
ą
technik
ą
uogólniania. Inn
ą
jest np. wykorzystanie interfejsów, które pozwalaj
ą
utworzy
ć
relacj
ę
uogólnienia/uszczegółowienia pomi
ę
dzy typami
(dziedziczenie interfejsu) lub klas
ą
i interfejsem (implementacja interfejsu).
Bartosz Walter
UML cz. I
34
In
ż
ynieria oprogramowania
UML cz. I (34)
Klasyfikacja
Klasyfikacja
okre
ś
la zwi
ą
zek mi
ę
dzy obiektem a jego
typem (klas
ą
).
Obiekt mo
ż
e nale
ż
e
ć
jednocze
ś
nie do wielu typów.
Ksi
ąż
ka
Wydawnictwo
Czasopismo
Ogólne
Specjalizowane
{overlapping, incomplete}
{disjoint, complete}
{overlapping}
– obiekt mo
ż
e
nale
ż
e
ć
do kilku klas
{disjoint}
– obiekt mo
ż
e nale
ż
e
ć
tylko do jednej klasy
{complete}
– nie istnieje wi
ę
cej
podklas
{incomplete}
– mog
ą
powsta
ć
kolejne podklasy
Klasyfikacja obiektu reprezentuje (w odró
ż
nieniu od relacji
uogólnienia/uszczegółowienia) zwi
ą
zek pomi
ę
dzy obiektami a klasami.
Klasyfikacja obiektu okre
ś
la, z którymi typami (klasami) jest powi
ą
zany –
poprzez dziedziczenie, interfejsy etc. Poniewa
ż
obiekt mo
ż
e jednocze
ś
nie
uczestniczy
ć
w wielu niezale
ż
nych klasyfikacjach (a zatem posiada
ć
wiele
typów, niekoniecznie poprzez dziedziczenie), dlatego do szczegółowego
okre
ś
lenia klasyfikacji stosowane s
ą
u
ś
ci
ś
laj
ą
ce słowa kluczowe:
•{overlapping} oznacza,
ż
e obiekt mo
ż
e jednocze
ś
nie nale
ż
e
ć
do kilku
klas/posiada
ć
wiele typów. Na przykład Wydawnictwo, mimo
ż
e posiada
dwie podklasy: Ksi
ąż
ka Czasopismo, mo
ż
e wyst
ą
pi
ć
w postaci ł
ą
cz
ą
cej
obie te cechy. Przeciwie
ń
stwem jest słowo kluczowe {disjoint}, które
narzuca rozł
ą
czno
ść
typów danych
•{complete} oznacza,
ż
e wymienione dotychczas podklasy w ramach
jednej specjalizacji s
ą
wyczerpuj
ą
ce i nie istnieje kategoria, która
znalazłaby si
ę
poza nimi. W przykładzie Wydawnictwo mo
ż
e by
ć
Ogólne
lub Specjalizowane, i nie przewiduje si
ę
istnienia nowej podklasy.
{Incomplete} przewiduje tak
ą
mo
ż
liwo
ść
.
Bartosz Walter
UML cz. I
35
In
ż
ynieria oprogramowania
UML cz. I (35)
Interfejsy i klasy abstrakcyjne
Klasa abstrakcyjna
deklaruje wspóln
ą
funkcjonalno
ść
grupy
klas. Nie mo
ż
e posiada
ć
obiektów i musi definiowa
ć
podklasy.
Interfejs
deklaruje grup
ę
operacji bez podawania ich
implementacji.
wymagany
interfejs
implementowany
interfejs
Katalog
wydawnictwa : List
Sortowanie() : void
Znajd
ź
() : Wydawnictwo
Porównaj()
Sortowalny
Porównaj()
Katalog alfabetyczny
Sortowanie()
Znajd
ź
()
Narz
ę
dzia
sortuj()
<<realizes>>
Celem tworzenia klas abstrakcyjnych i interfejsów jest identyfikacja
wspólnych zachowa
ń
ró
ż
nych klas, które s
ą
realizowane w ró
ż
ny od
siebie sposób. U
ż
ycie tych mechanizmów pozwala na wykorzystanie
relacji uogólniania do ukrywania (hermetyzacji) szczegółów implementacji
poszczególnych klas.
Klasa abstrakcyjna reprezentuje wirtualny byt grupuj
ą
cy wspóln
ą
funkcjonalno
ść
kilku klas. Posiada ona sygnatury operacji (czyli
deklaracje,
ż
e klasy tego typu b
ę
d
ą
akceptowa
ć
takie komunikaty), ale nie
definiuje ich implementacji.
Podobn
ą
rol
ę
pełni interfejs. Ró
ż
nica polega na tym,
ż
e klasa
abstrakcyjna mo
ż
e posiada
ć
implementacje niektórych operacji, natomiast
interfejs jest czysto abstrakcyjny (cho
ć
, oczywi
ś
cie interfejs i klasa w pełni
abstrakcyjna s
ą
poj
ę
ciowo niemal identyczne).
Poniewa
ż
klasy abstrakcyjne nie mog
ą
bezpo
ś
rednio tworzy
ć
swoich
instancji (podobnie jak interfejsy, które z definicji nie reprezentuj
ą
klas, a
jedynie ich typy) dlatego konieczne jest tworzenie ich podklas, które
zaimplementuj
ą
odziedziczone abstrakcyjne metody. W przypadku
interfejsu sytuacja jest identyczna.
Przyj
ę
tym sposobem oznaczania klas i metod abstrakcyjnych jest
zapisywanie ich pochył
ą
czcionk
ą
lub opatrywanie słowem kluczowym
{abstract}.
Bartosz Walter
UML cz. I
36
In
ż
ynieria oprogramowania
UML cz. I (36)
Interfejsy i klasy abstrakcyjne
Klasa abstrakcyjna
deklaruje wspóln
ą
funkcjonalno
ść
grupy
klas. Nie mo
ż
e posiada
ć
obiektów i musi definiowa
ć
podklasy.
Interfejs
deklaruje grup
ę
operacji bez podawania ich
implementacji.
wymagany
interfejs
implementowany
interfejs
Katalog
wydawnictwa : List
Sortowanie() : void
Znajd
ź
() : Wydawnictwo
Porównaj()
Sortowalny
Porównaj()
Katalog alfabetyczny
Sortowanie()
Znajd
ź
()
Narz
ę
dzia
sortuj()
<<realizes>>
W przykładzie Katalog jest klas
ą
abstrakcyjn
ą
posiadaj
ą
c
ą
abstrakcyjne
metody Sortowanie() i Znajd
ź
(). Metody te posiadaj
ą
implementacje w
podklasie Katalog alfabetyczny.
Katalog implementuje interfejs Sortowalny (z metod
ą
Porównaj()), który z
kolei jest wymagany przez klas
ę
pomocnicz
ą
Narz
ę
dzia.
Bartosz Walter
UML cz. I
37
In
ż
ynieria oprogramowania
UML cz. I (37)
Szablony klas
Szablon klasy
okre
ś
la, z jakimi innymi klasami (nie obiektami!)
mo
ż
e współpracowa
ć
podana klasa. Klasy te s
ą
przekazywane
jako jej parametry.
Klasa b
ę
d
ą
ca uszczegółowieniem takiej klasy jest
klas
ą
zwi
ą
zan
ą
.
parametr klasy Lista
ListaWydawnictw
T
Lista
sortuj()
pierwszy()
ostatni()
długo
ść
()
szablon klasy Lista
klasa zwi
ą
zana
«bind»
Szablony klas to poj
ę
cie wywodz
ą
ce si
ę
z j
ę
zyka C++. Oznaczaj
ą
one
klasy, których definicja wymaga podania argumentów b
ę
d
ą
cych innymi
klasami. W ten sposób szablon klasy jest swego rodzaju niepełn
ą
klas
ą
,
która dopiero po ukonkretnieniu mo
ż
e zosta
ć
u
ż
yta. Na przykład, klasa
Lista mo
ż
e przechowywa
ć
obiekty pewnego typu. Typ ten mo
ż
e sta
ć
si
ę
parametrem tej klasy: w ten sposób utworzony zostanie szablon listy dla
potencjalnie dowolnego typu. Klasa stanowi
ą
ca ukonkretnienie szablonu
(ListaWydawnictw) została sparametryzowana (zwi
ą
zana) typem
Wydawnictwo, dzi
ę
ki czemu mo
ż
e by
ć
ju
ż
wykorzystana do tworzenia
obiektów.
Podobn
ą
koncepcj
ę
wprowadzono tak
ż
e do innych j
ę
zyków
programowania, np. Java, pod nazw
ą
typów generycznych.
Bartosz Walter
UML cz. I
38
In
ż
ynieria oprogramowania
UML cz. I (38)
Diagram obiektów
Diagram obiektów
przedstawia mo
ż
liw
ą
konfiguracj
ę
obiektów wyst
ę
puj
ą
cych w systemie.
Relacje pomi
ę
dzy obiektami s
ą
bardziej dynamiczne ni
ż
w
przypadku klas.
Cichy Don: Ksiazka
Autor = M. Szołochow
Egz876: Egzemplarz
Numer w katalogu = 876
Numer wydawnictwa
Rez123 : Rezerwacja
od kiedy = 13-05-2006
do kiedy = 27-05-2006
1
0..n
1
0..n
Kowalski: Czytelnik
PESEL = 65020212345
Nazwisko = Kowalski
Adres = Nijaka 2
OplatyKarne = 10.50
(from Us e Cas e View)
<<Actor>>
1
0..n
1
0..n
Diagram obiektów (ang. object diagram) prezentuje mo
ż
liw
ą
konfiguracj
ę
obiektów w okre
ś
lonym momencie, jest pewnego rodzaju instancj
ą
diagramu klas, w której zamiast klas przedstawiono ich obiekty.
Diagram ten posługuje si
ę
identycznymi symbolami co diagram klas,
jednak, dla odró
ż
nienia obiektów od klas, nazwy instancji s
ą
podkre
ś
lone.
Ponadto, nazwa składa si
ę
z nazwy obiektu i nazwy klasy, oddzielonych
dwukropkiem. Obie cz
ęś
ci nazwy mo
ż
na pomin
ąć
, wi
ę
c aby unikn
ąć
nieporozumie
ń
, jedna cz
ęść
nazwy oznacza nazw
ę
obiektu, a sama
nazwa klasy musi by
ć
zawsze poprzedzona dwukropkiem.
Diagramy obiektów przydaj
ą
si
ę
w przypadku szczególnie
skomplikowanych zale
ż
no
ś
ci, których nie mo
ż
na przedstawi
ć
na
diagramie klas. Wówczas przykładowe konfiguracje obiektów pomagaj
ą
w
zrozumieniu modelu.
Bartosz Walter
UML cz. I
39
In
ż
ynieria oprogramowania
UML cz. I (39)
Diagram struktur zło
ż
onych
Diagram struktur zło
ż
onych
przedstawia wewn
ę
trzn
ą
struktur
ę
obiektu oraz punkty interakcji z innymi obiektami w
systemie.
Katalog
Wyszukiwarka
Baza danych
«defines»
«defines»
Wyszukiwanie
Zarz
ą
dzanie danymi
obiekt zło
ż
ony
cz
ęść
port
interfejs
Diagram struktur zło
ż
onych (ang. composite structure diagram)
przedstawia hierarchicznie wewn
ę
trzn
ą
struktur
ę
zło
ż
onego obiektu z
uwzgl
ę
dnieniem punktów interakcji z innymi cz
ęś
ciami systemu.
Obiekt składa si
ę
z cz
ęś
ci, które reprezentuj
ą
poszczególne składowe
obiektu realizuj
ą
ce poszczególne funkcje obiektu. Komunikacja pomi
ę
dzy
obiektem, a jego
ś
rodowiskiem przebiega poprzez port (oznaczany jako
mały prostok
ą
t umieszczony na kraw
ę
dzi obiektu). Porty s
ą
poł
ą
czone z
cz
ęś
ciami obiektu, które s
ą
odpowiedzialne za realizacje tych funkcji.
Diagramy struktur zło
ż
onych mog
ą
tak
ż
e zawiera
ć
interfejsy wewn
ę
trzne
(równowa
ż
ne klasom w pełni abstrakcyjnym) i interfejsy udost
ę
pnione
(widoczne na zewn
ą
trz obiektu; dziel
ą
si
ę
na interfejsy wymagane i
oferowane).
Bartosz Walter
UML cz. I
40
In
ż
ynieria oprogramowania
UML cz. I (40)
Podsumowanie
• UML powstał w wyniku poł
ą
czenia ró
ż
nych notacji i
metodyk modelowania
• UML opisuje system w postaci 4 perspektyw
wewn
ę
trznych i 1 zewn
ę
trznej
• Diagram przypadków u
ż
ycia opisuje funkcje
systemu i jego u
ż
ytkowników
• Diagram klas okre
ś
la statyczn
ą
struktur
ę
logiczn
ą
systemu
• Diagram obiektów pokazuje mo
ż
liw
ą
konfiguracj
ę
obiektów w systemie
Podczas wykładu przedstawiono genez
ę
j
ę
zyka UML, jego struktur
ę
, oraz
trzy typy diagramów: przypadków u
ż
ycia, klas, obiektów i struktury
zło
ż
onej.