Collaboration Diagram - to diagram, który odwzorowuje powiązania pomiędzy obiektami, nie uwzględniając upływu czasu, służy do odwzorowywania efektów oddziaływania na pojedynczy obiekt. Diagram sekwencji jak i diagram współpracy ilustrują ten sam problem, jednak przedstawiają go w innym kontekście, dlatego wybór odpowiedniego diagramu zależy od sposobu w jaki chcemy daną sytuację opisać.
W systemie wspomagającym zarządzanie miejskiej firmy kurierskiej do wyboru sposobu przewiezienia przesyłki przeprowadzana jest symulacja czasu przewiezienia różnymi środkami transportu (rower, motor, samochód, ciężarówka). W tym celu obiekt klasy Analityk chcąc poznać najlepszy śr. transportu, tworzy obiekt tymczasowy klasy Szacowanie, który po zakończeniu szacowania jest usuwany. Czas potrzebny na przewiezienie zależy od wielkości paczki i odległości (np. nie każdą paczkę można zawieźć rowerem, a do zawiezienia listu nie potrzeba ciężarówki). Narysuj diagram przebiegu dla opisanej sytuacji. Klasy i metody do wykorzystania:
ŚrodkiTransportu Ilość() – zwraca ilość śr. transportu Podaj(nr) – zwraca śr. transportu z pozycji o zadanym numerze
Środek CzyPrzewiezie(przesyłka) – czy można przewieźć taką przesyłkę tym środkiem transportu
PlanMiasta Czas(start, koniec, srodek) – zwraca czas potrzebny do osiągnięcia celu zadanym śr. transportu
Szacowanie Szacowanie(start, koniec, przesylka) – konstruktor, oblicza czasy dla różnych możliwości PodajNajszybszy() – zwraca najszybszy środek transportu w danym przypadku
Na początku musimy wybrać diagram komunikacji w tym celu wybieramy go z okna Create New Diagram i klikamy Finish tak jak na rys 135:
Rysunek 161
Po kliknięciu Finish otworzy nam się dobrze znane okno edytora:
Rysunek 162
Widzimy że tym razem paleta narzędzi jest bardzo uboga. Diagramy współpracy nie są zbyt skomplikowanymi diagramami. Podobnie jak w przypadku diagramu sekwencji tutaj również musimy stworzyć obiekty (wybierając odpowiednio z palety opcje bądź w zależności czy chcemy stworzyć obiekt aktora czy obiekt innej klasy). Warto tutaj zauważyć, że lifeline – linia życia w tym diagramie będzie się mocno różniła od linii życia w diagramie sekwencji. Stworzymy najpierw obiekt, aktora – analityk klasy Analityk. W tym celu klikamy w palecie na Actor a następnie w którymkolwiek miejscu na edytorze. W wyniki otrzymujemy następujący widok:
Rysunek 163
Udało nam się stworzyć obiekt, jednak nie ma on żadnej nazwy. W tym celu klikamy 2xLPM na pole nazwy obiektu i otrzymujemy:
Rysunek 164
Teraz wystarczy wpisać analityk:Analityk i obiekt aktora jest już gotowy (patrz rys. poniżej). Nadawanie nazw obiektowi nie jest potrzebne , konieczne natomiast jest określenie jakiej klasy jest ten obiekt.
Rysunek 165
Kolejnym krokiem jest stworzenie obiektów pozostałych klas. W odróżnieniu od diagramu sekwencji tutaj tworzymy wszystkie obiekty na raz. A więc wybieramy opcje Lifeline z palety i klikamy gdziekolwiek na obszarze edycji. W wyniku otrzymujemy:
Rysunek 166
Teraz łatwo możemy zauważyć różnice między liniami życia obu diagramów. W diagramie sekwencji interesowało nas jakie metody wywołamy ale również i w jakim czasie. Tutaj zwrócimy uwagę tylko na kolejność.
Zmieniamy nazwę nowo utworzonego obiektu (podobnie jak w przypadku aktora) i dodajemy wszystkie występujące obiekty, otrzymując w ten sposób widok:
Rysunek 167
Teraz pozostało nam dodać połączenia między obiektami. Pierwsza zostanie wywołana metoda Szacowanie(start, koniec, przesylka). Aby dodać połączenie między obiektami klikamy w oknie palety opcję: a następnie przy pomocy „magicznej” różdżki łączymy obiekty klasy Analityk i Szacowanie , klikając na nie 1xLPM. Bardzo ważne jest żeby najpierw kliknąć na obiekt analityk potem na sz - w ten sposób nadajemy od razu kierunek łączeniu od źródła do obiektu docelowego. W wyniku otrzymujemy:
Rysunek 168
Teraz zajmijmy się opisem tego połączenia. Musimy określić, że w tym łączeniu wykonujemy metodę Szacowanie.
W tym celu klikamy na łączenie PPM i wybieramy opcje jak w oknie poniżej:
Rysunek 169
Po kliknięciu na Add Operation powinniśmy otrzymać poniższy widok:
Rysunek 170
Teraz wystarczy wpisać odpowiednią nazwę metody i w wyniku otrzymamy:
Rysunek 171
Widzimy, że bardzo ładnie dodała nam się również strzałka odwzorowująca źródło i element docelowy. Teraz analogicznie dodajmy pozostałe łączenia. Jeśli wszystko się udało poprawnie stworzyć w wyniku powinniśmy otrzymać widok:
Rysunek 172
8
Metaloman