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

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

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

Diagramy stanów Na podstawie UML 2.0 Tutorial Zofia Kruczkiewicz

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

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

Diagramy klas, diagramy sekwencji Wykład 4

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Diagramy czynności Na podstawie UML 2.0 Tutorial

Implementacja modelu obiektowego

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

Projekt sytemu informatycznego podejście obiektowe

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

Diagramy klas, diagramy sekwencji tworzenie modeli analizy i projektu

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

TECHNOLOGIE OBIEKTOWE. Wykład 3

Diagram stanów Laboratorium 9

Diagramy stanów Na podstawie UML 2.0 Tutorial Zofia Kruczkiewicz

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

Diagramy klas, diagramy sekwencji

Laboratorium 8 Diagramy aktywności

Język UML w modelowaniu systemów informatycznych

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

Literatura. J. Nilsson: Applying Domain-Driven Design and Patterns,With Examples in C# and.net, Addison-Wesley Professional, 2006

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 5

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Instrukcja 3 Laboratorium z Podstaw Inżynierii Oprogramowania

Język UML w modelowaniu systemów informatycznych

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 5

TECHNOLOGIE OBIEKTOWE WYKŁAD 2. Anna Mroczek

Podstawy programowania III WYKŁAD 4

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

NIFIED M L ODELLING ANGUAGE. Diagramy czynności

Michał Adamczyk. Język UML

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

Platformy Programistyczne Podstawy języka Java

Szablony klas, zastosowanie szablonów w programach

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

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

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

Metody Metody, parametry, zwracanie wartości

Laboratorium z przedmiotu: Inżynieria Oprogramowania INP

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

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

Modelowanie obiektowe

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

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Przykład 1 Iteracja 1 tworzenia oprogramowania

Inżynieria oprogramowania

Modelowanie i analiza. warstwy biznesowej aplikacji

Podstawy języka UML2 w realnych projektach

Inżynieria oprogramowania Jarosław Kuchta. Modelowanie interakcji

Diagramy czynności. Widok logiczny. Widok fizyczny

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

UML. zastosowanie i projektowanie w języku UML

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

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

Programowanie obiektowe

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

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

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

Wzorce logiki dziedziny

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

Znaleziony - jeżeli nadawca nie jest znany w obrębie danego fragmentu Utracony - jeżeli odbiorca komunikatu nie jest znany w obrębie danego fragmentu

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Budowa aplikacji wielowarstwowych. Zastosowanie szablonów, tabel oraz plików typu properties

Budowa aplikacji wielowarstwowych. Obsługa zdarzeń

Projektowanie oprogramowania cd. Projektowanie oprogramowania cd. 1/34

Diagramy stanów i aktywności. Jarosław Kuchta Dokumentacja i Jakość Oprogramowania

UML w Visual Studio. Michał Ciećwierz

Projektowanie systemów informacyjnych

Diagramy interakcji. Jarosław Kuchta Dokumentacja i Jakość Oprogramowania

Wykład 1 Inżynieria Oprogramowania

Charakterystyka oprogramowania obiektowego

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

Przykład 1 Iteracja 2 tworzenia oprogramowania Diagramy klas i sekwencji:

Podstawy projektowania systemów komputerowych

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Programowanie obiektowe

Języki i metody programowania Java Lab2 podejście obiektowe

Podejście obiektowe. Tablice (1) obiektów

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

Klasy i obiekty cz II

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

Wykład 5: Więcej o Klasach i Metodach

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Język UML w modelowaniu systemów informatycznych

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

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

Przypomnienie o klasach i obiektach

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 1

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

Kolekcje - pakiet Java Collections Framework

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

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

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

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

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Instrukcja 4 Laboratorium z Podstaw Inżynierii Oprogramowania. Warstwa klienta: Interfejs graficzny użytkownika

Iteracyjno-rozwojowy cykl oprogramowania cykl 2. Java Zofia Kruczkiewicz 1

BEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Transkrypt:

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

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 2

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 3

Diagram czynności przypadku użycia Wstawianie nowego zakupu (model przypadku użycia w warstwie biznesowej) Diagram aktywności reprezentujący zaznaczoną część scenariusza diagramów sekwencji ze slajdu 5 oraz slajdu 7 4

(11) Wstawianie nowego zakupu void TAplikacja::Wstaw_zakup (int nr, int ailosc, String dane[]) 9 3 12 Zofia Kruczkiewicz, Modelowanie i analiza systemów informatycznych 4 5

//TAplikacja public void Wstaw_zakup (int nr, int ile, String dane[]) { TRachunek rachunek; TFabryka fabryka = new TFabryka(); TProdukt1 produkt1 = fabryka.podaj_produkt(dane); if ((rachunek=szukaj_rachunek(nr))!= null) if ((produkt1=szukaj_produkt(produkt1))!= null) rachunek.dodaj_zakup(new TZakup(ile, produkt1)); } Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 6

