Projektowanie interakcji Jarosław Kuchta
Podstawowe pojęcia Interakcja (interaction) Przepływ komunikatów pomiędzy obiektami konieczny dla wykonania określonego zadania. Interakcja występuje w kontekście kolaboracji. Współpraca (collaboration) Zespół powiązań między obiektami umożliwiający ich interakcję dla wykonania określonego zadania. Komunikat (message) Przepływ informacji między obiektami pojawiający się w konsekwencji wystąpienia określonego zdarzenia. Zdarzenie (event) Wystąpienie sytuacji istotnej z punktu widzenia systemu. Zdarzenie zachodzi w pewnym niepodzielnym momencie czasu. Konsekwencją zdarzenia jest komunikat.
Diagramy interakcji Diagramy współpracy (kolaboracji) powiązania między obiektami przepływ komunikatów wzdłuż powiązań Diagramy sekwencji (przebiegu) linie życia obiektów przepływ komunikatów uporządkowany w czasie
Elementy diagramu kolaboracji numer porządkowy obiekt A komunikat 1: DoSomething() znacznik kierunku obiekt B powiązanie
Opis komunikatu (1/3) Numer porządkowy może składać się z kilku segmentów, każdy segment jest liczbą całkowitą określającą kolejność na danym poziomie zagłębienia, np.: 1.2.1 poprzedza 1.2.2 oraz poprzedza 1.3 komunikaty współbieżne określane są przez dodanie litery za numerem porządkowym, np.. 1.2a i 1.2b są współbieżne Określenie komunikatu poprzedzającego Zamiast numeru porządkowego danego komunikatu można podać numery porządkowe komunikatów poprzedzających (lista numerów oddzielonych przecinkami i zakończona znakiem / ). Dany komunikat zostanie przesłany tylko wówczas, gdy wszystkie poprzedzające go komunikaty zostaną przesłane (synchronizacja)
Opis komunikatu (2/3) Warunek strzegący, dozoru (guard condition) Warunek strzegący to warunek, który musi być spełniony dla przesłania komunikatu. Warunek strzegący podaje się w nawiasach kwadratowych, np. [n<10] Określenie iteracji Podanie klauzuli iteracji w nawiasach kwadratowych poprzedzonych znakiem * oznacza wielokrotne przesłanie komunikatu. Klauzulę iteracji podaje się w określonym języku programowania lub w pseudokodzie, np.: *[i:=1..10]
Opis komunikatu (3/3) Zwracany wynik wynik := nazwa operacji (lista argumentów) Lista argumentów Jest listą wartości oddzielonych przecinkami, które są po kolei przypisywane do parametrów operacji. Wartości są wyrażeniami w określonym języku programowania lub w pseudokodzie. W wyrażeniach mogą występować wartości zwrotne z poprzedzających komunikatów
Przykłady komunikatów 1.2a: DoSomething() 3, 5/7: DoSomething() 4: [action=new] NewDocument(SelectType())
Elementy diagramu sekwencji obiekt A obiekt B linia życia komunikat DoSomething() wektor przepływu komunikatu skupienie sterowania odpowiedź
Uwagi do diagramu sekwencji Diagram sekwencji i diagram współpracy są semantycznie równoważne. Kierunek przepływu komunikatu określa zwrot wektora przepływu przy jednym wektorze może wystąpić tylko jeden komunikat. Numery porządkowe są zbędne kolejność przepływu komunikatów określa uporządkowanie wektorów przepływu komunikatów w pionie wzdłuż linii życia. Można stosować warunki strzegące i specyfikacje iteracji. Wektor odpowiedzi nie opisuje się jeśli istotna jest wartość zwrotna, to przy wektorze zapytania podaje się zaawansowaną sygnaturę komunikatu. Zamiast wektora odpowiedzi można zastosować zwykły wektor przepływu komunikatu. Skupienie sterowania (focus of control) reprezentuje czas, w którym obiekt jest w stanie przyjmować i nadawać komunikaty (czas aktywności).
Tworzenie i niszczenie obiektu Create() A
Równoległe wątki należące do jednego obiektu A
Rekurencja A
Dokładne określenie czasu {t2-t1<1 min} t1 t2 {t3 -t3<10 ms} t3 t3
Przykład diagramu sekwencji Gracz A Zarządca gry Gracz B Wykonaj ruch Podaj stan Stan gry Obliczenie ruchu Ruch Zmiana stanu Wykonaj ruch Podaj stan Stan gry Odrysowanie planszy
Literatura Booch G, Rumbaugh J, Jacobson I: UML. Przewodnik użytkownika, WNT, Warszawa 2002 Dennis A., Haley Wixom B., Tegarden D.: System Analysis & Design. An Object-Oriented Approach with UML, John Wiley & Sons, Inc., USA 2001