Diagramy maszyn stanowych, wzorce projektowe Wykład 5 część 1

Podobne dokumenty
Diagramy maszyn stanowych, wzorce projektowe Wykład 5 część 1

Diagramy stanów tworzenie modeli analizy i projektowania Na podstawie UML 2.0 Tutorial

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Diagramy czynności Na podstawie UML 2.0 Tutorial

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

TECHNOLOGIE OBIEKTOWE. Wykład 3

Diagramy klas, diagramy sekwencji

Diagramy czynności tworzenie modelu przypadków użycia Wykład 2

Diagram stanów Laboratorium 9

Diagramy stanów Na podstawie UML 2.0 Tutorial Zofia Kruczkiewicz

Model przypadków użycia - rola diagramów aktywności Część 2 Wykładowca Dr inż. Zofia Kruczkiewicz

Laboratorium 8 Diagramy aktywności

Diagramy stanów Na podstawie UML 2.0 Tutorial Zofia Kruczkiewicz

Język UML w modelowaniu systemów informatycznych

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Diagramy klas, diagramy sekwencji Wykład 4

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 5

Laboratorium z przedmiotu: Inżynieria Oprogramowania INP

Tutorial prowadzi przez kolejne etapy tworzenia projektu począwszy od zdefiniowania przypadków użycia, a skończywszy na konfiguracji i uruchomieniu.

Diagramy czynności i syntaktyka diagramów klas Wykład3

Michał Adamczyk. Język UML

TECHNOLOGIE OBIEKTOWE WYKŁAD 2. Anna Mroczek

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl

Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1

Instrukcja 3 Laboratorium z Podstaw Inżynierii Oprogramowania

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

UML. zastosowanie i projektowanie w języku UML

Podstawy programowania III WYKŁAD 4

Programowanie obiektowe

Przykład 1 Iteracja 1 tworzenia oprogramowania

Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

Modelowanie obiektowe

NIFIED M L ODELLING ANGUAGE. Diagramy czynności

Języki i metody programowania Java. Wykład 2 (część 2)

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

UML cz. III. UML cz. III 1/36

Kurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017

Diagramy klas. dr Jarosław Skaruz

koniec punkt zatrzymania przepływów sterowania na diagramie czynności

Język UML w modelowaniu systemów informatycznych

Modelowanie i analiza. warstwy biznesowej aplikacji

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 5

Platformy Programistyczne Podstawy języka Java

Wykład 1 Inżynieria Oprogramowania

Budowa aplikacji wielowarstwowych. Obsługa zdarzeń

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Diagramy czynności. Widok logiczny. Widok fizyczny

Budowa aplikacji wielowarstwowych. Obsługa zdarzeń, zastosowanie walidatorów, wykonanie listy typu Drop Down List.

JAVA W SUPER EXPRESOWEJ PIGUŁCE

UML w Visual Studio. Michał Ciećwierz

Metody dostępu do danych

Inżynieria oprogramowania

Projektowanie oprogramowania cd. Projektowanie oprogramowania cd. 1/34

Wzorce oprogramowania zastosowane w modelu obiektowym (wg Alan Shalloway, James R.Trott)

Technologie obiektowe

Podstawy języka UML2 w realnych projektach

Współbieżność w środowisku Java

Zagadnienia (1/3) Data-flow diagramy przepływów danych ERD diagramy związków encji Diagramy obiektowe w UML (ang. Unified Modeling Language)

Inżynieria oprogramowania Jarosław Kuchta. Modelowanie interakcji

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz

Systemy Rozproszone. Spis treści. Temat projektu: Regułowy system analizujacy logi. autorzy: Rafał Sadłowski, Sebastian Falkus, Michał Różycki

Projekt sytemu informatycznego podejście obiektowe

Podstawy projektowania systemów komputerowych

Spis treúci. 1. Wprowadzenie... 13

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

Język UML w modelowaniu systemów informatycznych

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

Modelowanie i analiza systemów informatycznych

Podstawy otwartych języków programowania Przechowywanie danych

1. WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI

Wzorce logiki dziedziny

