Maszyny wirtualne

Download Report

Transcript Maszyny wirtualne

Diagramy klas w języku UML
Karol Sierpień
Informatyka III rok, studia dzienne
Czym jest UML?
Zunifikowany język modelowania, w skrócie UML (ang. Unified Modelling
Language) jest to rodzina notacji graficznych, oparta na pojedynczym
metamodelu, która służy do opisywania i projektowania systemów
oprogramowania, w szczególności systemów oprogramowania obiektowego.
Języki modelowania graficznego istnieją w informatyce od dawna. Jest to
spowodowane tym, że języki programowania nie są na wystarczająco
wysokim poziomie abstrakcji, aby umożliwiać prowadzenie za ich pomocą
dyskusji na temat projektów.
UML jest względnie otwartym standardem nadzorowanym przez organizację
OMG (ang. Object Management Group) i otwarte konsorcjum firm. OMG
została utworzona w celu budowania standardów umożliwiających
współdziałanie systemów obiektowych. Znana jest między innymi z
przygotowania standardów CORBA.
Rodzaje diagramów
Diagramy struktury:
• Klas
• Obiektów
• Pakietów
• Struktur połączonych
• Wdrożeniowe:
– Komponentów
– Rozlokowania
Diagramy dynamiki:
• Przypadków użycia
• Czynności
• Maszyny stanowej
• Interakcji:
– Sekwencji
– Komunikacji
– Harmonogramowania (lub
Zależności czasowych)
– Sterowania interakcją
Diagramy klas
Diagramy klas, obok diagramów przypadków użycia, zaliczyć należy
do najczęściej stosowanych i zarazem kluczowych rodzajów
diagramów w języku UML. Są one ponadto powszechnie
rozpoznawanym elementem najpopularniejszych metodyk i technik
obiektowych. Przedstawiają statykę systemu, stanowiąc przede
wszystkim podstawę przyszłej obiektowej bazy danych. Główne
elementy diagramów klas mają znaczny wpływ na układ i zawartość
innych diagramów UML.
Diagram klas to graficzne przedstawienie statycznych, deklaratywnych
elementów dziedziny przedmiotowej oraz związków między nimi.
Diagramy klas
W diagramach UML klasę standardowo przedstawia się jako prostokąt
złożony z trzech sekcji:
– nazwy klasy
– zestawu atrybutów
– zestawu operacji
Możliwe kombinacje graficznej prezentacji klas:
– sama nazwa klasy
– nazwa klasy z zestawem atrybutów
– nazwa klasy z zestawem operacji
– nazwa klasy z zestawem atrybutów i operacji
Diagramy klas
W związku z różnorodnością możliwych sposobów specyfikowania klas
należy wyróżnić następujące opcje ich prezentacji graficznej:
– sama nazwa klasy umieszczona w jednosekcyjnym bloku oznacza, że
sekcje atrybutów i operacji zostały wyspecyfikowane, lecz nie są w
sposób jawny zamieszczone w diagramie klas
– alternatywnie, klasę przedstawia się jako blok złożony z trzech sekcji z
nazwą w pierwszej sekcji i niewyspecyfikowanymi atrybutami i
operacjami
– jeśli liczba atrybutów lub operacji jest większa, to ich wyliczanie w
odpowiednich sekcjach można przerwać wielokropkiem, co należy
interpretować jako przypisanie klasie jeszcze innych atrybutów i operacji
– nie wymienionych bezpośrednio w specyfikacji
Diagramy klas – związki
Klasy obiektów – podobnie jak inne elementy języka UML –
powiązane są różnego rodzaju związkami. W diagramach klas
powszechnie stosuje się wszystkie cztery rodzaje związków języka
UML, czyli:
–
–
–
–
asocjacje
uogólnienia
zależności
realizacje
Asocjacja
Asocjacja jest związkiem pomiędzy dwoma lub więcej
klasyfikatorami, opisującym powiązania pomiędzy ich instancjami.
Asocjacja opisuje zbiór powiązań pomiędzy obiektami, tak jak klasa
obiektu – zbiór obiektów stanowiących jej instancje.
Wyróżnia się dwa rodzaje asocjacji:
– binarne
– n-arne
W praktyce dominują asocjacje binarne.
Asocjacja
Zilustrowane na poprzednim rysunku asocjacje opisują w sposób jedynie
elementarny związki między klasami. Pełna semantyczna interpretacja
związku wymaga wprowadzenia szeregu dodatkowych elementów opisu. Tak
więc asocjację można dokładnie sprecyzować poprzez zdefiniowanie jej
następujących cech:
–
–
–
–
–
nazwy
ról powiązanych klas
nawigacji
liczebności
agregacji
Nazwy asocjacji
Podając nazwę asocjacji, określa się istotę danego związku. W celu
uniknięcia nieporozumień przy nazwie asocjacji można podać
kierunek jej odczytu. Istnieje szereg możliwości oznaczania nazw
asocjacji. Mogą one być:
– nienazwane
– nazwane, z opcjonalnym zamieszczeniem znacznika wskazującego
kierunek interpretacji asocjacji
– scharakteryzowane poprzez role klas pełnione w asocjacji
– nazwane i równocześnie scharakteryzowane przez role
Role asocjacji
Każdą asocjację można interpretować dwustronnie poprzez podanie ról
pełnionych przez powiązane ze sobą klasy. Rola asocjacji w związku
binarnym jest powinnością pełnioną przez jedną klasę obiektu wobec
drugiej klasy. W asocjacji n-arnej role można przypisać każdej z
powiązanych ze sobą klas.
Nazwy ról umieszcza się po obydwu stronach asocjacji. Rola spełniana
przez daną klasę lokowana jest bezpośrednio przy klasie określanej.
Nawigacja
Do wykonywania operacji na obiektach poszczególnych
klas niezbędne jest przesyłanie komunikatów pomiędzy
nimi. Dla każdej asocjacji istniejącej pomiędzy klasami
komunikowanie domyślnie odbywa się w obydwu
kierunkach asocjacji. Jest to nawigacja dwukierunkowa.
W praktyce występują sytuacje, w których wskazanie
kierunku nawigacji zwiększa efektywność komunikowania
się. Mamy wtedy do czynienia z nawigacją
jednokierunkową.
Liczebność
Klasom odpowiadają określone liczby obiektów.
Liczebność to specyfikacja zakresu dopuszczalnej liczby
obiektów danej klasy biorących udział w danym związku.
A zatem jest to określenie liczby obiektów jednej klasy,
które wiążą się z jednym obiektem drugiej klasy
znajdującym się po przeciwnej stronie tej samej asocjacji.
Liczebności
1
1..*
0..1
*
0..*
n
1..n
0..n
n..m
n..*
n, m, o..p, q
dokładnie jeden
jeden lub wiele
zero lub jeden
wiele
zero lub wiele
dokładnie n (n>1)
od 1 do n
od 0 do n
od n do m (n,m>1)
więcej niż n
liczebność złożona
Agregacja
Kolejną cechą asocjacji jest agregacja, która opisuje związek całośćczęść pomiędzy klasami. W rzeczywistości istnieje wiele złożonych
obiektów składających się z części, które w połączeniu stanowią
spójną całość. Wyróżnia się dwa rodzaje agregacji:
– agregację całkowitą (kompozycję)
– agregację częściową
Dla wymienionych pojęć używa się alternatywnych nazw.
Kompozycja nazywana jest również agregacją silną lub składową,
natomiast agregacja częściowa – agregacją słabą lub współdzieloną.
Agregacja
W obydwu rodzajach agregacji występują dwa podstawowe pojęcia:
– agregat, czyli obiekt stanowiący całość
– segment, czyli część
W przypadku agregacji całkowitej obiekty-segmenty będące częściami
agregatów nie mogą samodzielnie i niezależnie funkcjonować.
Usunięcie agregatu powoduje automatyczną likwidację wszystkich
segmentów będących jego częściami. Natomiast agregacja częściowa
wskazuje na asocjację, w której usunięcie obiektu będącego agregatem
nie powoduje likwidacji obiektów będących jego częściami, czyli
obiektów-segmentów. Obiekty współdzielone mogą zatem
funkcjonować samodzielnie, niezależnie od agregatu.
Atrybuty i operacje statyczne
W języku UML atrybuty oraz operacje
statyczne (będące właściwością klasy, a nie
obiektu) oznacza się przez podkreślenie
linią ciągłą.
Klasy i operacje abstrakcyjne
Nazwy klas abstrakcyjnych, nie mających
konkretnych instancji obiektów oraz
operacji abstrakcyjnych (nie mających
konkretnej implementacji w danej klasie)
pisane są w diagramach UML kursywą.
Widoczność
Widoczność oznacza poziom dostępności
atrybutów i operacji dla innych klas. W
języku UML stosowane są następujące
poziomy widoczności:
–
–
–
–
Publiczny +
Prywatny –
Chroniony #
Pakietowy ~
Typy wartości oraz wartości
początkowe
Dla atrybutów oraz operacji można po dwukropku określić
ich typy wartości (w przypadku operacji jest to typ
wartości zwracanej przez daną operację).
Dla operacji można również w nawiasach podać typy
wartości argumentów oraz kierunki ich przekazywania (in,
out).
Atrybutom można także nadać wartości początkowe pisząc
je po znaku =
Uogólnienia, dziedziczenie
Za pomocą diagramów UML można przedstawiać
związki dziedziczenia klas.
Klasy na najniższym poziomie hierarchii
nazywane są liśćmi (oznaczenie {leaf}), natomiast
na najwyższym – klasami podstawowymi albo
korzeniami (oznaczenie {root}).
Oznaczenia {leaf} oraz {root} są opcjonalne.
Zależności
Zależność to taki związek pomiędzy dwoma elementami
modelowania, w którym zmiana jednego z nich,
niezależnego, wpływa na drugi, zależny.
Związek ten w diagramach klas odgrywa mniejsze
znaczenie. Oznacza on, że niezależna klasa obiektów
wykorzystuje klasę zależną.
Klasa niezależna jest także nazywana docelową, natomiast
zależna źródłową.
Bibliografia
• Stanisław Wrycza, Bartosz Marcinkowski, Krzysztof
Wyrzykowski – „Język UML 2.0 w modelowaniu
systemów informatycznych”
• Martin Fowler – „UML w kropelce”
• Dokumentacja UML opracowana przez OMG
• Wikipedia