Diagramy interakcjiamber.zarz.agh.edu.pl/amaciol/IT07.pdf · 2015. 4. 13. · •Russ Miles, Kim...
Transcript of Diagramy interakcjiamber.zarz.agh.edu.pl/amaciol/IT07.pdf · 2015. 4. 13. · •Russ Miles, Kim...
Model projektowy Diagramy interakcji
Diagram Sekwencji
Diagram sekwencji przedstawia:
• komunikaty przysyłane pomiędzy obiektami (i ich kolejność)
• przepływ sterowania
• szablon realizowanego algorytmu lub jedną z możliwych ścieżek algorytmu / przypadku użycia
• czas życia i okresy aktywności obiektów (ról) biorących udział w interakcji
2
Komunikat – reprezentuje
przesłanie informacji z jednego
obiektu do innego - skutkujące
wykonaniem pewnej akcji na
obiekcie docelowym
Okres aktywności –
reprezentuje okres, kiedy
obiekt obsługuje komunikat
Obiekt – reprezentuje
obiekt (rolę) biorący
udział w interakcji
Linia życia – reprezentuje
czas kiedy obiekt jest w stanie
przyjmować i obsługiwać
komunikaty
Diagram komunikacji
Diagram komunikacji przedstawia:
• komunikaty przysyłane pomiędzy obiektami (i ich kolejność)
• przepływ sterowania
• szablon realizowanego algorytmu lub jedną z możliwych ścieżek algorytmu / przypadku użycia
• związki miedzy obiektami (rolami biorącymi udział w interakcji)
3
związek
komunikat
obiekt
Elementy diagramu – komunikaty
• Komunikat – przesłanie informacji z jednego obiektu (instancji) do innego skutkujące wykonaniem pewnej akcji na obiekcie docelowym
• Komunikaty są formą porozumiewania się obiektów (instancji)
• Implementacja komunikatu może przybierać różne formy:
▫ wywołanie metody
▫ wygenerowanie zdarzenia
• Na poziomie logicznym wywołanie metody i wygenerowanie zdarzenia nie różnią się między sobą - w jednym i drugim przypadku następuję przesłanie pewnej informacji od nadawcy do odbiorcy i w efekcie wykonanie pewnej akcji przez odbiorcę
4
Diagram sekwencji - interpretacja 1. Obiekt o1 wysyła komunikat do obiektu
o2. Komunikat ma postać wywołania operacji OperationB1
2. W trakcie obsługi komunikatu OperationB1 obiekt o2 wysyła komunikat do obiektu o3. Komunikat
skutkuje wykonaniem operacji OperationC1 na obiekcie o3
3. Po wykonaniu operacji OperationC1 obiekt o2 wysyła komunikat do samego
siebie. Komunikat ma postać wywołania operacji OperationB2
4. Po wykonaniu operacji OperationB2
następuję wysłanie komunikatu zwrotnego do obiektu o1 oznaczającego koniec obsługi komunikatu OperationB1
5
Rodzaje komunikatów
6
Komunikat synchroniczny
Komunikat asynchroniczny
Komunikat zwrotny
Komunikat synchroniczny
• Wysłanie komunikatu synchronicznego oznacza przekazanie sterowania do obiektu odbiorcy i rozpoczęcie wykonywania akcji na obiekcie docelowym
• Przetwarzanie w obiekcie nadawcy ulega wstrzymaniu
• Powrót sterowania i wznowienie przetwarzania w obiekcie nadawcy następuje po wykonaniu wszystkich akcji zainicjowanych przez wysłany komunikat
7
Komunikat asynchroniczny
• Wysłanie komunikatu asynchronicznego nie powoduje przerwania aktualnego przepływu sterowania
• Przetwarzanie w obiekcie nadawcy jest kontynuowane zaraz po wysłaniu komunikatu – obiekt nadawcy nie czeka aż obiekt odbiorcy skończy obsługę komunikatu
• Po odebraniu komunikatu asynchronicznego w obiekcie odbiorcy pojawia się nowy przepływ sterowania niezależny od przepływu sterowania w obiekcie nadawcy
8
Komunikat zwrotny
• Komunikaty zwrotne służą do oznaczenia powrotu sterowania do obiektu nadawcy po wykonaniu akcji związanych z wysłaniem komunikatu synchronicznego
• Komunikaty zwrotne są opcjonalne – zazwyczaj używa się ich w sytuacji, gdy operacja zwraca istotną wartość lub też dla lepszego zrozumienia przepływu sterowania
9
Rodzaje komunikatów – przykład
10
1. GetFileList() – synchroniczny
2. PrepareFileList() – synchroniczny
3. fileList – zwrotny
4. StartDownload() – asynchroniczny
5. SendFile () – asynchroniczny
6. ReportProgress() – asynchroniczny
Tworzenie obiektów
Operacja tworzenia obiektu – wysłanie komunikatu ze stereotypem <<create>> (komunikat może zawierać parametry konstruktora obiektu)
Na diagramie komunikat jest kierowany bezpośrednio do obiektu, a nie do linii życia
11
Usuwanie obiektu
Operacja usuwania obiektu – wysłanie komunikatu ze stereotypem <<destroy>>
Usunięcie obiektu oznacza się znakiem X na linii życia
12
Składnia komunikatu (1)
numer-komunikatu – numer komunikatu w sekwencji. Stosuje się
numeracje prostą (komunikaty dostają kolejne numery 1,2, 3, ...) lub zagnieżdżoną (jeśli obiekt otrzymuje komunikat o numerze 2.1, to każdy komunikat wysłany w trakcie realizacji tego komunikatu będzie miał prefiks 2.1, np. 2.1.1, 2.1.2, …)
komunikat – nazwa komunikatu (akcji wykonywanej na obiekcie
docelowym)
lista-parametrów – lista parametrów komunikatu. Dopuszcza się
stosownie tylko typów, tylko zmiennych, można też pominąć całkowicie wszystkie parametry
13
numer-komunikatu [własności] zmienna-zwracana
:= komunikat (lista-parametrów): zwracany-typ
Składnia komunikatu (2)
zmienna-zwracana – nazwa zmiennej zwracanej przez komunikat.
Można opuścić, jeśli komunikat nic nie zwraca
zwracany-typ – typ zmiennej zwracanej przez komunikat. Można
opuścić, jeśli komunikat nic nie zwraca
własności – określa własności komunikatu odnośnie warunków
jego wysłania. Może mieć postać warunku logicznego, np. [x > 0] – komunikat będzie wysłany, jeśli warunek będzie prawdziwy. Może też mieć postać iteracji, np. *[1..5] – komunikat
będzie wysłany 5 razy
14
numer-komunikatu [własności] zmienna-zwracana :=
komunikat (lista-parametrów): zwracany-typ
Komunikaty z warunkiem
Komunikat Update() zostanie wysłany tylko wtedy, gdy
zmienna find przyjmie wartość true
15
Komunikaty z iteracją
Komunikat ObliczPodatekPozycjiKoszyka() będzie wysyłany
liczbaPozycji razy
16
Bloki komunikatów
Najczęściej spotykane bloki komunikatów:
▫ alt – alternatywa
▫ opt – opcja
▫ par – współbieżność
▫ loop – iteracja
▫ critical – obszar krytyczny
▫ ref – odwołanie do innego bloku
17
Blok (fragment wyodrębniony) – grupa komunikatów posiadających wspólną cechę
alt
18
alt – wybierany jest jeden z alternatywnych bloków komunikatów – odpowiada instrukcji if...else
Operacje msg3 i msg4 będą wykonane, jeśli warunek będzie prawdziwy. W przeciwnym przypadku wykona się operacja msg5
opt
19
opt – grupuje komunikaty wysyłane, jeśli spełniony jest pewien warunek – odpowiada instrukcji if (bez else)
Operacje msg3 i msg4 będą wykonane, jeśli warunek będzie prawdziwy
loop
20
loop – grupuje komunikaty wykonywane iteracyjne (w pętli).
Pętla może mieć z góry zadaną liczbę iteracji. Liczba iteracji może też być określona przy pomocy warunku
Operacje msg3 i msg4 będą powtarzane 5 razy
par
21
par – grupuje komunikaty wykonywane równolegle
Operacje msg3 i msg4 mogą być
wykonywane równolegle
Diagramy ogólne i egzemplarzowe
22
Diagram ogólny (generyczny) Przedstawia wszystkie możliwe ścieżki interakcji (algorytmu). Na diagramach ogólnych mogą pojawiać się elementy blokowe: opcjonalne (opt), alternatywne (alt) iteracje (loop) i inne
Diagram egzemplarzowy (instancyjny) Przedstawia tylko jedną z możliwych ścieżek interakcji (algorytmu). Diagramy egzemplarzowe nie zawierają elementów blokowych
Diagram sekwencji vs. diagram
komunikacji
23
Cecha Diagram sekwencji Diagram komunikacji
związki pomiędzy obiektami
związki pomiędzy obiektami słabo widoczne
związki pomiędzy obiektami bardzo dobrze widoczne
kolejność przepływu
komunikatów
kolejność komunikatów bardzo dobrze widoczna
kolejność komunikatów możliwa do ustalenia jedynie na podstawie
numeracji
organizacja przestrzeni
diagramy sekwencji zajmują więcej miejsca
przestrzeń w diagramach komunikacji lepiej wykorzystana
rodzaje, własności
i bloki komunikatów
rodzaje komunikatów lepiej widoczne, możliwość zastosowania bloków
komunikatów
rodzaje komunikatów słabo widoczne, brak możliwości
stosowania bloków komunikatów
Literatura
• Russ Miles, Kim Hamilton, UML 2.0 Wprowadzenie
• Grady Booch, James Rumbaugh, Ivar Jacobson: UML Reference Manual
24