Laboratorium 2_3_4 Wzorce oprogramowania zastosowane w modelu obiektowym (wg Alan Shalloway, James R.Trott)

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Karta opisu przedmiotu Zaawansowane techniki analizy systemowej oparte o modelowanie warsztaty

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Klasy i obiekty cz II

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Diagramy klas, diagramy sekwencji tworzenie modeli analizy i projektu

Metody Metody, parametry, zwracanie wartości

INŻYNIERIA OPROGRAMOWANIA. laboratorium

Bloki anonimowe w PL/SQL

Programowanie obiektowe

Implementacja modelu obiektowego

Projekt INP Instrukcja 1. Autor Dr inż. Zofia Kruczkiewicz

Instrukcja 3 Laboratoria 3, 4 Specyfikacja wymagań funkcjonalnych za pomocą diagramu przypadków użycia

12) Wadą modelu kaskadowego jest: Zagadnienia obowiązujące na egzaminie z inżynierii oprogramowania: 13) Wadą modelu opartego na prototypowaniu jest:

Projektowanie oprogramowania

Instrukcja 3 Laboratoria 3, 4 Specyfikacja wymagań funkcjonalnych za pomocą diagramu przypadków użycia

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 2

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1

Język UML w modelowaniu systemów informatycznych

Modelowanie aktywności. Jarosław Kuchta Programowanie Współbieżne

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Projektowanie oprogramowania

Transkrypt:

Diagramy maszyn stanowych, wzorce projektowe Wykład 5 część 1 Zofia Kruczkiewicz Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 1

Składnia elementów na diagramach UML 1. W prezentacji składni diagramów stanów UML (str.15-28) o charakterze tutorialowym sposób definiowania składowych klas (stany, zdarzenia, akcje) odwzorowanych na elementy klas, jest jednym z przyjętych sposobów interpretowania specyfikacji języka UML w tutorialach często odbiegająca od syntaktyki znanych języków obiektowych (Java, C++) i zazwyczaj uproszczona. 2. W prezentacji składni diagramu stanów UML (str.31, 32) oraz diagramów sekwencji (str. 6, 8, 34, 36, 40, 43, 45) wykazując spójność modelowanego zachowania obiektów za pomocą tych dwóch typów diagramów prezentując sposób odwzorowania elementów diagramów, czyli zdarzenia, stany, akcje na elementy klas, itd jest jednym z przyjętych sposobów interpretowania specyfikacji języka UML w narzędziach UML (VP CE). Diagramy sekwencji uzyskano generując diagramy z kodu Javy. Wniosek: W wielu narzędziach UML sposób definiowania elementów diagramów oparty na tej samej specyfikacji UML różni się. W prezentowanych materiałach przedstawiono te różnice, stosując dwa różne sposoby definiowania oparte na: 1) tutorialach (p.1): http://sparxsystems.com.au/resources/uml2_tutorial/ 2) narzędziu z serii Visual Paradigm CE - VP CE (p. 2: http://zofia.kruczkiewicz.staff.iiar.pwr.wroc.pl/wyklady/io_uml/instrukcja_1_2.pdf, W mat. 2) diagramy sekwencji zostały wygenerowane z kodu Javy (inzynieria odwrotna), w celu zwrócenia uwagi, że te różnice są naturalnym zjawiskiem, ale zawsze wspierającym programistów. Zofia Kruczkiewicz Projektowanie oprogramowania 3 2

Diagramy maszyn stanowych, wzorce projektowe 1. Modelowanie zachowania obiektów za pomocą diagramów sekwencji i aktywności - porównanie 2. Diagramy stanów UML http://sparxsystems.com.au/resources/uml2_tutorial/ 3. Wzorce projektowe Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 3

Diagramy maszyn stanowych, wzorce projektowe 1. Modelowanie zachowania obiektów za pomocą diagramów sekwencji i aktywności - porównanie Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 4

Diagram czynności przypadku użycia Wstawianie nowego zakupu (model przypadku użycia w warstwie biznesowej) Diagram aktywności reprezentujący scenariusze diagramów sekwencji ze slajdów 6 i 8 5

