Diagramy interakcjiamber.zarz.agh.edu.pl/amaciol/IT07.pdf · 2015. 4. 13. · •Russ Miles, Kim...

24
Model projektowy Diagramy interakcji

Transcript of Diagramy interakcjiamber.zarz.agh.edu.pl/amaciol/IT07.pdf · 2015. 4. 13. · •Russ Miles, Kim...

Page 1: Diagramy interakcjiamber.zarz.agh.edu.pl/amaciol/IT07.pdf · 2015. 4. 13. · •Russ Miles, Kim Hamilton, UML 2.0 Wprowadzenie •Grady Booch, James Rumbaugh, Ivar Jacobson: UML

Model projektowy Diagramy interakcji

Page 2: Diagramy interakcjiamber.zarz.agh.edu.pl/amaciol/IT07.pdf · 2015. 4. 13. · •Russ Miles, Kim Hamilton, UML 2.0 Wprowadzenie •Grady Booch, James Rumbaugh, Ivar Jacobson: UML

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

Page 3: Diagramy interakcjiamber.zarz.agh.edu.pl/amaciol/IT07.pdf · 2015. 4. 13. · •Russ Miles, Kim Hamilton, UML 2.0 Wprowadzenie •Grady Booch, James Rumbaugh, Ivar Jacobson: UML

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

Page 4: Diagramy interakcjiamber.zarz.agh.edu.pl/amaciol/IT07.pdf · 2015. 4. 13. · •Russ Miles, Kim Hamilton, UML 2.0 Wprowadzenie •Grady Booch, James Rumbaugh, Ivar Jacobson: UML

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

Page 5: Diagramy interakcjiamber.zarz.agh.edu.pl/amaciol/IT07.pdf · 2015. 4. 13. · •Russ Miles, Kim Hamilton, UML 2.0 Wprowadzenie •Grady Booch, James Rumbaugh, Ivar Jacobson: UML

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

Page 6: Diagramy interakcjiamber.zarz.agh.edu.pl/amaciol/IT07.pdf · 2015. 4. 13. · •Russ Miles, Kim Hamilton, UML 2.0 Wprowadzenie •Grady Booch, James Rumbaugh, Ivar Jacobson: UML

Rodzaje komunikatów

6

Komunikat synchroniczny

Komunikat asynchroniczny

Komunikat zwrotny

Page 7: Diagramy interakcjiamber.zarz.agh.edu.pl/amaciol/IT07.pdf · 2015. 4. 13. · •Russ Miles, Kim Hamilton, UML 2.0 Wprowadzenie •Grady Booch, James Rumbaugh, Ivar Jacobson: UML

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

Page 8: Diagramy interakcjiamber.zarz.agh.edu.pl/amaciol/IT07.pdf · 2015. 4. 13. · •Russ Miles, Kim Hamilton, UML 2.0 Wprowadzenie •Grady Booch, James Rumbaugh, Ivar Jacobson: UML

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

Page 9: Diagramy interakcjiamber.zarz.agh.edu.pl/amaciol/IT07.pdf · 2015. 4. 13. · •Russ Miles, Kim Hamilton, UML 2.0 Wprowadzenie •Grady Booch, James Rumbaugh, Ivar Jacobson: UML

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

Page 10: Diagramy interakcjiamber.zarz.agh.edu.pl/amaciol/IT07.pdf · 2015. 4. 13. · •Russ Miles, Kim Hamilton, UML 2.0 Wprowadzenie •Grady Booch, James Rumbaugh, Ivar Jacobson: UML

Rodzaje komunikatów – przykład

10

1. GetFileList() – synchroniczny

2. PrepareFileList() – synchroniczny

3. fileList – zwrotny

4. StartDownload() – asynchroniczny

5. SendFile () – asynchroniczny

6. ReportProgress() – asynchroniczny

Page 11: Diagramy interakcjiamber.zarz.agh.edu.pl/amaciol/IT07.pdf · 2015. 4. 13. · •Russ Miles, Kim Hamilton, UML 2.0 Wprowadzenie •Grady Booch, James Rumbaugh, Ivar Jacobson: UML

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

Page 12: Diagramy interakcjiamber.zarz.agh.edu.pl/amaciol/IT07.pdf · 2015. 4. 13. · •Russ Miles, Kim Hamilton, UML 2.0 Wprowadzenie •Grady Booch, James Rumbaugh, Ivar Jacobson: UML

