====== Zadanie 5 Diagramy interakcji ====== :!: Temat jest realizowany przez dwa kolejne zajęcia. Podczas realizacji jest modyfikowany także opracowany wcześniej diagram struktury klas. Celem zadania jest wykonanie dwóch diagramów modelujących interakcje pomiędzy obiektami: *sekwencji (przebiegu) – ang. //sequence diagram//, //message sequence chart// oraz *diagramów współdziałania (kooperacji, kolaboracji, komunikacji) – ang. //collaboration diagram, communication diagram// Oba diagramy obrazują podstawowy paradygmat modelowania/programowania obiektowego: system jest siecią połączonych ze sobą obiektów, które komunikują się za pomocą przesyłanych komunikatów. Diagramy sekwencji i współdziałania są semantycznie równoważne: stosując różną notację pokazują scenariusz wymiany komunikatów pomiędzy obiektami. Mogą na nich występować zarówno obiekty wchodzące w skład systemu, jak i obiekty zewnętrzne (aktorzy). Diagramy opisujące interakcję powinny być spójne z diagramami opisującymi strukturę: *Obiekt może przyjąć tylko te komunikaty, które są zdefiniowane w jego interfejsie. Interfejs jest zdefiniowany przez wyliczenie metod. Widoczne atrybuty mogą być opakowane przez metody set() i get(). *Wysłanie komunikatu jest utożsamiane z wywołaniem metody. *Aby nadawca mógł przesłać komunikat do odbiorcy, obie strony muszą być połączone jakąś formą kanału komunikacji. Implikuje to istnienie w modelu struktury związku typu asocjacja (agregacja, kompozycja) lub zależność. *W praktycznej implementacji - aby móc przesłać komunikat do obiektu, czyli wywołać jego metodę, musi być on *obiektem globalnym (zależność), *parametrem metody nadawcy (zależność), *atrybutem nadawcy typu wskaźnik, referencja (ascocjacja lub agregacja) *polem nadawcy (kompozycja). ===== Do przeczytania ===== -[[http://home.agh.edu.pl/~pszwed/pub/uml/refman.pdf|UML Reference Manual (1.0) - str 85-92]] -[[http://home.agh.edu.pl/~pszwed/pub/uml/UML-2.0-Tutorial.pdf|Wykład UML 2.0 w języku angielskim str 176-201]] -[[http://chomikuj.pl/kitek04/UML/wyklady/InteractDiagram04,2707287.pdf|Wykład prof. Szmuca gdzieś w sieci...]] ===== Do zrealizowania ===== Zamodeluj scenariusze dwóch przypadków użycia w postaci diagramów sekwencji i diagramów współdziałania. Podczas modelowania przestań traktować system, jak czarną skrzynkę. Pokaż, że obiekty są tworzone, wyszukiwane, dodawane, wiązane. Równocześnie, uzupełniaj zbudowany wcześniej diagram struktury klas: *dla istniejących klas dodawaj metody i związki. *możesz dodać kontenery obiektów *możesz dodać sztuczne klasy typu //Obsługa zamówienia// Wskazówki: -Jeżeli korzystasz z Visio, zacznij od pliku z diagramem struktury -Dodaj diagram przypadków użycia i narysuj wybrane dwa wybrane przypadki użycia wraz z aktorami -Dodaj nowy diagram - diagram sekwencji. -Przeanalizuj przypadek użycia -Zadecyduj, które obiekty będą brały udział w scenariuszu. Możesz dodawać dodatkowe klasy na diagramie struktury. -Kiedy dodasz na diagramie obiekty, ustal ich klasę (kalsyfikator). Jeśli wybierzesz klasę aktora, postać graficzna zmieni się (zamiast prostokąta pojawi się symbol aktora) -Dodawaj kolejne komunikaty na diagramie sekwencji. Komunikaty powinny być opisane nazwami metod (lub zwracanymi przez nie wartościami). W miarę potrzeb, możesz dodawać metody do klas (lub dodadzą się same, jeżeli poprawne określisz klasę obiektu. -Możesz pominąć linie aktywności na diagramach sekwencji. Visio ma z tym problemy -Nie zapomnij uwzględnić na diagramach stereotypowych komunikatów <> i <>. -Przebiegi alternatywne na diagramach sekwencji. : [[http://softwarestencils.com/sysml/index.html|Wykorzystaj zewnętrzny przybornik dla SysML]] -Na diagramach współdziałania dodaj numery pokazujące kolejność diagramów w sekwencji. W miarę możliwości numery te powinny być spójne z numeracją stosowaną w scenariuszach przypadków użycia. ===== Uwagi do egzaminu ===== Proszę przygotować się także z diagramu obiektów. ===== Do wykorzystania ===== Regiony opt, loop, alt >> [[http://softwarestencils.com/sysml/index.html|Przybornik Visio wspierający diagramy sekwencji]]