void wstawzakup (int nr, int ailosc, String dane[]) scenariusz z toru Aplikacja

} //Aplikacja public void wstawzakup (int nr, int ile, String dane[]) { Rachunek rachunek; Fabryka fabryka = new Fabryka(); ProduktBezPodatku produkt1 = fabryka.wykonajprodukt(dane); if ((rachunek=szukajrachunek(nr))!= null) if ((produkt1=szukajprodukt(produkt1))!= null) rachunek.wstawzakup(new Zakup(ile, produkt1)); Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 7

void wstawzakup(zakup azakup) scenariusz z toru Rachunek 13 8

//Rachunek private List<Zakup> zakupy = new ArrayList<>(); public void wstawzakup (Zakup azakup) { Zakup zakup; if ((zakup = szukajzakup(azakup))!= null) zakup.dodajiloscproduktu(azakup.getilosc()); else zakupy.add(azakup); } Zofia Kruczkiewicz Projektowanie oprogramowania 3 9

Diagramy maszyn stanowych, wzorce projektowe 1. Modelowanie aktywności za pomocą diagramów sekwencji i aktywności - porównanie 2. Diagramy stanów UML http://sparxsystems.com.au/resources/uml2_tutorial/ Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 10

Diagramy stanów UML 2 część piąta Na podstawie UML 2.0 Tutorial http://sparxsystems.com.au/resources/uml2_tutorial/ Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 11

Diagramy stanów 1. Diagramy stanów UML http://sparxsystems.com.au/resources/uml2_tutorial/ 2. Przykład diagramów stanów UML modelowanie wpływu przypadków użycia na stany obiektu Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 12

Diagramy stanów 1. Diagramy stanów UML http://sparxsystems.com.au/resources/uml2_tutorial/ Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 13

Dwa rodzaje diagramów UML 2 Diagramy UML modelowania strukturalnego Diagramy pakietów Diagramy klas Diagramy obiektów Diagramy mieszane Diagramy komponentów Diagramy wdrożenia Diagramy UML modelowania zachowania Diagramy przypadków użycia Diagramy aktywności Diagramy stanów Diagramy komunikacji Diagramy sekwencji Diagramy czasu Diagramy interakcji Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 14

Diagram stanu opisuje zmiany stanu obiektu, podsystemu lub systemu pod wpływem działania operacji - iest szczególnie przydatny, gdy zachowanie obiektu jest złożone. Przedstawia on maszynę stanów jako przepływ sterowania między stanami. Diagram stanów jest grafem złożonym z wierzchołków i krawędzi: wierzchołkami są stany (prostokąty o zaokrąglonych rogach), krawędziami są przejścia (strzałki). (np. przedstawienie stanów, w jakich mogą być drzwi i zdarzenia, które powodują ich zmianę stanów protokół użycia) Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 15

Stan jest okolicznością lub sytuacją, w jakiej znajduje się obiekt jest rezultatem poprzedniej aktywności spełnia jakiś warunek jest określony przez wartości własnych atrybutów i powiązań do innych zadań wykonuje pewne czynności czeka na jakieś zdarzenie Nazwa -unikatowy ciąg znaków, brak nazwy dla stanu anonimowego Akcje wejściowe (entry) i wyjściowe (exit) - akcje wykonywane odpowiednio przy wejściu do stanu i przy wyjściu) Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 16

Stan początkowy (Initial) może być tylko jeden stan początkowy Stan końcowy (Final) może być kilka stanów końcowych Przejście (Transition) jest związkiem między dwoma stanami, który wskazuje, że np. obiekt znajdujący się w pierwszym stanie wykona pewne akcje (Effect) i przejdzie do drugiego stanu, ilekroć zaistnieje określone zdarzenie (Trigger) i będą spełnione określone warunki (Guard). 17

Przejście własne jest związkiem między tym samym stanem, który wskazuje, że np. obiekt znajdujący się w pewnym stanie wykona pewne akcje i powróci do tego samego stanu, ilekroć zaistnieje określone zdarzenie i będą spełnione określone warunki. Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 18

Poddiagramy stanów Diagram stanu może zawierać stany, których zachowanie może być modelowany za pomocą poddiagramów stanów 19

Alternatywne przedstawienie stanu, który jest modelowany za pomocą innego diagramu stanów 20

