• Nie Znaleziono Wyników

Laboratorium 8 Diagramy aktywności

N/A
N/A
Protected

Academic year: 2021

Share "Laboratorium 8 Diagramy aktywności"

Copied!
28
0
0

Pełen tekst

(1)

Laboratorium 8

Diagramy aktywności

Zofia Kruczkiewicz

Zofia Kruczkiewicz – Lab_INP002017_8 1

(2)

Modelowanie zachowania obiektów za pomocą diagramów sekwencji i aktywności - porównanie

Zofia Kruczkiewicz – Lab_INP002017_8 2

Modelowanie zachowania obiektów za pomocą

diagramów aktywności.

(3)

Cel laboratoriów:

Modelowanie procesów biznesowych procesów realizowanych przez tworzone oprogramowanie w celu zautomatyzowania procesów „świata rzeczywistego” – kontynuacja tworzenia modelu przypadków użycia z wykorzystaniem diagramów czynności (aktywności) (wykład4, instrukcja bieżąca).

Uwaga: Należy rozwijać projekt UML, wykonany podczas lab3-7.

Definiowane zachowania wybranych przypadków użycia za pomocą diagramów czynności – kontynuacja tworzenia modelu przypadków użycia (wg bieżącej instrukcji). Wybrane przypadki użycia muszą realizować procesy biznesowe „ świata rzeczywistego” z p.1. Grupa dwuosobowa realizuje diagram dla jednego złożonego przypadku użycia. Złożony przypadek użycia powinien zawierać relacje

<<include>>, lub/i <<extend>>, lub/i <<use>>. Scenariusze poszczególnych torów powinny odpowiadać scenariuszom modelowanych za pomocą diagramów sekwencji (z lab5-7);

Uwagi:

1. Należy zastosować elementy diagramów czynności przedstawione na wykładzie 4 2. Diagramy powinny zawierać tzw. partycje (tory).

3. W diagramie czynności reprezentującym scenariusze przypadku użycia głównego i powiązanych podanymi wyżej relacjami należy partycje zdefiniować jako typy obiektów (klasy) używanych w tworzonym oprogramowaniu i realizujących logikę biznesową scenariuszy. Partycja wywołująca logikę biznesową umieszczoną w kolejnych partycjach powinna reprezentować interfejs graficzny użytkownika np. GUI, Warstwa prezentacji itp.

4. Przejścia łączące elementy typu: Object Node, Central Buffer Node oraz Data Store Node z innymi elementami diagramu powinny być typu Object Flow. Przejścia pomiędzy pozostałymi elementami diagramu powinny być typu Control Flow. Pozostale informacje podano w Dodatku do iinstrukcji (str.27-28)

Modelowanie zachowania obiektów za pomocą diagramów aktywności.

(4)

Przykłady z wykładów 4-6

Przykład tworzenia diagramu aktywności w środowisku Visual Paradigm

Drawing activity diagrams

(https://www.visual-

paradigm.com/support/documents/vpuserguide/94/2580/6713_drawingactiv.html)

Zofia Kruczkiewicz – Lab_INP002017_8 4

Modelowanie zachowania obiektów za pomocą

diagramów aktywności

(5)

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

5

(6)

Początkowa definicja diagramu klas – zdefiniowano powiązania między klasami

6

(7)

7

Rezultat – diagram klas uzyskany w procesie projektowania (przebieg pokazany w dodatku do wykładu 5)

(8)

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) { }

Klasa Facade udostępnia metody logiki biznesowej – implementacja przypadków użycia wywoływanych przez aktorów na diagramie przypadków użycia

(9)

public TitleBook searchTitleBook(TitleBook titleBook) {}

public Client searchClient(Client client) {}

public String addClient(String data[]) {}

public String addTitleBook(String data[]) {}

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 Operacje_Na_Ksiazkach PU Rejestracja_Klienta PU Dodaj_Tytul_Ksiazki

PU Dodaj_Ksiazke

PU Rezerwacja

(10)

1. Diagram aktywności dla PU Dodaj_ksiazke

10

DS 1 DS 2

(11)

11

(DS1) Wstawianie nowej książki o podanym tytule – 1-y etap public ArrayList<String> addBook(String data1[], String data2[])

9

3

12

11

(12)

12

