Podstawy inżynierii oprogramowania
Związki między klasami
dr inż. Włodzimierz Dąbrowski
Politechnika Warszawska, Wydział Elektryczny
w.dabrowski@ee.pw.edu.pl
Czym jest zwiÄ…zek klas
" Semantyczny związek między dwoma lub
więcej klasami określający zależności
między ich instancjami.
" Związek strukturalny mówiący o tym, że
obiekty jedenj klasy są połączone z
obiektami innej klasy.
Student Plan Kurs
14
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Cechy związków
Związek oznaczany jest linią uzupełnioną o:
" nazwÄ™ zwiÄ…zku,
" role klas,
0..* 0..*
0..* Rejestracja 0..*
Student Wykład
zapisany na
" nawigowalność,
wybrany przez
" krotność,
" uporzÄ…dkowanie.
16
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Kierunek związków
" Kierunek (nawigowalność) związku oznacza, że z obiektów jednej z
klas można bezpośrednio osiągnąć obiekty drugiej.
Klasa po stronie bez grotu jest klientem, a klasa po stronie z grotem jest
serwerem w związku. Klient może korzystać z usług serwera.
Klient posiada wiedzę o serwerze, zatem musi posiadać do niego jakieś
Å‚Ä…cze (wskazanie lub deklaracja zmiennej klasy serwera).
Związki mogą być nawigowalne w obydwie strony - wtedy nie rysuje się
grotów. Uwaga: związek bez grotów może oznaczać brak nawigowalności.
Pojazd Właściciel
1
1
0..*
0..*
Klient Zamówienie
17
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Liczność
" Liczność związku określa liczbę instancji klasy
pozostającej w zależności do JEDNEJ instancji
innej klasy
" Dla każdego związki określa się minimalną i
maksymalną liczbę obiektów lub konkretną wartość
Z każdą instancją klasy Professor może być
skojarzonych wiele instancji klasy CourseOffering
Z każdą instancją klasy CourseOffering może być
skojarzony co najwyżej jedna instancja klasy Professor.
instructor
Professor CourseOffering
0..1 0..*
0..1 0..*
18
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Oznaczenia liczności
Nieznane
Dokładnie jeden
1
Zero lub więcej
0..*
Zero lub więcej
*
1..*
Jeden lub więcej
Zero lub jeden (wartość opcjonalna)
0..1
Zakres 2..4
Kilka zakresów rozłącznych
2, 4..6
19
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Przykład: Liczności związku
1
1
0..*
0..*
Klient
Zamówienie
1..* 0..1
1..* 0..1
Faktura
Zamówienie
Poseł Klub poselski
15..460 0..1
15..460 0..1
21
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Agregacja
" Szczególny typ asocjacji modelujący związek
całość-część.
Agregacja jest związkiem typu jest częścią
czegoÅ›
1
Całość Część
0..1
23
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Przykład: Agregacja
1
1
RegisterForCoursesForm RegistrationController
1
1
0..1
0..1
0..1
1
0..*
Student Schedule CourseOffering
0..* 0..4
24
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Agregacja jako klasa
Aagregacja jest asocjacją: dla obu jej końców są określane
liczności, a także może mieć atrybuty.
*
1..15
Grupa Student
Termin
od
do
25
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Własności agregacji
żð jest relacjÄ… niesymetrycznÄ…,
tzn. jeśli B jest częścią
A
B
A, to A nie jest częścią B
A B C
żð jest relacjÄ… przechodniÄ…
(tranzytywną), tzn. jeśli C jest
częścią B i B jest częścią A, to C
jest częścią A
26
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Kiedy stosować agregację?
żð Kryterium istnienia,
żð Kryterium wstawiania,
żð Kryterium usuwania,
żð Kryterium fizycznej części.
zmień plan
Student
Grupa
*
plan
1..15
plan
zmień plan
Termin
zmień plan
od
do
27
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Kompozycja
" Szczególny typ agregacji narzucający silną
kontrolę własności i czasu życia części przez
całość
" Składniki kompozycji nie istnieją samoistnie i
ginÄ… wraz z kompozytem.
Okno
1
1
1
1
0..2
1
1
Nagłówek Suwak
28
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Agregacja rekursywna 1/3
Obiekt klasy K może zarówno wchodzić w
?
K
skład innych obiektów klasy K, jak i
?
zawierać obiekty klasy K.
:K
0..1
K
:K
0..1
:K
29
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Agregacja rekursywna 2/3
0..1
:K
K
*
:K :K :K
:K :K :K
að Czy można tu zastosować liczność dokÅ‚adnie 1 zamiast 0..1 i liczność 1..* zamiast
liczności * ?
I Część II
0..1
nazwa
1 0..1
materiał
*
Firma Oddział
rozmiary
*
*
bð Dla którego z obu powyższych diagramów możliwość zastosowania kompozycji
wydaje się być bezdyskusyjna?
30
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Agregacja rekursywna 3/3
*
:K
K
*
:K :K :K
:K :K :K
að Jak wyglÄ…daÅ‚by
diagram obiektowy
I
Program II
dla wyrażenia, np.
2-gi operand
1
1
(x + y/2) * (x/3 - y)
*
1-szy operand 1
1..*
Człon
Blok
*
Stała
Wyrażenie Zmienna
Instrukcja Instrukcja
wartość
nazwa
operator binarny
złożona prosta
0..1
*
31
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Asocjacja kwalifikowana
Bank
nr konta
Osoba
0..1 1..*
0..1
Bank
nr konta kwalifikator
1
asocjacji
Osoba
Bank
Osoba
* *
Bank
nr konta
*
Bank/Osoba
0..1
nr konta
Osoba
Kwalifikator jest atrybutem asocjacji (lub zestawem atrybutów), którego wartości
służą do podziału zbioru obiektów definiowanych przez klasę znajdującą się na
drugim końcu asocjacji.
32
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Asocjacja kwalifikowana
WierszZamówienia
1
*
Zamówienie
nazwa produktu
pozycja
ilość
WierszZamówienia
1
0..1
Zamówienie
nazwa produktu
ilość
pozycja
33
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Asocjacja n-arna
Asocjacja n-arna to asocjacja, której wystąpienia łączą n
obiektów, będących instancjami co najwyżej n klas: 3-arna - 3
obiekty (inna nazwa dla tej asocjacji to ternarna), 4-arna - 4 obiekty,
itd. Dana klasa może pojawić się na więcej niż jednej pozycji w
asocjacji.
asocjacja
asocjacja
4-arna
3-arna
K1 K3 K1
nazwa
K3
asocjacji
K2 K2
34
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Role asocjacji
Asocjacje mogą być wyposażone w nazwy ról (przy
końcach asocjacji), np. pracodawca i pracownik.
podwładny
*
pracuje_dla
1..*
*
Osoba
Firma
pracodawca pracownik
0..1
szef
Można opuszczać nazwę asocjacji, gdy jest
oczywista (?) i jest jedynÄ… asocjacjÄ… Å‚Ä…czÄ…cÄ…
dwie klasy.
1 1..*
Firma Pracownik
36
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Role asocjacji
jest_członkiem
* *
Osoba Komitet
jest_przewodniczÄ…cym
1 *
Na diagramie powyżej, dwie asocjacje łączą te same klasy; w takim
wypadku (dwie klasy połączone więcej niż jedną asocjacją)
wszystkie asocjacje muszą być oznaczone.
(2) Do oznaczenia asocjacji można użyć nazwy, dwóch ról lub
jednej roli.
*
Pracownik
0..1
szef
37
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Przykład: Atrybuty asocjacji
Przykład 1
Plik
*
Przykład 2
dostępny Prawo dostępu
dla
dostęp
pracuje_w
Firma
Osoba
{ dostęp oznacza:
1..* 0..1
* nazwa
nazwisko
czytanie lub
szef
Użytkownik adres
czytanie-pisanie} pesel
Zatrudnienie
0..1
adres
zarobek
*
stanowisko
Ocena wydajności
ocena
38
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Kiedy wykorzystywać atrybuty asocjacji?
pracuje_w
Zalecane jest, by przypisywać do klasy
Firma
Osoba
1..*
0..1
tylko te atrybuty, które są dla tej klasy
nazwa
nazwisko
stabilne.
adres
pesel
adres
Eksperyment myślowy: co będzie, jeżeli
Zatrudnienie
liczność asocjacji się zmieni? Dość często
zarobek
okazuje się wtedy, że atrybut jest atrybutem
stanowisko
asocjacji, a nie klasy.
pracuje_w
Firma
Osoba
0..1
1..*
nazwa
nazwisko
Forma nie zalecana, mniej elastyczna:
adres
pesel
np. po zmianie powiÄ…zania na wiele-do-
adres
wielu trzeba zmieniać położenie
zarobek
atrybutów.
stanowisko
39
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Atrybuty i asocjacje pochodne
Własność pochodna jest zdefiniowana poprzez funkcję działającą na jednym lub więcej
bytach modelu, które też mogą być pochodne. Własność pochodna oznaczana jest przez
poprzedzenie jej nazwy ukośnikiem /.
atrybut pochodny: /wiek
Osoba
{wiek = data_bieżąca - data_urodzenia}
data_urodzenia
/wiek
zatrudnia
1 1
* *
Wydział Sekcja Pracownik
*
*
zlokalizowana_w
1
/pracuje_w
1
Budynek
asocjacja pochodna: /pracuje_w
Asocjacja pracuje_w jest asocjacją pochodną, którą można wyznaczyć poprzez
asocjacje zatrudnia i zlokalizowana_w. AsocjacjÄ™ pochodnÄ… oznacza siÄ™ poprzedzajÄ…c
ukośnikiem nazwę lub rolę asocjacji.
40
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
41
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Generalizacja
" Związek między klasami o wspólnej
strukturze i/lub zachowaniu
" Definiuje hierarchie abstrakcji, w której
podklasa dziedziczy z nadklasy
42
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Przykład: Proste dziedziczenie
Ancestor
Account
- balance
- name
Superclass
- number
(parent)
+ withdraw()
+ createStatement()
Generalization
Relationship
Subclasses
Savings Checking
(children)
Descendents
43
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Przykład: Wielodziedziczenie
" Klasa może dziedziczyć z kilku nadklas
FlyingThing Animal
Multiple Inheritance
Airplane Helicopter Bird Wolf Horse
44
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Dziedziczenie
Dziedziczenie pozwala na tworzenie drzewa
klas lub innych struktur bez pętli.
Osoba
Osoba
Pracownik Pracownik
Asystent Adiunkt Docent Profeso Asystent Adiunkt Docent Profeso
r r
45
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
specjalizacja
generalizacja
Dziedziczenie
Osoba
K1 K2
Student Pracownik
K3
Student_asystent
Struktura typu krata
Struktura typu pętla
jest dopuszczalna
jest zabroniona
46
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Dziedziczenie
OSOBA
GRAFIKA
NAZWISKO
ROZMIAR
ROK_UR
Wyświetl(...)
Wiek()
JPEG GIF
STUDENT PRACOWNIK
NR_INDEKSU ZAROBEK
«instance of
WYDZIAA DZIAA
WstawOcenÄ™(...) FOTO
ZaliczSemestr() ZarobekNetto()
ZmieńZarobek(...)
Atrybut PRACOWNIKa
FOTO jest obiektem należącym
do klasy JPEG.
47
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Dziedziczenie
Wyposażenie
nazwa
wytwórca
aspekt specjalizacji
koszt
(dyskryminator)
typ wyposażenia
Pompa
Zbiornik
Wymiennik ciepła
ciśnienie ssania
objętość
powierzchnia wymiany
ciśnienie tłoczenia
ciśnienie
średnica rury
przepływ
typ zbiornika
typ pompy
Dyskryminator jest atrybutem opcjonalnym
48
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Dziedziczenie
Wyposażenie
Wyposażenie
nazwa
nazwa
wytwórca
wytwórca
koszt
koszt
ciśnienie ssania
ciśnienie tłoczenia
typ wyposażenia
przepływ
powierzchnia wymiany
Pompa Wymiennik ciepła
Zbiornik
średnica rury
ciśnienie ssania
powierzchnia wymiany objętość
objętość
ciśnienie tłoczenia
średnica rury ciśnienie
ciśnienie
przepływ
typ wyposażenia
49
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Dziedziczenie wieloaspektowe
2 aspekty: napęd i teren
Pojazd
{overlapping}
teren teren
napęd
{overlapping}
Pojazd Pojazd
Pojazd
Pojazd
wiatrowy silnikowy
lÄ…dowy
wodny
Drzewo
{incomplete}
gatunek drzewa
DÄ…b Brzoza Sosna
50
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Dziedziczenie wielokrotne
Dziedziczenie wielokrotne ma miejsce, gdy klasa dziedziczy inwarianty z więcej niż
jednej klasy.
Osoba
Nazwisko
Student
Pracownik
Zarobek
Nr_indeksu
PracujÄ…cy_
student
51
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Problemy dziedziczenia wielokrotnego
{prędkość eksploatacyjna wynosi
Pojazd
50% prędkości maksymalnej}
Pojazd lÄ…dowy Pojazd wodny
max_prędkość
max_prędkość
prędk_eksploat()
prędk_eksploat()
Samochód Amfibia Jacht
Konflikt nazw: Który atrybut max_prędkość ma odziedziczyć amfibia?
Czy znaczenie metody prędk_eksploat() zależy od ścieżki dziedziczenia?
(O2: mechanizm zmiany nazwy dziedziczonej cechy; Eiffel: konflikt jest traktowany jako błąd.)
Kontrola typu: Jaki będzie wynikowy typ obiektów Amfibia?
Najczęściej wielodziedziczenie jest konsekwencją braku koncepcji ról.
52
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Dziedziczenie dynamiczne
«dynamic
Manager
Kobieta
zawód
Osoba
Inżynier
płeć
Mężczyzna
{mandatory}
Sprzedawca
Dyskryminator zawód zostaÅ‚ tu opatrzony stereotypem «dynamic.
Osoba może zmieniać zawód, co można modelować poprzez tzw. dziedziczenie
dynamiczne. Przydatne dla modelowania koncepcyjnego, ale może być trudne
w implementacji.
mandatory - obowiÄ…zujÄ…cy, obowiÄ…zkowy
W ogólności, dyskryminator dynamiczny może być związany z dziedziczeniem
nierozłącznym (overlapping).
53
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Klasa abstrakcyjna a konkretna (1)
Klasa abstrakcyjna nie ma (nie może mieć) bezpośrednich wystąpień i służy wyłącznie
jako nadklasa dla innych klas. Stanowi jakby wspólną część definicji grupy klas o
podobnej semantyce. UML pozwala na oznaczenie bytu abstrakcyjnego za pomocÄ…
wartości etykietowanej {abstract = TRUE} (TRUE można opuścić) lub napisanie
nazwy bytu abstrakcyjnego italikami (np. nazwy klasy czy metody abstrakcyjnej).
Klasa konkretna może mieć (ma prawo mieć) wystąpienia bezpośrednie.
Sekwencja
Osoba prawna
Klasyczna klasyfikacja w pierwszy
{abstract}
biologii: tylko liście następny
w drzewie klas mogą być
klasami konkretnymi.
Osoba fizyczna Firma
Sekwencja int Sekwencja char
... implementacje ...implementacje
59
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Klasa abstrakcyjna a konkretna (2)
K1
A,K
A - klasa abstrakcyjna
K - klasa konkretna
K2 K3
K A,K
K4 K5
K
K
Klasa abstrakcyjna nie może znalezć się w liściu drzewa.
Klasa konkretna może zająć każde położenie.
60
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
61
W.Dąbrowski Podstawy inżynierii oprogramowania, 2008-04-04
Wyszukiwarka
Podobne podstrony:
Związki między dysmorfofobią i zaburzeniami odżywiania sięArroyo Cykle życia i związki międzyludzkieustawa o umowach miedzynarodowych 14 00Międzynarodowy Program Badań nad Zachowaniami SamobójczymiCoś między namiW6Klucz Odpowiedzi Chemia Nowej Ery III Węgiel i jego związki z wodoremZwiązkowy gen konfliktu J Gardawskiwypadniecie tarczy miedzykregowej w odcinku szyjnym kregosluMiędzy rodzeństwemwięcej podobnych podstron