Stany początkowe w poddiagramach stanów Wskazanie różnych stanów początkowych w poddiagramie stanów: rozpoczęcie stanu z inicjalizacją (normalne) bez inicjalizacji (wyjątkowe) Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 21

Punkty startowe w diagramach nadrzędnych Diagram stanów zawierający różne punkty startowe dla poddiagramów stanów (reprezentowanych przez inne diagramy): rozpoczęcie stanu z inicjalizacją (normalne) bez inicjalizacji (wyjątkowe) Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 22

Punkt wyjścia modelowanie osiągnięcia alternatywnych stanów końcowych (Final) przez obiekt Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 23

Pseudo stan wyboru: jedno przejście ze stanu wejściowego do pseudo stanu wyboru (romb) i kilka przejść na wyjściu tego pseudo stanu w wyniku zdarzenia następuje przejście ze stanu wejściowego (np. Selecting Message Format) i na podstawie spełnionego warunku wybór przejścia do jednego ze stanów wyjściowych (np. wybór przejścia na podstawie wybranego formatu wiadomości w stanie wejściowym); dynamiczny charakter wyboru przejścia 24

Pseudo stan typu połączenie w pseudo stanie typu połączenie możliwość wyboru przejść do stanów wyjściowych po zdarzeniach zachodzących na przejściach ze stanów wejściowych 25

Pseudo stan typu zakończenie oznacza zakończenie linii życia maszyny stanowej Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 26

Stany historyczne przedstawiają stany wcześniejsze (historyczne) przed przerwaniem działania maszyny stanowej (np. w chwili załączenia zasilania maszyna stanowa zmywarki pamięta stan, w którym ma wznowić działanie) 27

