diagramy uml 2 -...
TRANSCRIPT
Diagramy UML 2.0
Diagram klas
(class diagram)
*.kls *.cld
+ Hurtownia
- nazwa : String
- adres : String
+ Zamówienie
- dataZlozenia : int
+ Platnosc
- suma : float
+ Naleznosc
- terminPlatnosci : int
+ Wplyw
+ zaksieguj()
+ zamówienie 1..*
+ hurtownia 1..1
+ klient
+ zamówienie 1..1
+ platnosc 1..*
+ podst. platnosci
Diagram klas
Podstawowy diagram struktury logicznej systemu
Przedstawia klasy występujące w systemie
i statyczne relacje między nimi
pozwala na sformalizowanie specyfikacji danych
i metod w sposób związany z oprogramowaniem,
ale dotyczący jego zewnętrznego opisu bez
wchodzenia w szczegóły implementacyjne
Diagram klas
Klasę reprezentuje prostokąt, w którym zapisane są kolejno:
Nazwa klasy
Atrybuty klasy
Operacje klasy
Klasy i obiekty
+ Klient
- Pesel : int
- Imie : String
- Nazwisko : String
- Adres : String
+ Zamawiaj()
Cechy klasy są to informacje jakie klasa przechowuje. Przedstawiane są
w postaci atrybutów klasy i relacji między klasami
Operacje reprezentują usługi jakie klasa dostarcza
Diagram klas
Obiekt to instancja klasy
Klasy i obiekty
Klasa jest więc opisem zbioru obiektów o takich samych atrybutach,
związkach i znaczeniu.
+ Kowalski:Klient
- Pesel : int = 12345678901
- Imie : String = Jan
- Nazwisko : String = Kowalski
- Adres : String = Jakas 3/24
+ Zamawiaj()
Diagram klas
Pełne określenie atrybutu klasy posiada składnię:
Atrybuty klasy
[widoczność]nazwa:typ[krotność]{ograniczenia}=wart. domyślna
W UML-u wyróżniono 4 poziomy widoczności
+ publiczny – widoczny z każdego miejsca systemu
# chroniony – widoczny wewnątrz klasy i jej podklas
- prywatny – widoczny tylko wewnątrz własnej klasy
~ publiczny wewnątrz pakietu – widoczny wewnątrz własnego pakietu
Diagram klas
Pełne określenie atrybutu klasy posiada składnię:
Atrybuty klasy
[widoczność]nazwa:typ[krotność]{ograniczenia}=wart. domyślna
Krotność zapisywana jest najczęściej w postaci
dolna granica..górna granica
Przykłady: 1 – dokładnie jeden
0..1 – jeden lub wcale
1..* – przynajmniej jeden
* – dowolna ilość
Diagram klas
Pełne określenie atrybutu klasy posiada składnię:
Atrybuty klasy
[widoczność]nazwa:typ[krotność]{ograniczenia}=wart. domyślna
Najczęściej stosowane ograniczenia to
{ordered} – elementy wewnątrz atrybutu są uporządkowane
{unique} – elementy wewnątrz atrybutu nie mogą się powtarzać
{readOnly} – elementy wewnątrz atrybutu nie mogą być zmieniane
{frozen} – elementy wewnątrz atrybutu, po ustawieniu nie mogą być
ponownie edytowane
Diagram klas
Atrybuty pochodne i statyczne
Atrybut pochodny jest zależny od innych atrybutów i może być wyliczony
na ich podstawie. Oznaczany jest znakiem „/”
Atrybut statyczny jest widoczny zarówno w klasie jak i w jej instancji
podczas gdy inne atrybuty widoczne są wyłącznie w instancjach danej
klasy. Oznaczany jest podkreśleniem nazwy.
+ Paczka
- Adres nadawcy : String
- Adres odbiorcy : String
- Rodzaj : String
- Data wyslania : Date
- Data dostarczenia : Date
- Max termin dostarczenia : int
- /Przetrzymana : boolean = (Data dostarczenia - Data wyslania)>Max termin dostarczenia
Atrybuty klasy
Diagram klas
Operacje to procesy, które klasa potrafi wykonać
Pełne określenie operacji posiada składnię:
Operacje klasy
[widoczność] nazwa(parametr1, parametr2,…) :typ {ograniczenia}
Parametry są zapisywane tak jak atrybuty z dodatkiem informacji
o kierunku przekazania parametru
kierunek nazwa typ[krotność]=wart. domyślna
Dostępne kierunki
in – parametr wejściowy
out – parametr wyjściowy
inout – parametr wejściowo/wyjściowy
return – parametr zwracany przez metodę
Diagram klas
Operacje to procesy, które klasa potrafi wykonać
Pełne określenie operacji posiada składnię:
Operacje klasy
[widoczność] nazwa(parametr1, parametr2,…) :typ {ograniczenia}
Tak samo jak w przypadku atrybutów istnieje możliwość
zdefiniowania dodatkowych ograniczeń i informacji
Podstawowym ograniczeniem jest
{query} – operacja jest zapytaniem. Nie powoduje zmian stanu obiektu
Dodatkowo często oznacza się operacje zgłaszające wyjątki
<<exception>>
Diagram klas
Operacje to procesy, które klasa potrafi wykonać
Pełne określenie operacji posiada składnię:
Operacje klasy
[widoczność] nazwa(parametr1, parametr2,…) :typ {ograniczenia}
Operacje mogą mieć również przypisane warunki wstępny i
końcowy
Warunek wstępny określa w jakim stanie muszą znajdować się pewne
elementy systemu by operacja wykonała się prawidłowo
Np. pre: parametr1 != null
Warunek końcowy określa oczekiwany stan elementu systemu po
wykonaniu operacji
Np. post: wynik != null, wynik instanceof artykuły
Diagram klas
Najsłabszym rodzajem relacji między klasami jest zależność
Zmiana w jednej z klas wpływa „jakoś” na drugą.
Zależność ta jest zwykle jednokierunkowa.
Oznacza się ją przerywaną linią ze strzałką określającą kierunek
relacji
Relacje - zależność
+ Klasa 1 + Klasa 2<<zależność>>
Diagram klas
Relacje - zależność Do typowych zależności należą:
<<call>> - operacje klasy E_1 wywołują operacje klasy E_2
<<create>> – klasa E_1 tworzy instancje klasy E_2
<<instantiate>> – obiekt E_1 jest instancją klasy 2
<<use>> - aby zaimplementować klasę E_1 niezbędna jest klasa E_2
+ E_1 + E_2<<zależność>>
Diagram klas
Relacje - asocjacja Asocjacja reprezentuje czasowe powiązanie między obiektami dwóch klas. Obiekty te jednak są od siebie niezależne.
Ich czas życia może być różny. Asocjacja jest równorzędnym do atrybutu sposobem zapisu cech klasy
+ Klient
- Nazwisko : String
- Imie : String
- Adres : String
- Identyfikator : int
+ Rezerwacja
- Nr_pokoju : int
- Od_kiedy : Date
- Id_kl : int
- Do_kiedy : Date
+ sklada 1..1 + {Od_kiedy<Do_kiedy} 0..*
+ asocjacja
krotność
warunek
+ Klient_1
+ Klient
+ Rezerwacja_1
+ Rezerwacja
+ sklada 1..1 + {Od_kiedy<Do_kiedy} 0..*
+ sklada 1..1 + {Od_kiedy<Do_kiedy} 0..*
Diagram klas
Relacje - asocjacja Nawigowalność Określa jaka jest wiedza o sobie nawzajem obiektów uczestniczących w relacji
Jedno i dwukierunkowa
Klient zna swoje rezerwacje Rezerwacja nie ma informacji o kliencie
Możliwa jest nawigacja w obie strony
Diagram klas
Relacje - asocjacja Klasa asocjacyjna Zawiera informacje dotyczące samej relacji asocjacji a nie przechowywane
przez żaden z połączonych obiektów Jedno i dwukierunkowa
+ Klient + Rezerwacja+ sklada 1..1 + {Od_kiedy<Do_kiedy} 0..*
+ zamowienie
- Data_przyjecia : Date
- Sposob_rez : String
- potwierdzenie : boolean
Diagram klas
Relacje - asocjacja Asocjacja kwalifikowana Wskazuje konkretny atrybut danej klasy zapewniający unikatowość relacji
Atrybut ten jest jej kwalifikatorem
+ Klient + Rezerwacja
+ zamowienie
Id_pokoju 1 *
Diagram klas
Relacje - agregacja
Agregacja reprezentuje relację całość – część
Część może należeć do kilku całości a jej czas życia jest od nich
niezależny
+ Orkiestra + Karta muzyka
- miejsce w orkiestrze : String
- Nazwisko : String
- Imie : String
- Instrument : String
- Data przyjecia : Date
- Data zwolnienia : Date
Diagram klas
Relacje - kompozycja
kompozycja reprezentuje relację całość – część
Część należy tylko do jednej całości a jej czas życia jest od niej
zależny. Jest jednym z komponentów z których składa się całość
+ Czasopismo
- Tytul : String
- Wydawnictwo : String
- ISBN : String
+ Tom
- Numer : String
- Rocznik : int
Usunięcie całości powoduje usunięcie wszystkich jego części
Diagram klas
Relacje - uogólnienie
Uogólnienie tworzy hierarchię klas
Relacje wskazują klasę ogólną i klasy bardziej szczegółowe
Dziedziczenie jest jedną z technik uogólniania
+ magazyn
+ wyszukaj()
+ sortowanie()
+ magazyn podreczny
+ wyszukaj()
+ sortowanie()
+ magazyn surowcow
+ wyszukaj()
+ sortowanie()
+ magazyn produktow
+ wyszukaj()
+ sortowanie()
Diagram klas
Relacje - Klasyfikacja
Reprezentuje związek między obiektem i klasami
Obiekt może należeć jednocześnie do wielu klas - typów
Ograniczenia przynależności do klas
{disjoint} – obiekt może należeć tylko do jednej klasy naraz
{overlaping} – obiekt może należeć do wielu klas, posiadać wiele
typów
{complete} – prezentowana lista podklas jest kompletna, nie może
powstać nowa podklasa
{incomplete} – mogą powstać nowe podklasy
Diagram klas
Relacje - Klasyfikacja
Reprezentuje związek między obiektem i klasami
Obiekt może należeć jednocześnie do wielu klas - typów
{overlaping},
{incomplete}
{disjoint},
{complete}
+ wydawnictwo
+ ogolne
+ specjalizowane
+ ksiazka
+ czasopismo
Diagram klas
Klasa abstrakcyjna
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.
Klasa abstrakcyjna nie posiada własnych instancji obiektów.
Na diagramie oznaczana jest kursywą w nazwie klasy lub
słowem {abstract}
Diagram klas
Uogólnienia – hierarchia klas
Klasa abstrakcyjna
hhj+ Osoba
{root}
+ Pracownik obslugi kina
+ Kasjer+ Pracownik dzialu informacji + Operator projektora
+ Kasjer biletowy{leaf}
+ Kasjer gastronomiczny{leaf}
Klasa najwyższa
w hierarchii
Klasa najniższa
w hierarchii
Żadna fizyczna osoba nie jest
bezpośrednio pracownikiem
obsługi kina
Proces tworzenia diagramu klas - propozycja
•Zidentyfikowanie i nazwanie klas
•Połączenie klas z wykorzystaniem asocjacji
•Zidentyfikowanie i nazwanie atrybutów i operacji
•Określenie cech asocjacji (nazwa, role, nawigacja, liczebność,
agregacja, kwalifikacja)
•Opracowanie innych rodzajów związków (uogólnień, zależności,
realizacji)
•Wyspecyfikowanie atrybutów i operacji według składni
•Opracowanie diagramów obiektów
Diagram klas
Diagram klas
Przykład – telefonia komórkowa
+ Biling
+ Korespondencja
+ Faktura + Pozycja
+ Klient
+ Karta SIM + Taryfa
+ Komorka
+ SalonFirmowy
+ wlasciciel 1..1
+ komunikacja 0..*
+ przedmiot sprz. 1..*
+ zestawienie 1..1
+ rozliczenie 0..*
+ zbior dok. 1..1
+ zbior dok. 1..1
+ zest. polaczen 0..*
+ wlasciciel 1..1
+ numer 1..*
+ wlasciciel 1..1
+ produkt 1..*
+ nosnik pamieci 0..*
+ cennik 1..1
+ produkt 10..*
+ punkt sprzedazy 1..*
Diagram klas
Przykład – księgarnia wysyłkowa
+dodajPozycję()
+usuńPozycję()
+przekazPozycję()
+obliczCenęBrutto()
+wyczyśćKoszyk()
+wyszukaj()
-Autor : string
-tytuł : string
-wydawca : string
-ISBN : String
-dataWydania : Date
-cenaNetto : Decimal
-stawkaVat : Byte
Książka
+sporzadź()
+ustalDatę()
+zmieńFormę()
+zmieńStatus()
+wskazNiezrealizowane()
+wyliczWartość()
-nrZamówienia : String
-dataZamówienia : Date
-formaZapłaty : String
-status : String
Zamówienie
+sporzadź()
+zaznaczPłatność()
-nrFaktury : String
-dataWystawienia : Date
-dataPłatności : Date
-Zapłacona : Boolean
Faktura
+obliczKosztBrutto()
+dodajKoszt()
-formaDostarczenia : String
-kosztNetto : Decimal
-stawkaVat : Byte
Dostawa
+aktualizuj()
#telefon : String
#ulica : String
#nrDomu : String
#nrLokalu : String
#kodPocztowy : String
#miasto : String
Klient
+weryfikujDane()
+obciąż()
-typKarty : String
-nrKarty : String
-dataWazności : Date
-limit : Single
KartaKredytowa
+zaloguj()
-login : String
-hasło : String
Użytkownik
+zmieńDostęp()
-poziomDostępu : Byte
UżytkownikZaawansowany
-nazwaFirmy : String
-NIP : String
KlientFirmowy -imię : String
-nazwisko : String
KlientIndywidualny
1..* 0..* 1
0..*
1..*
0..*
1
1..3
0..* 1
0..*
1
Diagramy UML 2.0
Diagram sekwencji
(sequence diagram)
*.skw *.sd
10/13
• Opisuje sekwencje
komunikatów wymienianych
między obiektami
Recepcjonista :
Rezerwacja :
otwórzRezerwacje()
BazaDanych :
sprawdzDostepnoscPokoi()
wprowadzDane()dokonajRezerwacji()
zamknij()
Diagram sekwencji
„Diagramy sekwencji kładą nacisk na porządek
w jakim dzieją się rzeczy”
Służą przede wszystkim do pokazywania interakcji między
poszczególnymi elementami systemu
Pokazują „czas życia” obiektów w stosunku do innych
współuczestniczących w obsłudze danego zadania
Z reguły pokazują jeden scenariusz, nie wszystkie
możliwe
Diagram sekwencji
Elementy diagramu
Obiekt
Okno_logowaniaReprezentuje obiekt w systemie
lub jeden z jego komponentów
Linia życia. Pokazuje czas istnienia
danego obiektu.
Czas
Diagram sekwencji
Elementy diagramu
Aktywacja
Obszar aktywacji. Reprezentuje
czas, w którym obiekt jest aktywny
(wykonuje jakieś zadanie)
Znacznik zerwania. Pokazuje
jawnie chwilę w której dany obiekt
przestaje istnieć
Okno_logowania
Diagram sekwencji
Elementy diagramu
Komunikat Pokazuje przepływ sterowania
(i informacji) między poszczególnymi
obiektami
Istnieje kilka rodzajów komunikatów
Okno_logowania
Skrypt_logowania
Sprawdź_logowanie
Diagram sekwencji
Elementy diagramu
Komunikat
Pełne przekazanie sterowania do
drugiej instancji
Wstrzymanie operacji do czasu
uzyskania odpowiedzi
Komunikat prosty
Komunikat synchroniczny
Komunikat asynchroniczny
Komunikat zwrotny
Kontynuowanie operacji bez
oczekiwania na odpowiedź
Powrót z wywołania podprogramu
Diagram sekwencji
Przepływy komunikatów
Przepływ zagnieżdżony
Sprzedawca Zamówienie
pobierzWartość
cena
Artykuł
pobierzAdres
Diagram sekwencji
Komunikaty mogą być opisane w sposób sformalizowany
Poprz – lista komunikatów poprzedzających
Warunek – warunek wysłania komunikatu
Iter – ilość powtórzeń komunikatu
Nr sekw – numer określający kolejność komunikatu
Wynik – nazwa zmiennej zwracanej
Operacja – nazwa wywoływanej operacji wraz z parametrami
poprz / [warunek] *[iter] nr sekw : wynik := operacja(lista)
Diagram sekwencji
Komunikaty mogą być opisane w sposób sformalizowany
przesuń(1,2)
wyn1:=przesuń(5,5),
*[1..5]: wyn1 := przesuń(5,7)
[z>0]: wyn1 := przesuń(5,7),
A3,B4 / [x<0] *[1..4] C3.1: wyn2 := pobierzLokację(wyn1)
[dostęp do bazy] *[Dla każdego rekordu] 6: DaneWyj:=Formatuj(DaneWej,Format)
[drukarka zajęta] zapisz_do_kolejki(wydruk)
Przykłady komunikatów
poprz / [warunek] *[iter] nr sekw : wynik := operacja(lista)
Diagram sekwencji
Przepływy komunikatów
Warunki pozwalają na rozdzielenie
komunikatów i wprowadzenie
alternatywnych linii życia obiektów
Obiekt1 Obiekt2
[x>0]Komunikat1
[x<=0]Komunikat2
Alternatywna linia życia obiektu 2
Diagram sekwencji
Przepływy komunikatów
Możliwe jest również alternatywne
wykorzystywanie dodatkowych
obiektów
Obiekt wykorzystywany tylko
w przypadku x<=0
Obiekt1 Obiekt2
[x>0]Komunikat1
[x<=0]Komunikat2
Obiekt3
Komunikat3
Diagram sekwencji
CDN…