Diagram stanów Laboratorium 9

Podobne dokumenty
Laboratorium 8 Diagramy aktywności

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

Diagramy klas i sekwencji Wykład5

Instrukcja 1 Laboratorium 1 Zapoznanie się z wybranym narzędziem UML wprowadzenie do UML

Instrukcja 1 Laboratorium 1 Zapoznanie się z wybranym narzędziem UML wprowadzenie do UML

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Instrukcja 1 Laboratorium 1 Zapoznanie się z wybranym narzędziem UML wprowadzenie do UML

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

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

Laboratorium z przedmiotu: Inżynieria Oprogramowania INP002017_ Laboratorium 11 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Laboratorium 10 Testy jednostkowe z użyciem narzędzia JUnit

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

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

Przykład 1 Iteracja 1 tworzenia oprogramowania

Instrukcja 3 Laboratorium z Podstaw Inżynierii Oprogramowania

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 5

Diagramy czynności Na podstawie UML 2.0 Tutorial

Aplikacje RMI

Laboratorium z przedmiotu: Inżynieria Oprogramowania INP

Aplikacje RMI Lab4

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

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

Klasy i obiekty cz II

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

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

Diagramy klas, diagramy sekwencji

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

Zaawansowane aplikacje WWW - laboratorium

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

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

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

Budowa aplikacji wielowarstwowych. Obsługa zdarzeń

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

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

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

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

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

Metody Metody, parametry, zwracanie wartości

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

Katalog książek cz. 2

Przypomnienie o klasach i obiektach

Tworzenie aplikacji w języku Java

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

Programowanie w Internecie. Java

Budowa aplikacji wielowarstwowych. zastosowanie walidatorów.

Ocena6 Lab8. Ocena5 Lab7

Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie

Te atrybuty wewnętrzne są wyrażane za pomocą tzw. metryk, czyli prostych wyrażeń, wiążących pewne elementy programu (projektu, kodu źródłowego itp.).

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

Programowanie obiektowe

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Specyfikowanie wymagań przypadki użycia

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

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

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

PODEJŚCIE OBIEKTOWE. Przykład 1 metody i atrybuty statyczne

Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne

public enum Environment { Development("Deweloperskie"), Test("Testowe"), Production("Produkcyjne"); private String name;

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

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Programowanie obiektowe

Wzorce logiki dziedziny

Modelowanie obiektowe

Przykład zastosowania notacji UML dla realizacji zastosowania wzorca Mediator (materiały dla studentów na prawach rękopisu)

Platformy Programistyczne Podstawy języka Java

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

WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy

Programowanie obiektowe

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 5

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

MODELOWANIE OBIEKTOWE

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

Wstęp do ruby dla programistów javy

Kurs programowania. Wykład 9. Wojciech Macyna

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

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

Programowanie obiektowe

Builder (budowniczy) Cel: Przykład:

Te atrybuty wewnętrzne są wyraŝane za pomocą tzw. metryk, czyli prostych wyraŝeń, wiąŝących pewne elementy programu (projektu, kodu źródłowego itp.).

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

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

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

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe i zdarzeniowe

Testy jednostkowe - zastosowanie oprogramowania JUNIT 4.0 Zofia Kruczkiewicz

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

Protokół JDBC współpraca z relacyjnymi bazami danych lab3

Programowanie obiektowe

Instrukcja 5 Laboratorium z Podstaw Inżynierii Oprogramowania. Warstwy integracji z bazą danych: Wzorzec DAO Technologia ORM

Diagramy klas, diagramy sekwencji Wykład 4

Kolekcje - pakiet Java Collections Framework

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy

Technologie obiektowe

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

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Programowanie obiektowe

Wywoływanie metod zdalnych

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

Aplikacja wielowątkowa prosty komunikator

Transkrypt:

Diagram stanów Laboratorium 9 Zofia Kruczkiewicz Zofia Kruczkiewicz lab_inp002017_9 1

Modelowanie zachowania obiektu za pomocą diagramu stanów. Opracowanie diagramu stanów dla obiektu wybranej klasy, reprezentującego wpływ różnych przypadków użycia na zmiany stanów tej klasy, modelowanych za pomocą diagramów sekwencji Zofia Kruczkiewicz lab_inp002017_9 2

Modelowanie zachowania obiektu za pomocą diagramu stanów. Cel laboratorium: Definiowanie diagramu stanów dla wybranej klasy Uwaga: Należy rozwijać projekt UML, wykonany podczas lab3-8. 1. Należy wybrać klasę, która należy do modelu danych zdefiniowanego podczas lab5-7, zawierającą logikę biznesową, podobnie jak klasa TitleBook i wykonać dla wybranej klasy diagram stanów podobnie jak przedstawiono to dla klasy TitleBook (wykład 6, przykład w tej instrukcji). 2. Zgodnie z definicją diagramów stanów w języku UML (wykład 6), zdarzeniem dla obiektu danej klasy jest wywołanie operacji tego obiektu przez inny obiekt, a akcjami są operacje użyte do definicji tej operacji. Podczas laboratoriów 5-7 należało wykonać modele operacji poszczególnych klas, wykonane za pomocą diagramów sekwencji. Taki diagram sekwencji operacji wywołanej podczas zdarzenia zawiera operacje, które są akcjami. Są to: operacje wywołane od innych obiektów oraz operacje typu Message-to- Self. Dodatkowo, do akcji należy dołączyć różne wyrażenia należące do algorytmu operacji zdarzeniowej, ale niemodelowane za pomocą diagramów sekwencji np. wyrażenia matematyczne. Zofia Kruczkiewicz lab_inp002017_9 3

Modelowanie zachowania obiektów za pomocą diagramu stanów Przykłady z wykładów 4-6 Przykład tworzenia diagramu stanów w środowisku Visual Paradigm Creating state machine diagrams Zofia Kruczkiewicz lab_inp002017_9 4

Diagram stanów klasy TitleBook Zdarzenia: equals, addbook, searchfreebook, getbook

Diagram przypadków użycia (wykład 4 część 1, przykład 3) wybrany fragment Zofia Kruczkiewicz lab_inp002017_9 6

Diagram klas uzyskany w procesie projektowania (przebieg pokazany w dodatku do wykładu 5) 7

Klasa Facade udostępnia metody logiki biznesowej generuje bezpośrednio 3 zdarzenia na obiektach z rodziny TitleBook przez wywołanie jego metod: addbook, searchfreebook, getbook oraz 1 zdarzenie generuje pośrednio: equals package subbusinesstier; import java.time.localdate; import java.time.month; import java.util.arraylist; import java.util.arrays; import java.util.list; import subbusinesstier.entities.client; import subbusinesstier.entities.titlebook; public class Facade { List<TitleBook> titlebooks; List<Client> clients; public Facade() { public List<TitleBook> gettitlebooks() { public void settitlebooks(list<titlebook> titlebooks) { public List<Client> getclients() { public void setclients(list<client> clients) { 8

Zdarzenia wywołane na obiektach z rodziny TitleBook przez obiekt typu Facade oraz jego atrybut titlebooks equals, addbook, searchfreebook, getbook public TitleBook searchtitlebook(titlebook titlebook) { public Client searchclient(client client) { public String addclient(string data[]) { public String addtitlebook(string data[]) { PU Operacje_Na_Ksiazkach PU Rejestracja_Klienta PU Dodaj_Tytul_Ksiazki public ArrayList<String> addbook(string data1[], String data2[]) { public String addreservation(string data1[], String data2[], LocalDate date) { //pomocnicze metody public ArrayList<String> searchbooksoftitle(string data[]) { public Object[][] gettitlebooksmodel() { public String PrintBooks() { public String PrintTitleBooks() { public static void main(string t[]) { PU Dodaj_Ksiazke PU Rezerwacja 9

public ArrayList<String> addbook(string data1[], String data2[]) Zdarzenia: equals addbook 9 3 12 10 10

//class Facade List<TitleBook> titlebooks; List<Client> clients; public Facade() { titlebooks = new ArrayList<>(); clients = new ArrayList(); public ArrayList<String> addbook(string data1[], String data2[]) { TitleBook help1, titleexist; Factory fabryka = new Factory(); help1 = fabryka.createtitlebook(data1); if ((titleexist = searchtitlebook(help1))!= null) { //equals return titleexist.addbook(data2); return null; //addbook 11 11

//class Facade public TitleBook searchtitlebook(titlebook titlebook) { int idx; if ((idx = titlebooks.indexof(titlebook))!= -1) { return titlebooks.get(idx); return null; Zofia Kruczkiewicz lab_inp002017_9 12

Wiadomości metody addbook wywołanej jako zdarzenie na obiekcie z rodziny TitleBook przez obiekt typu Facade - odwzorowane na akcje na diagramie stanów 13 Zofia Kruczkiewicz lab_inp002017_9 13

//class TitleBook List<Book> books; public TitleBook() { books = new ArrayList(); public ArrayList<String> addbook(string data[]) { Factory factory = new Factory(); Book newbook; newbook = factory.createbook(data); if (searchbook(newbook) == null) { books.add(newbook); newbook.settitlebook(this); return getbooksmodel(); return null; 14

2) public String addreservation(string data1[], String data2[], LocalDate date) Zdarzenia: equals searchfreebook getbook 15

//class Facade obiekt tej klasy generuje zdarzenia na obiekcie typu TitleBook public String addreservation(string data1[], String data2[], LocalDate date) { String result; Factory factory = new Factory(); TitleBook helptitlebook = factory.createtitlebook(data1), titlebook; titlebook = this.searchtitlebook(helptitlebook); //equals if (titlebook!= null) if (titlebook.searchfreebook(date)) { //searchfreebook Client helpclient = factory.createclient(data2), client; client = this.searchclient(helpclient); if (client!= null) { client.addreservation(titlebook.getbook(), date); //getbook result = "reserved"; else result = "no such a client"; else result = "no free book"; else result = "no such a title"; return result; Zofia Kruczkiewicz lab_inp002017_9 16

Wiadomości metody searchfreebook wywołanej jako zdarzenie na obiekcie z rodziny TitleBook przez obiekt typu Facade odwzorowane na akcje na diagramie stanów 17 17

//class TitleBook List<Book> books; public TitleBook() { books = new ArrayList(); private Book book; //atrybut book przechowuje obiekt typu //Book wyszukany do rezerwacji public boolean searchfreebook(localdate date) { for (int i = 0; i < books.size(); i++) { book = books.get(i); if (book.isfree(date)) return true; return false; Zofia Kruczkiewicz lab_inp002017_9 18