Równolegle podstany Stan może być podzielony między równoległe podstany wykonywane jednocześnie. (np. sterowanie przednimi (front) i tylnymi (rear) hamulcami odbywa się równolegle i musi być zsynchronizowane wyrażone za pomocą symbolu rozdzielenia na pseudo stany oraz symbolu połączenia pseudo stanów. Równoległe podstany są używane do modelowania synchronizacji wątków 28

Diagram stanów 1. Diagramy stanów UML http://sparxsystems.com.au/resources/uml2_tutorial/ 2. Przykład diagramów stanów UML modelowanie wpływu przypadków użycia na stany obiektu Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 29

Przykład 1 - Diagram stanów klasy Tytul 30

Przykład 2 Diagram stanów klasy Rachunek (wersja 1) Zdarzenie wstawzakup (slajdy 33-41) Zdarzenie obliczwartosc (slajdy 42-46) Zdarzenie equals (slajdy 34-39)

Przykład 2 (cd) Diagram stanów klasy Rachunek (wersja 2) Zdarzenie wstawzakup (slajdy 33-41) Zdarzenie obliczwartosc (slajdy 42-46) Zdarzenie equals (slajdy 34-39)

Projekt przypadku użycia zdarzenie wstawzakup Wstawianie nowego zakupu za pomocą diagramu sekwencji i diagramu klas. Diagram klas jest uzupełniany metodami zidentyfikowanymi podczas projektowania scenariusza przypadku użycia za pomocą diagramu sekwencji. Definiowanie kodu metod realizujących przypadek użycia na podstawie diagramów sekwencji Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 33

Wstawianie nowego zakupu generowanie zdarzeń equals i wstawzakup na obiekcie typu Rachunek Zdarzenie equals na obiekcie typu Rachunek w metodzie indexof kolekcji rachunki, wywołanej w metodzie szukajrachunek (slajdy 36-39) Zdarzenie wstawzakup na obiekcie typu Rachunek (slajdy 40-41) 12 9 34

//Aplikacja public void wstawzakup (int nr, int ile, String dane[]) { Rachunek rachunek; Fabryka fabryka = new Fabryka(); ProduktBezPodatku produkt1 = fabryka.wykonajprodukt(dane); if ((rachunek=szukajrachunek(nr))!= null) if ((produkt1=szukajprodukt(produkt1))!= null) rachunek.wstawzakup(new Zakup(ile, produkt1)); } Zofia Kruczkiewicz Projektowanie oprogramowania 3 35 35

PU Szukanie rachunku (9) Rachunek szukajrachunek(int nr) Zdarzenie equals na obiekcie typu Rachunek w metodzie indexof kolekcji rachunki typu ArrayList 36

private List <Rachunek> rachunki = new ArrayList <>(); //Aplikacja public Rachunek szukajrachunek (int nr) { Rachunek rachunek = new Rachunek(nr); int idx; if ((idx=rachunki.indexof(rachunek))!= -1) { rachunek=rachunki.get(idx); return rachunek; } return null; } Zofia Kruczkiewicz Projektowanie oprogramowania 3 37

//metoda indexof obiektu rachunki klasy typu ArrayList public int indexof(object o) { if (o == null) { for (int i = 0; i < size; i++) if (elementdata[i]==null) return i; } else { for (int i = 0; i < size; i++) if (o.equals(elementdata[i])) return i; } return -1; } Zdarzenie equals na obiekcie typu Rachunek w metodzie indexof kolekcji rachunki typu ArrayList Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 38

//Rachunek //metoda zdarzeniowa equals // metody użyte w kodzie metody są akcjami zdarzenia //instrukcje warunkowe mogą być użyte jako dozory public boolean equals (Object arachunek) { Rachunek rachunek= (Rachunek)aRachunek; return numer== rachunek.numer; } Akcja zdarzenia equals na obiekcie typu Rachunek zwrócenie wyniku dozoru true lub false Dozór zdarzenia equals na obiekcie typu Rachunek Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 39

(12) void wstawzakup(zakup azakup) metoda zdarzeniowa Dozór zdarzenia wstawzakup na obiekcie typu Rachunek Akcje zdarzenia wstawzakup na obiekcie typu Rachunek 40

//metoda zdarzeniowa wstawzakup // metody użyte w kodzie metody są akcjami zdarzenia //instrukcje warunkowe mogą być użyte jako dozory //Rachunek private ArrayList<Zakup> zakupy = new ArrayList<Zakup>(); public void wstawzakup (Zakup azakup) { Zakup zakup; if ((zakup = szukajzakup(azakup))!= null) zakup.dodajiloscproduktu(azakup.getilosc()); else zakupy.add(azakup); } Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 41

Projekt przypadku użycia zdarzenie Podaj_wartosc Obliczanie wartości rachunku za pomocą diagramu sekwencji i diagramu klas. Diagram klas jest uzupełniany metodami zidentyfikowanymi podczas projektowania scenariusza przypadku użycia za pomocą diagramu sekwencji. Definiowanie kodu metod realizujących przypadek użycia na podstawie diagramów sekwencji Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 42

(15) Obliczanie wartosci rachunku generowanie zdarzeń equals i podajwartosc na obiekcie typu Rachunek (float obliczwartoscrachunku(int nr, int podatek)) 9 Zdarzenie equals na obiekcie typu Rachunek w metodzie indexof kolekcji Rachunki, wywołanej w metodzie szukajrachunek (slajdy 36-39) 16 Zdarzenie obliczwartoscrachunku na obiekcie typu Rachunek (slajdy 45-46) 43

public float podajwartoscrachunku (int nr, int podatek) { Rachunek rachunek; rachunek = szukajrachunek(nr); if (rachunek!= null) return rachunek.obliczwartoscrachunku(podatek); return 0F; } //Aplikacja Zofia Kruczkiewicz Projektowanie oprogramowania 3 44

(16) float obliczwartoscrachunku(int podatek) Dozór zdarzenia obliczwartoscrachunku na obiekcie typu Rachunek Akcje zdarzenia obliczwartosc na obiekcie typu Rachunek 45

//Rachunek //metoda zdarzeniowa obliczwartoscrachunku // metody użyte w kodzie metody są akcjami zdarzenia //instrukcje warunkowe mogą być użyte jako dozory private ArrayList<Zakup> zakupy = new ArrayList<>(); public float obliczwartoscrachunku (int podatek) { float suma=0; Zakup zakup; Iterator <Zakup> it=zakupy.iterator(); while (it.hasnext()) { zakup = it.next(); suma += zakup.obliczwartosc(podatek); } return suma; } Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 46