(12) void TRachunek::Dodaj zakup(tzakup atzakup) 13 7

//TRachunek private ArrayList<TZakup> Zakupy = new ArrayList<TZakup>(); public void Dodaj_zakup (TZakup atzakup) { TZakup zakup; if ((zakup = Szukaj_zakup(aTZakup))!= null) zakup.dodaj_ilosc(atzakup.podaj_ilosc()); else Zakupy.add(aTZakup); } Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 8

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 9

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 10

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 11

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

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 13

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) Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 14

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 15

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). 16

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 17

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

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

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 20

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 21

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

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 23

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 24

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

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) 26

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 27

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 28

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

Przykład 2 - Klasa TRachunek Zdarzenie Dodaj_zakup (slajdy 31-33 i 39-40) Zdarzenie Podaj_wartosc (slajdy 41-45) Zdarzenie equals (slajdy 34-38) 30

Projekt przypadku użycia zdarzenie Dodaj_zakup 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 31

(11) Wstawianie nowego zakupu generowanie zdarzeń equals i Dodaj_zakup na obiekcie typu TRachunek (void TAplikacja::Wstaw_zakup (int nr, int ailosc, String dane[])) 9 Zdarzenie equals na obiekcie typu TRachunek w metodzie indexof kolekcji Rachunki, wywołanej w metodzie Szukaj_rachunek (slajdy 34-38) Zofia Kruczkiewicz, Modelowanie i analiza systemów informatycznych 4 3 12 Zdarzenie Dodaj_zakup na obiekcie typu TRachunek (slajdy 39-40) 32

public void Wstaw_zakup (int nr, int ile, String dane[]) { TRachunek rachunek; TFabryka fabryka = new TFabryka(); TProdukt1 produkt1 = fabryka.podaj_produkt(dane); if ((rachunek=szukaj_rachunek(nr))!= null) if ((produkt1=szukaj_produkt(produkt1))!= null) rachunek.dodaj_zakup(new TZakup(ile, produkt1)); } //TAplikacja Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 33

(9) Szukanie rachunku (TRachunek TAplikacja::Szukaj_rachunek(int nr)) Zdarzenie equals na obiekcie typu TRachunek w metodzie indexof kolekcji Rachunki typu ArrayList 10 34

//TAplikacja static private ArrayList <TRachunek> Rachunki = new ArrayList <TRachunek>(); public TRachunek Szukaj_rachunek (int nr) { TRachunek rachunek = new TRachunek(nr); int idx; if ((idx=rachunki.indexof(rachunek))!= -1) { rachunek=rachunki.get(idx); return rachunek; } return null; } Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 35

//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 TRachunek w metodzie indexof kolekcji Rachunki typu ArrayList Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 36

(10) boolean TRachunek::equals(Object rachunek) - metoda zdarzeniowa Dozór zdarzenia equals na obiekcie typu TRachunek Akcja zdarzenia equals na obiekcie typu TRachunek zwrócenie wyniku dozoru true lub false Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 37

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

(12) void TRachunek::Dodaj zakup(tzakup atzakup) metoda zdarzeniowa 13 Dozór zdarzenia Dodaj_zakup na obiekcie typu TRachunek Akcje zdarzenia Dodaj_zakup na obiekcie typu TRachunek 39

//TRachunek //metoda zdarzeniowa Dodaj_zakup // metody użyte w kodzie metody są akcjami zdarzenia //instrukcje warunkowe mogą być użyte jako dozory private ArrayList<TZakup> Zakupy = new ArrayList<TZakup>(); public void Dodaj_zakup (TZakup atzakup) { TZakup zakup; if ((zakup = Szukaj_zakup(aTZakup))!= null) zakup.dodaj_ilosc(atzakup.podaj_ilosc()); else Zakupy.add(aTZakup); } Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 40

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 41

(15) Obliczanie wartosci rachunku generowanie zdarzeń equals i Podaj_wartosc na obiekcie typu TRachunek (float TAplikacja::Podaj_wartosc(int nr, int podatek_)) 9 Zdarzenie equals na obiekcie typu TRachunek w metodzie indexof kolekcji Rachunki, wywołanej w metodzie Szukaj_rachunek (slajdy 34-38) 16 Zdarzenie Podaj_wartosc na obiekcie typu TRachunek (slajdy 44-45) 42

//TAplikacja public float Podaj_wartosc (int nr, int podatek_) { TRachunek rachunek; rachunek = Szukaj_rachunek(nr); if (rachunek!= null) return rachunek.podaj_wartosc(podatek_); return 0F; } Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 43

(16) float TRachunek::Podaj_wartosc(int podatek_) metoda zdarzeniowa Dozór zdarzenia Podaj_wartosc na obiekcie typu TRachunek Akcje zdarzenia Podaj_wartosc na obiekcie typu TRachunek 17 Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 44

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