Projektowanie dynamiki - diagramy interakcji
Modele statyczne i dynamiczne Projektowanie dynamiki - diagram interakcji Modele statyczne i dynamiczne Modele statyczne – klasy i zależności między klasami diagram klas diagram obiektów Modele dynamiczne – interakcja między obiektami diagramy sekwencji diagramy komunikacji
Diagram sekwencji Diagram sekwencji przedstawia: Projektowanie dynamiki - diagram 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 czas życia i okresy aktywności obiektów (ról) biorących udział w interakcji
Diagram sekwencji Obiekt (rola) biorący udział w interakcji Projektowanie dynamiki - diagram interakcji Diagram sekwencji Obiekt (rola) biorący udział w interakcji Okres aktywności Komunikat Linia życia
Diagram komunikacji Diagram komunikacji przedstawia: Projektowanie dynamiki - diagram interakcji 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 związki miedzy obiektami (rolami biorącymi udział w interakcji)
Diagram komunikacji związek komunikat obiekt Projektowanie dynamiki - diagram interakcji Diagram komunikacji związek komunikat obiekt
Projektowanie dynamiki - diagram interakcji Elementy diagramu Obiekty (role) - są podstawowym elementem diagramu interakcji. Diagram może zawierać instancje innych klasyfikatorów, np. aktorów Linia życia – reprezentuje czas życia obiektów (ról) biorących udział w interakcji. Jest to czas, kiedy obiekt jest w stanie przyjmować i obsługiwać komunikaty Okres aktywności – reprezentuje okres, kiedy obiekt obsługuje komunikat
Elementy diagramu - komunikaty Projektowanie dynamiki - diagram interakcji 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ę 1. Komunikaty mogą być przesyłane nie tylko pomiędzy obiektami, stąd określenie „pomiędzy instancjami”
Diagram sekwencji - interpretacja Projektowanie dynamiki - diagram interakcji Diagram sekwencji - interpretacja Obiekt o1 wysyła komunikat do obiektu o2. Komunikat ma postać wywołania operacji OperationB1 W trakcie obsługi komunikatu OperationB1 obiekt o2 wysyła komunikat do obiektu o3. Komunikat skutkuje wykonaniem operacji OperationC1 na obiekcie o3 Po wykonaniu operacji OperationC1 obiekt o2 wysyła komunikat do samego siebie. Komunikat ma postać wywołania operacji OperationB2 Po wykonaniu operacji OperationB2 następuję wysłanie komunikatu zwrotnego do obiektu o1 oznaczającego koniec obsługi komunikatu OperationB1
Rodzaje komunkatów Komunikat synchroniczny Komunikat asynchroniczny Projektowanie dynamiki - diagram interakcji Rodzaje komunkatów Komunikat synchroniczny Komunikat asynchroniczny Komunikat zwrotny
Komunikat synchroniczny Projektowanie dynamiki - diagram interakcji 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
Komunikat asynchroniczny Projektowanie dynamiki - diagram interakcji 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
Projektowanie dynamiki - diagram interakcji 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
Rodzaje komunikatów - przykład Projektowanie dynamiki - diagram interakcji Rodzaje komunikatów - przykład GetFileList() – synchroniczny PrepareFileList() – synchroniczny fileList – zwrotny StartDownload() – asynchroniczny SendFile () – asynchroniczny ReportProgress() – asynchroniczny
Projektowanie dynamiki - diagram interakcji Tworzenie obiektu Tworzenie obiektu – wysłanie komunikatu ze stereotypem <<create>> Komunikat może zawierać parametry konstruktora obiektu
Projektowanie dynamiki - diagram interakcji Usuwanie obiektu We współczesnych językach takich jak Java czy C# usuwanie obiektów oznacza usuniecie referencji do obiektu. Obiekty nie posiadające referencji zbierane są co pewien czas przez tzw. Garbage i dopiero wtedy fizycznie usuwane Usuwanie obiektu – wysłanie komunikatu ze stereotypem <<destroy>> Usunięcie obiektu oznacza się znakiem X na linii życia
Składnia komunikatu (1) Projektowanie dynamiki - diagram interakcji Składnia komunikatu (1) numer-komunikatu [własności] zmienna-zwracana := komunikat (lista-parametrów): zwracany-typ 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, …) lista-parametrów – lista parametrów komunikatu. W wersji najbardziej rozszerzonej ma postać: zmienna:typ. Dopuszcza się stosownie tylko typów, tylko zmiennych, można też pominąć całkowicie wszystkie parametry
Składnia komunikatu (2) Projektowanie dynamiki - diagram interakcji Składnia komunikatu (2) numer-komunikatu [własności] zmienna-zwracana := komunikat (lista-parametrów): zwracany-typ 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
Komunikaty z warunkiem Projektowanie dynamiki - diagram interakcji Komunikaty z warunkiem Komunikat Update() zostanie wysłany tylko wtedy, gdy zmienna find przyjmie wartość true
Projektowanie dynamiki - diagram interakcji Komunikaty z iteracją Komunikat ObliczPodateKPozycjiKoszyka() będzie wysyłany liczbaPozycji razy
Projektowanie dynamiki - diagram interakcji Bloki komunikatów Blok (fragment wyodrębniony) – grupa komunikatów posiadających wspólną cechę 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
Projektowanie dynamiki - diagram interakcji alt 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
Projektowanie dynamiki - diagram interakcji opt 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
Projektowanie dynamiki - diagram interakcji loop loop – grupuje komunikaty wykonywane iteracyjne (w pętli). Pętla może mieć z góry zadaną liczbę iteracji (pętla for). Liczba iteracji może też być określona przy pomocy warunku (pętla while) Operacje msg3 i msg4 będą powtarzane 5 razy
par par – grupuje komunikaty wykonywane równolegle Projektowanie dynamiki - diagram interakcji par par – grupuje komunikaty wykonywane równolegle Operacje msg3 i msg4 mogą być wykonywane równolegle
Projektowanie dynamiki - diagram interakcji Rodzaje diagramów Diagramy egzemplarzowy (instancyjny) – przedstawia tylko jedną z możliwych ścieżek interakcji (algorytmu). Diagramy egzemplarzowe nie zawierają alternatyw, opcji ani iteracji Diagramy ogólny (generyczny) – przedstawia wszystkie możliwe ścieżki interakcji (algorytmu) . Na diagramach ogólnych często pojawiają się elementy opcjonalne, alternatywne oraz iteracje
Diagramy ogólne i egzemplarzowe Projektowanie dynamiki - diagram interakcji Diagramy ogólne i egzemplarzowe Diagram ogólny (generyczny) Diagram egzemplarzowy (instancyjny) Diagram przedstawia wszystkie możliwe scenariusze interakcji (blok alt) Diagram przedstawia jeden scenariusz interakcji (dla zmiennej ilość jest większej od 0)
Diagram sekwencji versus diagram komunikacji Projektowanie dynamiki - diagram interakcji Diagram sekwencji versus diagram komunikacji 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 Podsumowanie: 1. Używaj diagramu sekwencji, jeśli interesuje cię przede wszystkim kolejność przepływu wiadomości 2. Używaj diagramu komunikacji, jeśli chcesz zobrazować związki między obiektami uczestniczącymi w interakcji
Diagram sekwencji versus diagram komunikacji Projektowanie dynamiki - diagram interakcji Diagram sekwencji versus diagram komunikacji diagram sekwencji diagram komunikacji
Literatura Russ Miles, Kim Hamilton, UML 2.0 Wprowadzenie Projektowanie dynamiki - diagram interakcji Literatura Russ Miles, Kim Hamilton, UML 2.0 Wprowadzenie Grady Booch, James Rumbaugh, Ivar Jacobson: UML Reference Manual Kazimierz Subieta: Projektowanie systemów informatycznych – wykłady