//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) { return titleExist.addBook(data2);

}

return null;

}

Zofia Kruczkiewicz – Lab_INP002017_8 12

(13)

(DS2) Wstawianie nowej książki o podanym tytule – 2-i etap public ArrayList<String> addBook(String data[])

13

Zofia Kruczkiewicz – Lab_INP002017_8 13

(14)

14

//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;

}

(15)

2. Diagram aktywności dla PU Rezerwacja DS 2

DS 1 DS 3, DS 5 DS 4

(16)

16

(DS1) Rezerwacja ksiązki: public String addReservation(String data1[], String data2[], LocalDate date)

(17)

17

//class Facade

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

if (titleBook != null)

if (titleBook.searchFreeBook(date)) { //book.isFree(date) Client helpClient = factory.createClient(data2), client;

client = this.searchClient(helpClient);

if (client != null) {

client.addReservation(titleBook.getBook(), date);

result = "reserved";

} else result = "no such a client";

} else result = "no free book";

else result = "no such a title";

return result;

}

Identyfikacja torów na diagramie aktywności dla procesu Rezerwacja

(18)

(DS2) Wyszukiwanie wolnej książki do rezerwacji public boolean searchFreeBook(LocalDate date)

17

Zofia Kruczkiewicz – Lab_INP002017_8

(19)

19

//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;

}

(20)

(DS3) Sprawdzanie przez książkę, czy ma wolny termin rezerwacji public boolean isFree(LocalDate date)

5

Zofia Kruczkiewicz – Lab_INP002017_8

(21)

21

//class Book private List<Reservation> reservations;

public Book() {

reservations = new ArrayList();

}

public boolean isFree(LocalDate date) { Reservation reservation;

for (int i = 0; i < reservations.size(); i++) { reservation = reservations.get(i);

if (!reservation.isFree(date)) { return false;

} }

return true;

}

(22)

22

(DS4) Wykonanie rezerwacji przez obiekt typu Client – 1-y etap public void addReservation(Book book, LocalDate date)

(23)

23

//class Client private List<Reservation> reservations;

public Client() {

reservations=new ArrayList();

}

public void addReservation(Book book, LocalDate date) {

Factory factory=new Factory();

Reservation reservation=

factory.createReservation(number++, date);

reservation.setClient(this);

reservations.add(reservation);

book.addReservation(reservation);

}

(24)

24

(DS5) Wykonanie rezerwacji przez obiekt typu Book – 2-i etap public void addReservation(Reservation reservation)

(25)

25

private List<Reservation> reservations;

public Book() {

reservations = new ArrayList();

}

public void addReservation(Reservation reservation) { reservation.setBook(this);

reservations.add(reservation);

}

// class Book

(26)

Dodatek – informacja tworzeniu diagramu

aktywności

(27)

Informacja tworzeniu diagramu aktywności – część 1

(28)

Informacja tworzeniu diagramu aktywności – część 2

Cytaty

Powiązane dokumenty

(14) Wykonanie rezerwacji przez obiekt typu Client – 1-y etap public void addReservation(Book book, LocalDate

(DS4) Wykonanie rezerwacji przez obiekt typu Client – 1-y etap public void addReservation(Book book, LocalDate

It has been pointed out therein that the contents of that principle amount to a requirement that any act adopted by a body of the European Union, which is intended to have legal

Celem badań polskich naukowców było wyodrębnienie przedmiotu nauki prawa admi- nistracyjnego i nauki administracji, pojęcia administracji, a także okre- ślenie stosunku

Zatem, podobnie jak tożsamość jednostki, indywidualny wymiar tożsamości konstytucyjnej opiera się na pojmowaniu „ja” jako odrębnego od innych, zaś tożsamość narodowa

Th e Court of Appeal held that the New York Convention did not cover the question of whether Dutch courts should recognise the deci- sions by the Russian courts to set aside

tu przypadku autorskich praw majątkowych należy dopatry- wać się użycia przez ustawodawcę, do ukształtowania tego prawa podmiotowego, pojmowanego jako złożona sytuacja prawna,

Swadźba jako kryteria sprawności systemów gospodarczych wymienia: wzrost gospodarczy, zatrudnienie i bezrobo- cie, infl ację i stopy procentowe, defi cyt budżetowy i dług