Usuwanie obiektu

Operacja usuwania obiektu – wysłanie komunikatu ze stereotypem <<destroy>>

Usunięcie obiektu oznacza się znakiem X na linii życia

12

Page 13: Diagramy interakcjiamber.zarz.agh.edu.pl/amaciol/IT07.pdf · 2015. 4. 13. · •Russ Miles, Kim Hamilton, UML 2.0 Wprowadzenie •Grady Booch, James Rumbaugh, Ivar Jacobson: UML

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

Page 14: Diagramy interakcjiamber.zarz.agh.edu.pl/amaciol/IT07.pdf · 2015. 4. 13. · •Russ Miles, Kim Hamilton, UML 2.0 Wprowadzenie •Grady Booch, James Rumbaugh, Ivar Jacobson: UML

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

Page 15: Diagramy interakcjiamber.zarz.agh.edu.pl/amaciol/IT07.pdf · 2015. 4. 13. · •Russ Miles, Kim Hamilton, UML 2.0 Wprowadzenie •Grady Booch, James Rumbaugh, Ivar Jacobson: UML

Komunikaty z warunkiem

Komunikat Update() zostanie wysłany tylko wtedy, gdy

zmienna find przyjmie wartość true

15

Page 16: Diagramy interakcjiamber.zarz.agh.edu.pl/amaciol/IT07.pdf · 2015. 4. 13. · •Russ Miles, Kim Hamilton, UML 2.0 Wprowadzenie •Grady Booch, James Rumbaugh, Ivar Jacobson: UML

Komunikaty z iteracją

Komunikat ObliczPodatekPozycjiKoszyka() będzie wysyłany

liczbaPozycji razy

16

Page 17: Diagramy interakcjiamber.zarz.agh.edu.pl/amaciol/IT07.pdf · 2015. 4. 13. · •Russ Miles, Kim Hamilton, UML 2.0 Wprowadzenie •Grady Booch, James Rumbaugh, Ivar Jacobson: UML

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ę

Page 18: Diagramy interakcjiamber.zarz.agh.edu.pl/amaciol/IT07.pdf · 2015. 4. 13. · •Russ Miles, Kim Hamilton, UML 2.0 Wprowadzenie •Grady Booch, James Rumbaugh, Ivar Jacobson: UML

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

Page 19: Diagramy interakcjiamber.zarz.agh.edu.pl/amaciol/IT07.pdf · 2015. 4. 13. · •Russ Miles, Kim Hamilton, UML 2.0 Wprowadzenie •Grady Booch, James Rumbaugh, Ivar Jacobson: UML

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

Page 20: Diagramy interakcjiamber.zarz.agh.edu.pl/amaciol/IT07.pdf · 2015. 4. 13. · •Russ Miles, Kim Hamilton, UML 2.0 Wprowadzenie •Grady Booch, James Rumbaugh, Ivar Jacobson: UML

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

Page 21: Diagramy interakcjiamber.zarz.agh.edu.pl/amaciol/IT07.pdf · 2015. 4. 13. · •Russ Miles, Kim Hamilton, UML 2.0 Wprowadzenie •Grady Booch, James Rumbaugh, Ivar Jacobson: UML

par

21

par – grupuje komunikaty wykonywane równolegle

Operacje msg3 i msg4 mogą być

wykonywane równolegle

Page 22: Diagramy interakcjiamber.zarz.agh.edu.pl/amaciol/IT07.pdf · 2015. 4. 13. · •Russ Miles, Kim Hamilton, UML 2.0 Wprowadzenie •Grady Booch, James Rumbaugh, Ivar Jacobson: UML

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

Page 23: Diagramy interakcjiamber.zarz.agh.edu.pl/amaciol/IT07.pdf · 2015. 4. 13. · •Russ Miles, Kim Hamilton, UML 2.0 Wprowadzenie •Grady Booch, James Rumbaugh, Ivar Jacobson: UML

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

Page 24: Diagramy interakcjiamber.zarz.agh.edu.pl/amaciol/IT07.pdf · 2015. 4. 13. · •Russ Miles, Kim Hamilton, UML 2.0 Wprowadzenie •Grady Booch, James Rumbaugh, Ivar Jacobson: UML

Literatura

• Russ Miles, Kim Hamilton, UML 2.0 Wprowadzenie

• Grady Booch, James Rumbaugh, Ivar Jacobson: UML Reference Manual

24