243
Modelowanie i analiza Modelowanie i analiza systemów informatycznych systemów informatycznych prof. A.Katkow Email [email protected]

Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Modelowanie i analiza Modelowanie i analiza systemów informatycznychsystemów informatycznych

prof. A.Katkow

Email [email protected]

Page 2: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

LiteraturaLiteratura 1. S.Wrycza, B.Marcinkowski, K.Wyrzykowski, Język UML 2.0 w modelowaniu

systemów informatycznych, Helion, 2005.

2. W. Dąbrowski, A.Stasiak, M.Wolski, Modelowanie systemów informatycznych w

języku UML, MIKOM, Warszawa, 2007.

3. M.Weisfeld, Myślenie obiektowe w programowaniu, Helion, 2010.

4. GradyBooch, James Rumbaugh, Ivar Jacobson, UML, Przewodnik użytkownika,

WNT, 2003.

5. B.Stroustrup, Język C++, WNT, Warszawa, 1993.

6. G.Grębosz, Symfonia C++, W-wa, 1996.

7. K. Jamsa, Wygraj z C++,W-wa,1996.

8. Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Inżynieria

oprogramowania: Wzorce projektowe (Wyd. II). Warszawa: WNT, 2008.

9. GradyBoochUMLpdf

2

Page 3: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

3

1. Środowiska modelowania

komputerowego i języki

programowania

2. Systemy złożone

metody projektowania

obiektowo orientowany

paradygmat

3. UML (Unified Modeling Language)

Historia

Podstawy

Model pojęciowy UML

4. Zastosowanie UML

ATM (Automated Teller Machine)

Tworzenie Apletów

Internet

Analiza procesów przejściowych

Symulacja automatów skończonych

Projektowanie sterowników

5. Technika modelowania CRC

( ang. class-responsibility-collaboration

cards)

6. Modelowanie obiektowe ekologii

oceanu.

Projekt przykładowy

Page 4: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

4

Edytor UML :

Preferowany Edytor UML Violet (violet.jar)

Dołączony do Wykładu

Page 5: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

1. Środowiska modelowania 1. Środowiska modelowania komputerowego i języki komputerowego i języki

programowaniaprogramowania

Page 6: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Rozwój systemów modelowania Rozwój systemów modelowania komputerowego komputerowego

Charles Babbage (1791-1871)

Projekt maszyny analitycznej

6

•Lady Augusta Ada Lovelase (Augusta Ada

King, hrabina Lovelace) (1815-1852)

Pierwsze programy

Page 7: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

•Alan Mathison Turing (1912-1954)

Maszyna Turinga

Test Turinga

•John von Neumann (1903-1957)

Architektura von Neumana

Los Alamos

7

Automaty komórkowe

Sieci neuronowe

Los Alamos

Księga „Przygody

matematyka”

•Stanisław Ułam (1909-1984)

Page 8: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Języki programowaniaJęzyki programowania

• COBOL (Common Business Oriented Language) -(1959) (do przekształcania zbiorów danych alfanumerycznych i tworzenia raportów)

• PASCAL (l 970-N.Wirth)

(do celów dydaktycznych- nauczania podstaw programowania)

8

FORTRAN (FORmulaTRANslator)-(l954-J.Backus)

FORTRAN 77, FORTRAN 90/95, (do rozwiązywania

problemów obliczeniowych)

• ALGOL 58 (ALGOrithmic Language) (1958 ),

ALGOL60, ALGOL 66 (dla celów naukowych, przy

opisie algorytmów) Peter Naur Peter Naur

Niclaus Wirth

J.Backus

Page 9: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Języki programowaniaJęzyki programowania C (1972 - Dennis M.Ritchie, B.W.Kernighan) (do opracowania systemu

operacyjnego UNIX)

Dennis M.Ritchie B.W.Kernighan

C - standard K&R;

1983 - ANSI (American National Standard Institute) Standard C;

C++ (1986 - Bjarne Stroustrup)

Bjarne Stroustrup

ADA 83 (1980), Ada 95 (1990) (Departament Obrony USA)

(do tworzenia dużych systemów oprogramowania i systemów czasu rzeczywistego)

9

Page 10: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

KLASYFIKACJA JEZYKOW (BEGNER)KLASYFIKACJA JEZYKOW (BEGNER)

Pierwsza generacja (1954-1958) FORTRAN I (John Backus z IBM) Formuly matematyczne ALGOL-58 Formuly matematyczne FLOW-MATIC Formuly matematyczne IPL V Formuly matematyczne Druga generacja (1959-1961) FORTRAN II Podprogramy, rozdzielna kompilacja ALGOL-60 Struktura blokowa, typizacja danych COBOL Opis danych, praca z plikami BASIC Składnia zbliżona do języku angielskiego Lisp Opracowanie wyrazów, wskażniki

10

Lisp czyta (ang. read) wprowadzone wyrażenie, ewaluuje je (ang. evaluate) i

wypisuje (ang. print loop) wynik.

Page 11: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Trzecia generacja (1962-1970) PL/1 Fortran + ALGOL+COBOL ALGOL-68 Rozbudowany ALGOL-60 Pascal (Niclaus Wirth) Rozwój ALGOL-60 C Wskaźniki (ang. Pointers) Simula Klasy, abstrakcyjne typy danych Czwarta generacja (1970-1980) Smalltalk Klasy, abstrakcyjne typy danych C++ Object Pascal CLOS ADA (Jean Ichbiah)

11

Języki obiektowe i

obiektowo-orientowane

Common Lisp Object System (CLOS)

Sądzę, że jest to jedyny język programowania który można szanować pod

względem matematycznym, gdyż tylko o nim jestem w stanie udowadniać twierdzenia!

— Gregory Chaitin

Page 12: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

12

Projekt GNU – przedsięwzięcie

mające na celu stworzenie

kompletnego, wolnego,

uniksopodobnego systemu

operacyjnego GNU,

zapoczątkowane w

styczniu 1984 roku przez Richarda

Matthew Stallmana

z Massachusetts Institute of

Technology (MIT)

GNU projekt na General Public License –

licencja wolnego i otwartego oprogramowania (open-source

software) stworzona w 1989 roku przez Richarda

Stallmana i Ebena Moglena na potrzeby Projektu GNU

(rekurencyjny akronim „GNU’s not Unix”).

Open-source software

Page 13: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

13

Celem licencji GNU GPL jest przekazanie użytkownikom

czterech podstawowych wolności:

(wolność 0) wolność uruchamiania programu w dowolnym celu

(wolność 1) wolność analizowania, jak program działa i

dostosowywania go do swoich potrzeb

(wolność 2) wolność rozpowszechniania niezmodyfikowanej

kopii programu

(wolność 3) wolność udoskonalania programu i publicznego

rozpowszechniania własnych ulepszeń, dzięki czemu może z

nich skorzystać cała społeczność.

Page 14: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Języki programowania na licencji GPLJęzyki programowania na licencji GPL

14

Licenzja: Python rozwijany jest jako projekt Open Source,

zarządzany przez Python Software Foundation

Perl (Larry Wall, 1987). Interpretowany język

programowania. Perl to wolne oprogramowanie,

dostępne pod licencjami GPL. Początkowo

przeznaczony głównie do pracy z danymi

tekstowymi.

Standardowa implementacja to CPython (pisany w C), ale istnieją też inne, takie

jak JPython (w Javie), IronPython (na platformę .NET) i PyPy (w Python).

Python (Guido van Rossman, 1990). Python

wspiera różne paradygmaty programowania:

obiektowe, imperatywne, w mniejszym stopniu

również programowanie funkcyjne. Podtrzymuję

dziedziczenie typów wbudowanych. Dziedziczenie

wielu bazowe.

W latach dziewięćdziesiątych powstał cały szereg

imperatywno-obiektowych języków:

Larry Wall

Guido van Rossman

Page 15: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

15

Z tego powodu że linia poleceń Lisp jest nazywana „Read-Eval-Print Loop„ lub

w skrócie REPL – tak nazywa się interaktywne środowisko programowania,

które w tym lub innym stopniu zawiera prawie każde środowisko

interpretowanych języków programowania.

Ruby (Yukihiro Matsumoto, 1995). Ruby to interpretowany, w

pełni obiektowy i dynamicznie typowany język programowania.

Ruby on Rails (często nazywany RoR lub po prostu Rails) –

framework open source do szybkiego tworzenia aplikacji

webowych.

PHP autorstwa Rasmusa Lerdorfa (1995). PHP obiektowy

język programowania zaprojektowany do generowania stron

internetowych w czasie rzeczywistym. Implementacja PHP

wraz z serwerem WWW Apache oraz serwerem baz danych

MySQL określana jest jako platforma AMP (w środowisku

Linux – LAMP, w Windows – WAMP)

Interaktywne środowisko programowania

Yukihiro Matsumoto

Rasmus Lerdorf

Page 16: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

IDE (IDE (IntegratedIntegrated Development Environment)Development Environment) do projektowania wizualnegodo projektowania wizualnego

Visual C++

Visual Basic

Visual Fortran

Visual Java

Visual C#

Delphi

Builder C++

Microsoft .NET (IDE CLR (Common Language Runtime))

(C++/CLI, C#, J#,Visual Basic, F#).

16

I wielu innych …

Page 17: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

CommonCommon Language Language InfrastructureInfrastructure (CLI)(CLI)

17

Wspólny język

pośredni (CIL)

Środowisko

uruchomieniowe (CLR)

Polecenia maszynowe,

kod bitowy

.NET Framework

Wspólna platforma

programistyczna

(Microsoft)

Page 18: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

18

Microsoft

Intermediate

Language (MSIL)

Głównym twórcą C# jest Anders Hejlsberg, czyli nie kto inny jak projektant

produkowanego przez firmę Borland pakietu Delfi a także TurboPascal.

W Microsoft A.Hejlsberg rozwijał m.i. środowisko Visual J++.

Anders Hejlsberg

Page 19: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

19

Taksonomia Flynna

Michael Flynn

Page 20: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

2. Systemy złożone2. Systemy złożone

metody projektowania obiektowo orientowany paradygmat

Page 21: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

21 R. Muszynski

Page 22: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

PIĘĆ CECH SYSTEMÓW ZŁOŻONYCH

22

3. Związki wnętrz podsystemu są mocniejsze niż związki

między podsystemami.

1. Systemy złożone zwykle składają się z współzależnych

podsystemów, które z kolej także mogą być rozdzielone na

podsystemy, tworzą takim czynom hierarchie podsystemów.

2. Wybór najniższego poziomu abstrakcji nie określony z góry i w

dużym stopniu określa się badaczem.

Page 23: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

23

4. W procesie rozwoju systemu podsystemy, które od początku liczą się

jako złożone, z czasem są rozpatrywane jako elementy niższego

poziomu abstrakcji i wykorzystują się jako elementy przy

konstruowaniu bardziej złożonych systemów.

5. Pracujący system złożony koniecznie jest rezultatem rozwoju

pracującej prostej systemy. Praktyka pokazuje, że

system złożony, zaprojektowany ot początku do końca na

papierze, nigdy nie pracuję i jego nie można uruchomić.

Page 24: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

UPORZĄDKOWANIE CHAOSU UPORZĄDKOWANIE CHAOSU

1.Dekompozycja (divide et impera) Rozdzielenie systemu złożonego na części składowe (podsystemy)

dekompozycja algorytmiczna (dekompozycja w sensie rozdzielenia algorytmów, koncentracja na

kolejności oddziaływania);

dekompozycja obiektowo orientowana (świat obiektów, które są między sobą oddziaływają, koncentracja na procesie wzajemnego oddziaływania);

dekompozycja algorytmiczna i obiektowo orientowana (korzystniej na początku wykorzystać podejście obiektowo zorientowane a potem algorytmiczne)

24

(Wprowadzenie porządku w chaos)

Page 25: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

- ignorowanie detali przy rozpatrywaniu systemów złożonych na

domniemanym poziomie analizy względem możliwości człowieka;

- organizacja pamięci człowieka narzuca twarde ograniczenia na ilość

informacji, którą my możemy dostrzec, przeanalizować i pamiętać;

- ludzie mają bardzo wydajne mechanizmy opracowania informacji

złożonych, dzięki umiejętności ignorowania mniej ważne informacje.

25

2.Abstrakcja

Page 26: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

26

- organizacja wnętrz systemu hierarchii klas i obiektów;

-klasyfikacja obiektów do grup powiązanych abstrakcji

(np. rodzaje komórek roślinnych i komórek zwierzęcych).

- klasyfikacja wyraźnie dzieli wspólne i charakterystyczne

właściwości różnych obiektów i pomagają nam odtworzyć ich własne

skomplikowane struktury.

3. Hierarchia

Page 27: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

METODY PROJEKTOWANIA SYSTEMÓW METODY PROJEKTOWANIA SYSTEMÓW ZŁOŻONYCH ZŁOŻONYCH

1.Metoda projektowania strukturalnego

projektowanie od góry do dołu;

dekompozycja dużych zagadnień na mały;

27

2.Metoda organizacji potoków danych

struktura systemu sterowania opiera się na procesie

przekształcenia wejściowego potoku danych w potok danych

wyjściowy;

Page 28: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

3. Projektowanie orientowane obiektowo

projektowany system – całokształt

obiektów wzajemnie oddziaływających się;

obiekty to egzemplarze określonych klas;

klasy tworzą hierarchie;

28

Page 29: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

CEL PROJEKTOWANIACEL PROJEKTOWANIA

Rezultatem projektowania są modele systemu

informatycznego, pozwalające:

zrozumieć strukturę systemu,

utrzymać równowagę wymagań

określić schemat jej realizacje;

29

Page 30: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Obiektowo Obiektowo -- orientowana analiza orientowana analiza (OOA)(OOA)

30

Obiektowo-orientowana analiza skierowana na stworzenie modelów,

najbliżej odpowiadających realnemu światowi, na podstawie

wykorzystania obiektowo-orientowanego ujęcia;

To jest metodologia, zgodnie z której wymagania są formują się na

podstawie pojęć klasów i obiektów, które tworzą słownik odpowiedniej

dziedziny.

Obiektowo - orientowane ujęcie

Page 31: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

ObjektowoObjektowo--orientowane projektowanie (OOD)orientowane projektowanie (OOD)

31

Objektowo-orientowane programowanie (OOP)

Objektowo-orientowane projektowanie - to metodologia projektowania,

która opiera się na dekompozycji obiektowej i na sposoby

przedstawienia jak logicznych i fizycznych, tak statycznych i

dynamicznych modelów systemu w postaci hierarchii podsystemów.

Obiektowo - orientowane programowanie - to metodologia

programowania, która opiera się na przedstawieniu programu w

postaci połączenia obiektów, każdy z których jest przedstawicielem

określonej klasy, a one są tworzą hierarchie na podstawie dziedziczenia.

Page 32: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Abstrahowanie;

Ograniczenie dostępu;

Dzielenie na moduły;

Hierarchie abstrakcji.

Elementy dopełniające:

Typizacja;

Równoległość;

Odporność.

32

Główne elementy koncepcji programowania obiektowo orientowanego:

Page 33: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Abstrakcja istoty obiektu;

Abstrakcja zachowania;

Abstrakcja w postaci maszyny wirtualnej;

Dowolna abstrakcja

Przykłady.

Abstrakcja istoty rzeczy:

Klient - obiekt, wykorzystujący resursy (zasoby) innych obiektów.

33

Abstrahowanie

Page 34: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Protokół - Pełna lista operacji, które obiekt może

wykonywać nad innymi obiektami.

Operacja (operation ) - Ada

Metoda ( method ) - Smalltalk

Funkcja (member-function) - C++

34

Abstrakcja zachowania

Abstrakcja w postaci maszyny wirtualnej:

Przykład:

Emulacja - modelowanie wszystkich operacji maszyny (mikroprocesora) na innej maszynie ( z wykorzystaniem innego mikroprocesora ).

Page 35: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

35

Ograniczenie dostępu:

W C++

private:

protected:

public:

B. Stroustrup - „Ograniczenie dostępu zabezpiecza od

ingerencji ale nie od oszustwa”

Page 36: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Modelowanie obiektoweModelowanie obiektowe

36

Algorytmiczny punkt widzenia.

W takim podejściu podstawowym blokiem konstrukcyjnym jest procedura

lub funkcja.

Programiści koncentrują się na przepływie sterowania i podziale

algorytmów na mniejsze części.

Obiektowy punkt widzenia.

W takim podejściu podstawowym blokiem konstrukcyjnym jest obiekt lub

klasa.

Obiekt i klasa pochodzi z danej dziedziny problemu lub z przestrzeni

dopuszczalnych rozwiązań.

Page 37: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Obiektowo Orientowany ParadygmatObiektowo Orientowany Paradygmat

37

1. Według obiektowo orientowanego ujęcia program dzieli się na

mnóstwo małych części (obiektów) które są niezależne jeden od

drugiego. Obiektowo-orientowana dekompozycja pomaga bardzo

skutecznie stworzyć program, wykorzystując obiekty.

2. Jedna z głównych zalet obiektowo orientowanego paradygmatu jest to

że komponenty czyli obiekty trzeba opracować tylko jeden raz a potem

ich można wykorzystywać wielokrotnie.

Tradycyjne ujęcie orientowane na informacje ( data-centric) jest

bardzo skuteczne przy projektowaniu baz danych i systemów

gromadzenia informacji, czyli takich systemów gdzie mogą zmieniać się

dane ale nie reguły ich opracowania lub zachowanie systemu.

Obiektowo orientowany paradygmat to sposób zapisu programów.

Page 38: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

38

3. Obiektowo orientowane ujęcie przewiduję w każdym opracowanym

obiekcie umiejscowienie jak informacje tak i sposób jej opracowania.

To pozwala tworzyć systemy , które są podatne na łatwe wprowadzenie

zmian jak w treści informacji tak i w zachowaniu systemu.

Główne składowe obiektowo orientowanego ujęcia:

Hermetyzacja, dziedziczenie i polimorfizm.

Hermetyzacja (ang. Encapsulation): W systemach obiektowo orientowanych obiekty są zawierają jak dane,

czyli informację, tak i sposoby jej opracowania. Na tym i polega

hermetyzacja.

Przykład z kontem bankowym :

(konto kredytowe, operacji na koncie kredytowym).

Ograniczony dostęp do danych (private, protected, public)

Page 39: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

39

Dziedziczenie:

class pracownik

{

public:

string imię;

string nazwisko;

private:

int wiek;

….

int ID;

};

W obiektowo-orientowanych systemach dziedziczenie to mechanizm, który pozwala

na tworzenie nowych obiektów na podstawie istniejących. Nowy obiekt: obiekt-

potomek ( ang. child) dziedziczy właściwości rodzicielskiego obiektu (ang. parent).

class pracownik_czasowy

{

public:

string imię;

string nazwisko;

int długosc_umowy

private:

int wiek;

….

int ID;

}; class pracownik_czasowy: public pracownik

{

public:

int długosc_umowy;

};

Dziedziczenie

Page 40: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

40

Obiekt BirdController prostu działa z ogólnym obiektom ptak i nie wie, jaki

dokładnie typu są. Jest to wygodne z punktu widzenia BirdController, bo nie trzeba

pisać specjalny kod, aby określić jak dokładny typ Ptak działa lub jakie zachowanie

ptaka. Co się dzieje, że gdy move() jest wywoływana pomijając specyficzny rodzaj

ptaka. Jakie prawo zachowania nastąpi ( Goose rusza się, lata lub pływa, a Pingwin

rusza się lub pływa)?

Polimorfizm

Page 41: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

41

nadpisywanie funkcji

Rozważmy przykład rodziny klas Shape (Figura geometryczna) . Klasy mają ten sam

jednolity interfejs. Używając polimorfizm, możemy napisać pojedynczy kawałek

kodu, który ignoruje konkretne szczegóły typu i mówi tylko do klasy bazowej.

Rozszerzalność programu.

Jeśli nowy typ - sześciokąt, na przykład - dodamy w drodze dziedziczenia, nasz kod

będzie działać równie dobrze na nowy typ kształtu, jak to miało miejsce dla

istniejących typów. W ten sposób, program jest łatwo rozszerzalny.

Page 42: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

42

Wirtualna funkcja w C ++

void doStuff(Shape& s)

{ s.erase();

// ...

s.draw(); }

Funkcja ta przemawia do każdego kształtu figury, więc jest niezależna od

konkretnego typu obiektu, z którym odbywa się rysowanie i kasowanie ( "&"

oznacza „Weź adres obiektu, który jest przekazywany do doStuff”).

W innej części programu używamy funkcji doStuff ():

Circle c;

Triangle t;

Line l;

doStuff(c);

doStuff(t);

doStuff(l);

Wywołania funkcji doStuff () automatycznie

działają dobrze, zgodnie z dokładnym typem

obiektu.

Page 43: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

43

KLASY

Klasa to opis zbioru obiektów, które mają takie same

atrybuty i funkcje.

Symbolem graficznym jest prostokąt.

nazwa klasy prosta - Klient, Sciana, Wykład …

nazwa klasy ścieżkowa - java::awt::Rectangle

Nazwa klasy może być tekstem zawierającym dowolną liczbę liter, cyfr i

znaków przestankowych (z wyjątkiem dwukropka oddzielającego

nazwę klasy od nazwy jej pakietu), zapisanym w wielu wierszach.

Page 44: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

3. Funkcji - modyfikatory określają się odpowiednimi czasownikami.

Na przykład: draw, move;

4. Funkcji - selektory określają się pytaniami lub odpowiednimi formami

czasownika to be.

Na przykład: extendOf, isOpen;

44

1. Klasę nazywają się jak ogólne rzeczowniki.

Na przykład:

Sensors, Shapes, Flowers;

2. Obiekty nazywają się odpowiednimi zdaniami.

Na przykład :

TheSensor, Ashape, Aflower;

Konwencja nazewnictwa klas, obiektów i funkcji:

Page 45: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

45

ATRYBUTY KLASY

Atrybut to nazwana właściwość klasy. Określa zbiór wartości, jakie

można przypisać do poszczególnych egzemplarzy tej klasy

Klient

nazwisko adres telefon dataUrodzenia

Atrybuty

Działka

szerokość: float długość: float cena: float jestZalesiona: bool = false

Atrybuty

Wartości domyślne

Page 46: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

46

OPERACJE

Operacja to implementacja pewnej usługi,

której wykonania można zażądać od każdego obiektu klasy.

Nazwa operacji może być dowolnym tekstem.

Każdy wyraz w nazwie - poza pierwszym - zaczyna się zwykle wielką literą

(np. move lub isEmpty).

Rectangle

+kolor: black

+add() +dodajKolor() +move() +isEmpty()

Operacje

Drzewo

+wiek: int

+dodajKolor() +grow() +ustawWiek(t: Wiek) +odczytajWiek(): Wiek -przesuń()

Wartości domyślne

Page 47: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

47

47

Organizacja atrybutów i operacji

Symbol klasy nie musi zawierać wszystkich atrybutów i operacji.

Pusta sekcja symbolu klasy, dotycząca atrybutów lub

operacji, nie oznacza wcale, że nie ma ich w klasie, a

jedynie to, że nie zdecydowano się ich przedstawić na

diagramie.

Fotel

„konstruktor” Fotel{} … „gatunek” +wybierzZKolekcji() … „przetwarzanie” +wstaw() +przesuń() +zmieńKolor() +usuń() …

Stereotyp

Dla zaznaczenia, że klasa ma więcej atrybutów i

operacji, niż wynikałoby to z symbolu, wystarczy na

końcu każdej listy elementów umieścić wielokropek

(...).

Długie listy atrybutów i operacji,

można podzielić na grupy za pomocą

stereotypów

Page 48: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

48

48

ODPOWIEDZIALNOŚĆ KLASY

Odpowiedzialność (ang. responsibility) klasy to specyfikacja pewnych działań,

które muszą być w stanie wykonać obiekty klasy.

Zobowiązania

Drzewo

Wiek Gatunek …

dodajKolor() ustawWiek(t: Wiek) podajWiek(): Wiek przesun() +grow() …

Resposibilities powinno rosnąć powinno zmieniać kolor liści powinno podawać „wiek”

Operacje

Podczas udoskonalania

modelu trzeba

przełożyć

zobowiązania na

najlepiej je realizujący

zbiór atrybutów i

operacji.

Atrybuty

Nazwa klasy

Page 49: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

49

WIDOCZNOŚĆ ATRYBUTÓW I OPERACJI KLASY

Widoczność to jedna z najważniejszych cech, jakie można określić dla

atrybutów i operacji klasy.

private (prywatna) Tylko dana klasa ma dostęp

do jej składnika. Na diagramie zaznaczamy ten

fakt znakiem -.

public (publiczna) Każda klasa, która ma

dostęp do danej klasy, ma także dostęp do jej

składnika. Na diagramie ten fakt zaznacza się

znakiem +.

protected (chroniona) Każdy potomek klasy

ma dostęp do jej składnika. Na diagramie

zaznacza się znakiem #.

#

+

-

PasekNarzędzi

# bieżącyWybór # liczbaNarzędzi

+ wybierzEgzemplarz() + dodajNarzędzie() + usuńNarzędzie() + pobierzNarzędzie() # odszukajNarzędzie() - poukładaj()

Widoczność w UML odpowiada podobnym pojęciom

zdefiniowanym w większości języków

programowania, takich jak C++, Java, Ada, Eiffel.

Page 50: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Typy Typy relacjirelacji

50

1. inheritance - relacja dziedziczenia;

2. association - relacja wykorzystania;

3. aggregation - relacja zawierania (część składowa);

Przykład:

Page 51: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Relacja zawierania Relacja zawierania

(ang. (ang. AggregationAggregation).).

class Motors {..... public: int power, voltage, number_of_rotation; ..... }; class Sensors {... public: int number_inputs; float sensitive, time_delay; .... };

51

class Escalators

{.....

public:

int rok;

float price, weight;

Motors aMotor;

Sensors aSensor;

....

};

Page 52: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Relacja wykorzystaniaRelacja wykorzystania

(ang. (ang. associationassociation) .) .

class Escalator_controller

• {....

• public:

• int number_outputs;

• char turn_off;

• char turn_off_motor(Motors &Mt)

• {... //cialo funkcji

• return turn_off};

• ......

• };

• ......................................

52

Główny program. main( ) {

Escalators AnEscalator;

AnEscalator.aSensor.number_inputs = 16;

AnEscalator.aMotor.voltage = 380;

}

Page 53: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

53

3. UML (Unified Modeling Language)

Historia

Podstawy

Model pojęciowy UML

Page 54: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

54

Architektura oprogramowania dotyczy:

struktury,

zachowania,

zastosowania

efektywności,

odporności,

możliwości ponownego użycia,

ograniczeń ekonomicznych

ograniczeń technologicznych

systemów informatycznych

UML jest znormalizowanym językiem zapisywania projektu systemu.

Page 55: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Historia. Diagramy Gantta, 1917Historia. Diagramy Gantta, 1917

55

H. L. Gantt po raz pierwszy zastosował do przedstawienia planu produkcji w formie

graficznej w roku 1917. Wykres Gantta jest graficznym sposobem planowania i kontroli.

Wykres ten został wymyślony przez

pułkownika Gantta podczas I Wojny

Światowej i służył w początkowej fazie do

zarządzania służbami medycznymi w

armii brytyjskiej.

Page 56: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

56

Diagramy Kaoru Ishikawy, 1962

Page 57: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Wzorce projekWzorce projektowe, 1979towe, 1979

57

Erich Gamma, Richard Helm, Ralph Johnson, John

Vlissides: Inżynieria oprogramowania: Wzorce projektowe

(Wyd. II). Warszawa: WNT, 2008. Banda Czterech

Wzorce projektowe w architekturze (Christopher Alexandr, 1979)

Wzorce projektowe stanowią abstrakcyjny opis zależności pomiędzy

klasami.

Nazwa wzorca : opisowa oraz unikalna nazwa.

Przeznaczenie: opis celu, który stoi za wzorcem.

Inne nazwy: jeżeli istnieją inne, dobrze znane nazwy wzorca, należy je podać.

Motywacja: scenariusz zawierający problem powiązany z kontekstem.

Struktura: graficzna reprezentacja wzorca, zwykle jako diagram klas

Uczestnicy: lista klas i obiektów stosowanych w tym wzorcu oraz ich zobowiązania.

Współpraca: opis wzajemnej interakcji klas i obiektów wykorzystywanych we

wzorcu.

Konsekwencje: wykaz wyników, efektów ubocznych.

Implementacja: wskazówki dotyczące implementacji wzorca.

Przykładowy kod: przykład zastosowania wzorca w jednym z języków

programowania.

Page 58: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

58

Obserwator (ang. observer) – w informatyce: wzorzec należący do grupy

wzorców czynnościowych. Używany jest do powiadamiania zainteresowanych

obiektów o zmianie stanu pewnego innego obiektu.

Strategia (ang. strategy) to jeden z czynnościowych wzorców projektowych, który

definiuje rodzinę algorytmów i kapsułuje je w postaci klas. Umożliwia wymienne

stosowanie każdego z nich w trakcie działania aplikacji niezależnie od

korzystających z nich klientów.

Kompozyt (ang. composite) jest jednym ze strukturalnych wzorców projektowych,

którego celem jest składanie obiektów w taki sposób, aby klient widział ich jako

pojedynczy obiekt.

Pyłek (ang. flyweight) znany także jako Waga Piórkowa jest jednym ze

strukturalnych wzorców projektowych. Jego celem jest zmniejszenie

wykorzystania pamięci poprzez efektywną obsługę wielu małych obiektów za

pomocą współdzielenia (przetwarzanie równolegle).

Przykłady wzorców projektowych

Page 59: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

59

IBM Rational Rose Developer for Visual Studio oferuje zestaw narzędzi do

programowania w oparciu o model w języku UML, umożliwiający tworzenie

aplikacji działających w środowisku Microsoft Visual Studio. Narzędzie pozwala

na skrócenie czasu tworzenia aplikacji dzięki generowaniu kodu na podstawie

modeli wizualnych w oparciu o język Unified Modeling Language (UML).

Skraca czas tworzenia aplikacji — środowisko modelowania wizualnego pozwala

uprościć proces tworzenia aplikacji.

Integruje procesy projektowania i tworzenia aplikacji — sprzyja integracji zespołu

projektowego, udostępniając wspólny, obsługujący wykonywanie i notację modelu

język UML.

IBM Rational Rose Developer for Visual Studio

Page 60: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Główne cechy UMLGłówne cechy UML

60

UML nadaje się do modelowania

systemów informatycznych

oprogramowanie WWW

systemów wbudowanych czasu rzeczywistego

rzeczywistości

Model pojęciowy UML. Trzy składniki pojęciowe UML

podstawowe bloki pojęciowe:

reguły określającymi sposoby używania bloków pojęciowych

mechanizmy językowe.

elementy konstrukcyjne,

związki,

diagramy

Page 61: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

61

elementy konstrukcyjne,

związki,

diagramy

Bloki pojęciowe

strukturalne,

czynnościowe,

grupujące,

komentujące.

klasa

interfejs

kooperacja

przypadek użycia

klasy aktywne

komponenty

węzły

interakcja

maszyna stanowa

elementy konstrukcyjne

czynnościowe,

strukturalne

Page 62: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

62

zależność (ang. association)

dziedziczenie (ang. inheritance)

agregacja (ang. aggregation)

17 rodzaje zależności

bind (powiązać),

derive (pochodzić z)

friend (zaprzyjaźniony)

instanceOf (przypadek)

send (wysłać)

trace (rejestrować)

związki

nazwa,

role

liczebność

agregacja

agregacja

elementy konstrukcyjne,

związki,

diagramy

Bloki pojęciowe

dziedziczenie

-private

# protected

+ public

zależność

Page 63: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

63

elementy konstrukcyjne,

związki,

diagramy

Bloki pojęciowe

Perspektywa projektowa

Aspekty statyczne tej perspektywy wyraża się za pomocą diagramów komponentów. Aspekty dynamiczne za pomocą: diagramów interakcji, diagramów stanów, diagramów czynności.

Perspektywa implementacyjna

diagramy

Aspekty statyczne tej perspektywy wyraża się za pomocą: diagramów wdrożenia, Aspekty dynamiczne za pomocą diagramów interakcji diagramów stanów diagramów czynności

perspektywie wdrożeniowej

Aspekty statyczne tej perspektywy wyraża się za pomocą: diagramów przypadków użycia, Aspekty dynamiczne za pomocą: diagramów interakcji, diagramów stanów diagramów czynności.

perspektywa przypadków użycia

Aspekty statyczne tej perspektywy wyraża się za pomocą: diagramów klas diagramów obiektów, Aspekty dynamiczne za pomocą: diagramów interakcji, diagramów stanów, diagramów czynności.

Page 64: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

64

W UML istnieją cztery rodzaje

elementów konstrukcyjnych:

Elementy strukturalne są w modelach UML wyrażone rzeczownikami.

Stanowią najbardziej statyczne części modelu, reprezentujące składniki

pojęciowe albo fizyczne.

Łącznie istnieje siedem rodzajów elementów strukturalnych.

strukturalne,

czynnościowe,

grupujące,

komentujące.

elementy konstrukcyjne,

związki,

diagramy

Bloki pojęciowe

Page 65: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Elementy konstrukcyjneElementy konstrukcyjne strukturalnestrukturalne

65

65

Klasa

Interfejs

Kooperacja

Przypadek użycia

Klasy aktywne

Komponenty

Węzły

Klasa

Interfejs

Klasa to opis zbioru obiektów, które mają takie same

atrybuty, operacje, związki i znaczenia.

Interfejs to zestaw deklaracji operacji, które wyznaczają

usługi oferowane przez klasę lub komponent.

Samochód

rokProdukcji typ

załaduj() ruszaj() zatrzymaj() rozładuj() podajRok() ustawRok()

IPrzewózCiężaru

Page 66: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

66

Jedną z kluczowych umiejętności, które należy opanować, aby tworzyć

niezawodne projekty obiektowe, jest odróżnianie interfejsów od implementacji.

Zatem podczas projektowania klasy największe

znaczenie ma decyzja dotycząca tego, co udostępnić

użytkownikowi a co przed nim ukryć. Mechanizm

ukrywania nieistotnych informacji jest hermetyzacją.

Na

Abstrakcyjny interfejs

Na lotnisko, proszę!

Konkretny interfejs

Różnica między interfejsem a implementacją

Page 67: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

67

Po zadecydowaniu o składzie interfejsu publicznego należy przejść

do implementacji.

Gdy klasa jest już zaprojektowana i wszystkie metody, które są

potrzebne do jej prawidłowego działania, są na miejscu, kolejnym

etapem jest napisanie kodu umożliwiającego jej działanie.

Z technicznego punktu widzenia wszystko, co nie jest interfejsem

publicznym, można uznać za implementację.

Oznacza to, że użytkownik nigdy nie zobaczy żadnej z metod

wchodzących w skład implementacji.

Dotyczy to także ich sygnatur (które składają się z nazwy metody i

listy parametrów) oraz znajdującego się wewnątrz kodu.

Identyfikowanie implementacji

Page 68: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

68

68

Elementy konstrukcyjne strukturalne

68

Kooperacja

Kooperacja to zestaw bytów, współdziałających w

celu wywołania pewnego zespołowego zachowania

niemożliwego do osiągnięcia w pojedynkę.

Kooperacja to porcja pojęciowa systemu.

Aspekt czynnościowy Aspekt strukturalny

KomunikacjaMiejska

Diagramy interakcji Diagramy klas

KomunikacjaMiejska

Klasa

Interfejs

Kooperacja

Przypadek użycia

Klasy aktywne

Komponenty

Węzły

Page 69: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Elementy konstrukcyjne Elementy konstrukcyjne strukturalnestrukturalne

69

Przypadki użycia

Przypadki użycia służą do określenia w modelu zachowania

systemu. Są realizowane przez kooperację.

Klasa

Interfejs

Kooperacja

Przypadek użycia

Klasy aktywne

Komponenty

Węzły

Przypadki użycia to opis zbioru akcji wykonywanych przez

system w celu dostarczenia klientowi oczekiwanego wyniku.

Położyć pieniądze na konto

Zmienić kod identyfikacyjny

Dokonać wypłatę

Page 70: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Elementy konstrukcyjne Elementy konstrukcyjne strukturalnestrukturalne

70

Klasy aktywne

Klasa aktywna jest podobna do zwykłej klasy, z tym że

jej obiekty reprezentują elementy działające

równolegle z innymi.

Klasa aktywna zawiera obiekty, w skład których

wchodzi co najmniej jeden proces lub wątek. Takie

obiekty mogą samodzielnie rozpocząć przepływ

sterowania.

ZarządcaZdarzeń

wstrzymaj() rozeszlij()

Klasa

Interfejs

Kooperacja

Przypadek użycia

Klasy aktywne

Komponenty

Węzły

SterowanieProcesami

uruchom() zamknij()

Page 71: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

71

Elementy konstrukcyjne strukturalne

71

Komponent to wymienna część systemu, która

wykorzystuje i realizuje pewien zbiór interfejsów.

Komponent to programowe opakowanie elementów,

takich jak klasy, interfejsy i kooperacje np. komponenty

Java Beans, Borland C++.

Komponent

Klasa

Interfejs

Kooperacja

Przypadek użycia

Klasy aktywne

Komponenty

Węzły

Page 72: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Elementy konstrukcyjne Elementy konstrukcyjne strukturalnestrukturalne

72

Węzeł to fizyczny składnik działającego systemu.

Reprezentuje zasoby obliczeniowe. Ma pewną ilość

pamięci i zdolność przetwarzania.

Węzły

Klasa

Interfejs

Kooperacja

Przypadek użycia

Klasy aktywne

Komponenty

Węzły

Page 73: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Interakcja to proces wymiany komunikatów między

obiektami i zespołami obiektów.

Elementy konstrukcyjne Elementy konstrukcyjne czynnościoweczynnościowe

73

Elementy czynnościowe to dynamiczna część modelu w

UML. Są wyrażone czasownikami opisującymi

zachowanie w czasie i w przestrzeni. Wyróżnione dwa

rodzaje takich elementów: interakcja i maszyna

stanowa.

Wyróżnia się dwa rodzaje takich elementów:

komunikaty i połączenia.

wyświetl

komunikat połączenie

interakcja

maszyna stanowa

strukturalne,

czynnościowe,

grupujące,

komentujące.

Page 74: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

74

Elementy konstrukcyjne czynnościowe

Maszyna stanowa określa ciąg stanów, jakie obiekt

przyjmuje w odpowiedzi na zdarzenia zachodzące w czasie

ich życia.

Oczekiwanie

Stany

Dozór

Przejścia

Maszyna stanowa składa się z elementów, takich jak

stany, przejścia między stanami, zdarzenia, które

powodują przejścia, i czynności, odpowiedzi na

zdarzenia.

interakcja

maszyna stanowa

Alarm

niesankcjonowanyDostęp

Zdarzenie

powiadomieniePolicji

Czynność

Page 75: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Elementy konstrukcyjne Elementy konstrukcyjne grupującegrupujące

75

Elementy grupujące odgrywają w UML rolę

organizacyjną. Są to bloki, na które dany model może

być rozłożony.

Podstawowym rodzajem tego typu elementu jest pakiet.

Pakiet służy do grupowania elementów. Może zawierać

elementy strukturalne, czynnościowe, a nawet inne

elementy grupujące.

W odróżnieniu od komponentu (który istnieje w czasie

wykonania programu) pakiet jest bytem pojęciowym, to

znaczy istnieje jedynie w czasie tworzenia oprogramowania.

Istnieją też inne elementy tego typu, takie jak zręby,

modele i podsystemy (rodzaje pakietów).

Reguły przedsiębiorstwa

Pakiet

strukturalne,

czynnościowe,

grupujące,

komentujące.

Page 76: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Elementy konstrukcyjne Elementy konstrukcyjne komentującekomentujące

76

Elementy komentujące odgrywają w UML rolę

objaśniającą. Są to adnotacje, których można użyć w celu

opisania, uwypuklenia lub zaznaczenia dowolnych

składników modelu. Podstawowym rodzajem tego typu

elementu jest notatka.

notatki

strukturalne,

czynnościowe,

grupujące,

komentujące.

Page 77: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

77

Bloki konstrukcyjne związki

Związki są podstawowymi blokami

konstrukcyjnymi UML, służącymi do

łączenia elementów.

Zależność to związek znaczeniowy między dwoma

elementami.

SterownikGłówny

poziomAutoryzacji: int

+uruchom(): void +monitoruj() : void +zakończ() : void +podłącz() : void

Zmiany dokonane w definicji jednego z tych elementów (niezależnego) mogą

mieć wpływ na znaczenie drugiego (zależnego).

Iteratorkanałów

numerKanalu: int

+dodaj() : void -usuń() : void +przeglądaj() : void

„friend”

Zależność

Wyróżnia się łącznie 17

rodzaje zależności,

przykłady :

bind (powiązać),

derive (pochodzić z)

friend (zaprzyjaźniony)

instanceOf (przypadek)

send (wysłać)

trace (rejestrować)

zależność (ang. association)

dziedziczenie (ang. inheritance)

agregacja (ang. aggregation)

Page 78: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

78

Bloki konstrukcyjne związki Nadklasa (przodek)

Dziedziczenie (uogólnienie)

to związek między

elementem ogólnym

(zwanym nadklasą lub

przodkiem) a pewnym

specyficznym jego rodzajem

(zwanym podklasą lub

potomkiem).

Podklasa (potomek)

Dziedziczenie także

nazywane związkiem

„jest-rodzajem„.

Potomek dziedziczy wszystkie właściwości

przodka, a w szczególności jego atrybuty i

operacje.

Jeśli klasa ma wielu przodków,

to mówimy o dziedziczeniu

wielobazowym.

zależność (ang. association)

dziedziczenie (ang. inheritance)

agregacja (ang. aggregation)

Page 79: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

79

Bloki konstrukcyjne związki

Miano związku Nazwa

Agregacja

pracownik pracodawca

Role

Agregacja to związek strukturalny, który wskazuje,

że obiekty jednego elementu są połączone z

obiektami innego.

Agregacja może być

zastosowana nie tylko w tej

podstawowej formie, ale też

z czterema dodatkami: nazwa,

role

liczebność

rodzaj agregacji

zależność (ang. association)

dziedziczenie (ang. inheritance)

agregacja (ang.aggregation)

elementy pojęciowe

Page 80: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

80

Bloki konstrukcyjne związki

Podanie ile obiektów może być połączonych przez

jeden egzemplarz powiązania nazywane liczebnością

roli powiązania.

Zapisuje się w postaci wyrażenia, którego wartością

jest przedział liczbowy lub pojedyncza liczba.

1…*

pracownik pracodawca

1

Liczebność można ustalić na dokładnie jeden (1), zero lub

jeden (0 . . 1), dowolnie wiele (0 . . *) albo co najmniej jeden

(1. . *). Może to być także pewna ustalona liczba

Bardziej złożone liczebności można określić za pomocą listy. Zapis 0..1, 3..4, 6..*

oznacza „dowolną liczbę obiektów inną niż 2 lub 5"

nazwa,

role

liczebność

rodzaj agregacji

zależność (ang. association)

dziedziczenie (ang. inheritance)

agregacja (ang.aggregation)

Page 81: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

81

Może się jednak zdarzyć, że trzeba zapisać związek

„całość-część", w którym klasa reprezentuje

większy element („całość") składający się z

mniejszych („części").

Ten rodzaj związku nazywany agregacją,

wyrażony zależnością „ma":

obiekt-całość ma obiekty-części.

Samochód

Kierownica Kolo Silnik

1

4 Agregacja

całkowita

Okno

Ramka

Całość

Część

nazwa,

role

liczebność

rodzaj agregacji

Bloki konstrukcyjne związki

zależność (ang. association)

dziedziczenie (ang. inheritance)

agregacja (ang.agregation)

Agregacja

Page 82: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

82

Diagram klas Przedsiębiorstwo (Class Diagram)

Notacja UML

Bloki konstrukcyjne diagramy

Page 83: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

83

Projekt Farma

Diagram klas

Page 84: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

84

Projekt Farma

Diagram sekwencji

Page 85: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

85

Projekt Agencja

Diagram klas

Page 86: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

86

Projekt Park Samochodów

Diagram klas

Page 87: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Diagramy czynnościDiagramy czynności (activities)(activities) używają się używają się do przedstawienia: do przedstawienia:

wysoko poziomowych procesów biznesowych

scenariuszy przypadków użycia,

procesów systemowych,

operacji,

algorytmów.

87

Page 88: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Diagramy czynności składają się z Diagramy czynności składają się z podstawowych elementów podstawowych elementów

czynności,

akcji

przepływu sterowania,

początku,

końca,

zakończenie przepływu

88

Page 89: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

CzynnośćCzynność

89

Nazwa Notacja graficzna Definicja

Czynność Czynność to wykonanie pewnego procesu

Opracuj

repertuar

Zbadaj warunki

techniczne

Akcja

Nazwa Notacja graficzna Definicja

Akcja Akcja reprezentuje przetwarzanie informacji w

modelowanym systemie

n

i

iiiiiin ttfttS1

11 ][),()(

Page 90: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Przepływ

sterowania

Nazwa Notacja graficzna Definicja

Przepływ sterowania

Wskazuję kierunek

przekazywania sterowania po zakończeniu czynności lub

akcji.

Początek, koniec i zatrzymanie przepływu sterowania

Nazwa Notacja graficzna Definicja

Początek Punkty inicjacji, końca i zatrzymania

funkcjonowanie diagramu czynności. Może być więcej niż jeden punkt inicjacji, końca i zatrzymania .

Koniec

Zatrzymanie

Page 91: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Decyzja, złączenie i integracja przepływu sterowania

(nie synchronizowanego)

Nazwa Notacja graficzna Definicja

Decyzja Wybór przepływu sterowania określa warunek logiczny

Złączenie Złączenie nie ma funkcji

synchronizowania

Integracja decyzji i złączenia

[Warunek logiczny2]

[Warunek logiczny1] [Warunek logiczny3]

91

Page 92: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

92

Decyzja, złączenie i integracja przepływu sterowania (nie synchronizowanego)

[a=true, b=true;]

a

b

c

[b=true, c=true;]

a

b

c

[a=true, b=true, c=true;]

a b c

a b c

abc

ab bc

Page 93: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

93

Wybierz kwotę z

listy

Wprowadź inną kwotę

Weryfikuj stan konta

[kwota>200] [kwota niezdefiniowana]

Aktualizuj stan konta

Wyświetl odmowę

[else]

[kwota<=dotępne środki

Przykład zintegrowanego oznaczenia decyzji i złączenia

Page 94: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

94

Rozwidlenie, scalenie i integracja przepływu sterowania procesów współbieżnych (synchronizowanych)

Nazwa Notacja graficzna Definicja

Rozwidlenie

Wybór przepływu sterowania określa warunek logiczny

Scalenie Złączenie ma funkcji synchronizowania

Integracja rozwidleni

a i scalenie

a b

{join Spec= a && b}

Page 95: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

95

a b c

a b c

abc

ab bc

[clock]

[clock] a

a=1 a=0

[a=true]

a

[a=false]

[clock]

Rozwidlenie, scalenie i integracja przepływu sterowania procesów współbieżnych (synchronizowanych)

b a c

abc

b a c

ab bc

Page 96: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

96

Notacja algorytmiczna

n

s=1; i=0;

s=s*i; i=i+1;

[i= =n;]

Wyświetl s

[i!=n;]

Notacja UML

Przykład diagramu czynności (obliczenie silni n!)

Page 97: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

97

Opracowanie zamówienia

w dziale sprzedaży firmy

Page 98: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

98

Założenie konta.

Page 99: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

99

Diagramy maszyny stanowej

Maszyna stanowa służy do modelowania dynamicznych aspektów systemu.

Maszyna stanowa określa ciąg stanów przyjmowanych przez obiekt w

odpowiedzi na zdarzenia zachodzące z czasie jego życia, a także reakcje

obiektu na te zdarzenia

Maszyna stanowa służy do modelowania życia jednego obiektu, którym

może być egzemplarz klasy, przypadek użycia, a nawet system jako całość.

Maszyna stanowa służą do modelowania zachowania obiektu.

Page 100: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

100

UML. Stany. Przejścia

Układ naprowadzenia

Page 101: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

101

Słowa kluczowe:

entry wejście

exit wyjście

do wykonać

defer odroczyć

send wysłać

UML. Stany. Złożone elementy.

Page 102: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

102

UML. Podstany sekwencyjne

Bankomat. Podstany.

Podstany sekwencyjne (Weryfikacja, Realizacja)

Page 103: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

103

UML. Stany wznowienia

Stany płytkiego wznowienia. Litera H oznacza płytkie

wznowienie, to znaczy powrót do ostatniego aktywnego

podstanu w maszynie stanowej zagnieżdżonej. H*-

wznowienie głębokie.

maszyna stanowa

zagnieżdżona

Page 104: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

104

Zagnieżdżona współbieżna maszyna stanowa nie ma stanu

początkowego, końcowego lub stanu wznowienia. Natomiast

podstany sekwencyjne jej stanów współbieżnych mogą takie

stany mieć

UML. Podstany współbieżne

Page 105: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

105

UML . Modelowanie historii życia obiektu

Sterownik systemu alarmowego

1. Określ otoczenie maszyny stanowej

2. Ustal stan początkowy i końcowy

3. Określ zdarzenia

4. Zapisz stany

5. Zidentyfikuj akcji

6. Rozwiń stany złożone w podstanach

7. Uzgodnij zdarzenia a interfejsy

8. Wyeliminuj stany izolowane

Page 106: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

106

Diagramy interakcji (sekwencyjne)

Modelowanie przepływu sterowania z uwzględnieniem kolejności

komunikatów w czasie.

Modelowanie przepływu sterowania z uwzględnieniem organizacji

strukturalnej obiektów

Inżynieria do przodu i wstecz (ang. reengineering)

Page 107: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

107

Diagramy interakcji

Diagramy interakcji składają się z diagram sekwencji i diagram kooperacji,

służących do modelowania dynamicznych aspektów systemu.

Diagram sekwencji uwypukla kolejność komunikatów, którymi obiekty

wymieniają się na osi czasu.

Diagram kooperacji wyświetla organizację strukturalną obiektów

wymieniających się komunikatami.

Diagram sekwencji i kooperacji są miedzy sobą znaczeniowo

równoważne – można przekształcić jeden w drugi bez gróżby utraty

informacji.

Page 108: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

108

Diagram interakcji obrazuje interakcje jako zbiór obiektów i związków między

nimi, w tym też komunikaty, jaki obiekty przekazują między sobą.

Diagram sekwencji jest diagramem interakcji, który ma postać tabeli,

w której obiekty są ułożone wzdłuż osi X, a komunikaty wzdłuż osi Y,

uporządkowane według czasu ich wydania.

Diagram kooperacji jest diagramem interakcji, na którym

przedstawione są związki strukturalne między obiektami

wysyłającymi i odbierającymi komunikaty. Graficznie to jest zestaw

wierzchołków i krawędzi.

Page 109: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

109

Diagram sekwencji

linii życia,

ośrodek sterowania

„create”, „destroy”,

{transient}, (ang. Open Data Base Connectivity)

Wykonanie transakcji

Page 110: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

110

Diagram kooperacji

Wykonanie transakcji nie ma linii życia,

nie ma ośrodków sterowania

„create”, „destroy”,

{transient}, „local”, „global”, ciąg komunikatów 2.1:, 2.2:

Page 111: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

111

Diagram sekwencji (przebiegu). Nawiązanie połączenia telefonicznego

Iteracja reprezentuję ciąg

powtarzających

się komunikatów (znak *, lub

[i:=1..n])

Warunek logiczny [Time<30 sek.]

„copy”, „become”

{transient}

Page 112: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

112

Diagram kooperacji. Rejestrowanie studentów na wykłady.

Składowe przepływu sterowania są ponumerowane jawnie.

Page 113: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

113

Modelując dynamiczne aspekty systemu, diagramy interakcji używamy dla

osiągnięcia dwóch celów:

Modelowanie przepływu sterowania z uwzględnieniem kolejności

komunikatów w czasie. W tym przypadku wybieramy diagramy

sekwencji. Diagramy sekwencji są znacznie wygodniejsze niż diagramy

kooperacji do przedstawienia prostych iteracji i rozgałęzień.

Modelowanie przepływu sterowania z uwzględnieniem organizacji

strukturalnej obiektów. W tym przypadku wybieramy diagramy

kooperacji. Diagramy kooperacji są znacznie wygodniejsze niż diagramy

przebiegu do przedstawienia złożonych iteracji i rozgałęzień oraz wielu

współbieżnych przepływów sterowania.

Page 114: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

114

Inżynieria do przodu (generowanie kodu na podstawie modelu).

Możliwa jest jak na podstawie diagramu sekwencji, jak i na podstawie diagramu

kooperacji:

Przykładowy kod dla operacji zarejestrujSię( ) klasy Student:

public void zarejstrujSię( ) {

ZestawWykładów w = odczytajPlanZajęć( );

for (int i =0; i< w.rozmiar( ); i++)

w.element (i).dodaj(this);

this.zarejestrowany = true; }

Inżynieria wstecz, jest znacznie bardziej skomplikowana.

Najtrudniejszym zadaniem jest selekcja tego, co powinno być utrwalone

w modelu.

Page 115: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

PerspektywyPerspektywy 115

Page 116: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Perspektywa przypadkówPerspektywa przypadków

116

W perspektywie przypadków użycia bierze się pod uwagę zachowanie systemu, widziane oczyma: użytkowników, analityków, osób wykonujących testy.

Aspekty statyczne tej perspektywy wyraża się za pomocą: diagramów przypadków użycia, Aspekty dynamiczne za pomocą: diagramów interakcji, diagramów stanów diagramów czynności.

Page 117: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Perspektywa projektowaPerspektywa projektowa

117

Perspektywa projektowa opiera się na: klasy, interfejsy , kooperacje, które razem składają się na słownictwo danego zadania i na rozwiązanie tego zadania.

Aspekty statyczne tej perspektywy wyraża się za pomocą: diagramów klas diagramów obiektów, Aspekty dynamiczne za pomocą: diagramów interakcji, diagramów stanów, diagramów czynności.

Page 118: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Perspektywa procesowaPerspektywa procesowa

118

Perspektywa procesowa zwraca uwagę na: wątki i procesy, które kształtują mechanizmy współbieżności i synchronizacji w systemie. Dotyczy : efektywności, skalowalności, przepustowości systemu.

W UML aspekty statyczne i dynamiczne perspektywy procesowej są przedstawiane na takich samych diagramach jak w wypadku perspektywy projektowej. Główny aspekt to klasy, które reprezentują procesy i wątki.

Page 119: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Perspektywa implementacyjnaPerspektywa implementacyjna

119

Perspektywa implementacyjna opiera się na: komponenty, węzły, użyte do scalenia i udostępnienia systemu fizycznego. Wiąże się ona z zarządzaniem konfiguracją poszczególnych wersji systemu.

Aspekty statyczne tej perspektywy wyraża się za pomocą diagramów komponentów. Aspekty dynamiczne za pomocą: diagramów interakcji, diagramów stanów, diagramów czynności.

Page 120: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Perspektywa wdrożeniowaPerspektywa wdrożeniowa

120

W perspektywie wdrożeniowej główne elementy to: węzły składające się na sprzęt, na którym system będzie uruchamiany. Perspektywa wdrożeniowa wiąże się z: rozmieszczeniem dostarczeniem instalacją części systemu fizycznego.

Aspekty statyczne tej perspektywy wyraża się za pomocą: diagramów wdrożenia, Aspekty dynamiczne za pomocą diagramów interakcji diagramów stanów diagramów czynności

Page 121: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

4. Zastosowanie UML4. Zastosowanie UML

121

ATM (Automated Teller Machine)

Tworzenie Apletów

Internet

Analiza procesów przejściowych

Symulacja automatów skończonych

Projektowanie sterowników

Page 122: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Przykład systemu sterowania Przykład systemu sterowania automatem ATMautomatem ATM

AUTOMATED TELLER MACHINE

Modelowanie systemy sterowania automatem bankowym

122

To są diagramy pomagające zrozumieć treść zadania i

opracować strukturę modelu.

Diagram wariantów wykorzystania

Diagram sekwencji (Sequence Diagram)

Diagram czynności (Activities Diagram )

Diagram klas (Class Diagram)

Page 123: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Klient

Diagram wariantów wykorzystania

123

Przekazać pieniądze

Położyć pieniądze na konto

Zmienić kod identyfikacyjny

Pobrać pieniądze z konta

Dokonać wypłatę

Page 124: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Tom:

Klient Czytnik

kartek

Ekran

ATM

Konto

Toma

Aparat

kasowy

1: Otrzymanie kartki przez urządzenie odczytu

2: Czytanie numeru kartki

3: Inicjalizacja ekranu

5: Zapytanie o numer rejestracyjny(PIN)

6: Wprowadzenie numeru rejestracyjnego(1234) 7: Sprawdzanie numeru rejestracyjnego

8: Zapytanie o transakcje

9: Wybór transakcji(otrzymanie )

10: Zapytanie o zapotrzebowanej sumie

11: Wprowadzenie zapotrzebowanej sumy(20$)

12: Zdejmowanie pieniądz z konta (20$)

13: Sprawdzanie sumy

14: Zmniejszenie stanu konta o 20$

15: Wydanie gotówki(20$)

17: Zwrot kartki do klienta 16: Wydanie czeku

Diagram sekwencji (Sequence Diagram) 124

Page 125: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

5: Zapytanie o numer rejestracyjny

6: Wprowadzenie numeru rejestracyjnego (1234)

8: Zapytanie o transakcje

9: Wybór transakcji ( otrzymanie )

10: Zapytanie o zapotrzebowanej sumie

11: Wprowadzenie zapotrzebowanej sumy (20$)

1. Otrzymanie kartki przez urządzenie

odczytu.

2. Czytanie numeru kartki.

15. Wydanie gotówki (20$)

16. Wydanie czeku

17. Zwrot kartki do klienta

4. Otwieranie konta

7. Sprawdzanie numeru rejestracyjnego

12. Zdejmowanie pieniądz z konta

13. Sprawdzanie sumy

14. Zmniejszenie stanu konta 3. Inicjalizacja ekranu

Diagram kooperacji (Cooperation Diagram ) 125

Klient Ekran

ATM

Aparat

kasowy

Konto

klienta Urządzenie do

czytania

kartek

Page 126: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Klasy projektu ATMKlasy projektu ATM

126

CzytnikKart

numerKarty

czytanieKarty() akceptacjaKarty() zwrotKarty()

EkranATM

akceptacja() prompt()

AparatKasowy

bilansWypłaty

wydanieGotówki() wydanieCzeku() zwrotKarty()

Notacja UML

Konto

numerKonta pin bilans

otwieranieKonta() odtwarzanieKonta() zmianaKonta() sprawdzanieKonta()

Nazwa klasy

Atrybuty klasy

Operacji (funkcji) klasy

Nazwa klasy

Atrybuty klasy

Operacji (funkcji) klasy

Page 127: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

127

127

CzytnikKart

numerKarty

czytanieKarty() akceptacjaKarty() zwrotKarty()

EkranATM

akceptacja() prompt()

AparatKasowy

bilansWypłaty

wydanieGotówki() wydanieCzeku() zwrotKarty()

Notacja UML

Konto

numerKonta pin bilans

otwieranieKonta() odtwarzanieKonta() zmianaKonta() sprawdzanieKonta()

Diagram klas (Class Diagram)

Page 128: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

128

Diagram klas obiektów (przykład notacji)Diagram klas obiektów (przykład notacji)

Page 129: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

129

import java.awt.Graphics;

class HelloWorld extends java.applet.Applet

{

public void paint (Graphics g) {

g.drawString ("Hello, World!", 10, 10);

}

}

Pisząc w pierwszym wierszu

import java.awt.Graphics;

sprawiamy, że w dalszej części programu można bezpośrednio używać klasy

Graphics. Przedrostek java.awt określa pakiet Javy, w którym tę klasę

zdefiniowano.

awt (The Abstract Window Toolkit)

Projektowania Apletu WWW

Page 130: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Pisząc w drugim wierszu:

class HelloWorId extends java.applet.Applet { }

wprowadzamy nową klasę o nazwie HelloWorld i określamy,

że jest to potomek klasy Applet zdefiniowanej w pakiecie java. Applet.

Pisząc w następnych trzech wierszach:

public void paint (Graphics g) {

g.drawString ("Hello, World!", 10, 10);

}

deklarujemy operację paint i tworzymy obiekt g klasy Graphics.

Dalej zostaje wywołana operacja drawString( ) na korzyść obiektu

g klasy Graphics odpowiedzialna za wyświetlenie "Hello, World! "

w miejscu o podanych współrzędnych.

130

Page 131: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Na tym diagramie klas są przedstawione podstawowe elementy

programu „Hello, World!", ale brakuje innych - niemniej ważnych.

131

klasa notatka

Page 132: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Klasa HelloWorld jest liściem w większej hierarchii klas w Javie.

Klasa Object jest klasą macierzysta (przodkiem) dla wszystkich klas

zdefiniowanych w Javie.

ImageObserver jest w bibliotece Javy interfejsem. Interfejs jest w UML

obrazowany jako okrąg. Fakt implementacji przez klasę Component

interfejsu ImageObserver jest przedstawiony w postaci linii ciągłej. 132

Page 133: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Główny pakiet w środowisku Javy ma nazwę java.

Klasa Applet składowa pakietu applet.

Klasy Panel, Container i Component są składowymi pakietu awt.

Interfejs ImageObserver jest zdefiniowany w pakiecie image, który jest

elementem pakietu awt, ścieżka dostępu:

java.awt.image.ImageObserver.

Klasa Object to element pakietu lang, ścieżka dostępu:

java.lang.Object. 133

Page 134: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Diagram sekwencji W UML egzemplarze klas są przedstawiane tak samo jak klasy, tylko ich

nazwy są podkreślone.

Obiekt klasy Thread uruchamia (run )obiekt klasy Toolkit.

Obiekt klasy Toolkit uruchamia operacje callbackLoop.

Operacja callbackLoop uruchamia operacje handleExpose obiektu

ComponentPeer.

Obiekt ComponentPeer wywołuje operację paint.

Pierwsze trzy obiekty na tym diagramie są anonimowe, nie maja

unikatowej nazwy. Obiekt klasy HelloWorld ma nazwę target.

Start

134

Page 135: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Diagram Komponentów

Do modelowania struktury komponentów służy diagram komponentów.

Komponent hello.java reprezentuje kod źródłowy klasy HelloWorld.

Kompilator Javy transformuje aplet do postaci binarnej HelloWorld.class .

Wirtualna maszyna interpretuje kod w postaci binarnej.

Symbol, przedstawiający aplet binarny HelloWorld.class jest wariantem symbolu

komponentu.

Symbole komponentów hello.java , hello.html, hello,jpg są niestandardowe,

przedstawione ikonami z napisami. 135

symboli niestandardowe

(rozszerzenie notacji UML!)

Page 136: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

W programie są używane jeszcze dwie klasy: Applet i Graphics.

Klasa Applet jest przodkiem klasy HelloWorId, a klasa Graphics

występuje w sygnaturze oraz implementacji operacji paint.

Strzałka z niewypełnionym grotem, od HelloWorId do Applet, przedstawia

dziedziczenie, które w tym wypadku oznacza, że HelloWorId jest potomkiem klasy

Applet. Przerywana strzałka od HelloWorld do Graphics obrazuje związek

asocjacyjny , który polega na tym, że HelloWorld korzysta z klasy Graphics. 136

Sygnatura-

Nazwa

operacji

wraz z jej

parametrami

Implementacja-

definicja sposobu

tworzenia lub

wyliczania czegoś

uogólnienie zależność

(korzystanie z klasy Graphics)

Page 137: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

137

Projektowania Apletu WWW. Dział firmy programistycznej

Diagram klas

Page 138: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

138

internaut

Internet. Diagram wariantów wykorzystania.

Wysłać e-mail

Wykonać rozmowę Pobrać e-mail

Oglądać stronę WWW

Wysłać plik,

Pobrać plik

{POP-3}

{FTP} {HTTP}

{VoIP}

{SMTP}

{RTP}

{RTSP}

Real Time Streaming Protocol

Voice over Internet Protocol

Page 139: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

139

Warstwy i ProtokołyWarstwy i Protokoły

Page 140: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

140

W metodzie bezpołączeniowej nadajnik przyjmuje założenie, że

odbiornik otrzyma poprawnie przesyłaną informację.

Odbiornik musi poinformować nadajnik o tym, że część datagramów nie

dotarła lub są uszkodzone i zażądać ich powtórzenia oraz odtworzyć

właściwą kolejność datagramów

Typy protokołów: Bezpołączeniowe (IP, UDP) i Połączeniowe (TCP)

W metodzie połączeniowej między dwoma węzłami sieciowymi ustanawiany jest

kanał komunikacyjny. W czasie transmisji węzły pozostają ze sobą w stałym

kontakcie.

Protokół TCP służy do przekazywania informacji w sieci Internet na poziomie

warstwy transportowej modelu OSI.

Page 141: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

141

HE

X

00

: 0

F

10

: 1

F

20

: 3

F

40

: 5

F

60

: 6

7

68

: 6

9

6A

6B

6C

6D

6E

6F

70

: 7

F

80

: 8

F

90

: 9

F

A0

: …

ZN

AC

ZE

NIE

PO

RT

ŻR

ÓD

ŁO

WY

PO

RT

P

RZ

EZ

NA

CZ

EN

IA

NU

ME

R S

EK

WE

NC

JI

NU

ME

R P

OT

WIE

RD

ZE

NIA

UG

Ć N

AG

ŁÓ

WK

A

RE

ZE

RW

A

FŁAGI

RO

ZM

IAR

OK

NA

SU

MA

KO

NT

RO

LN

A

PR

IOR

YT

ET

OP

CJ

I (J

EL

I S

Ą)

DA

NE

F

I

N

S

YN

RS

T

P

SH

A

CK

U

RG

Nagłówek protokołu TCP

Protokół TCP służy dla przekazywania segmentu danych miedzy gniazdem (ang.

Socket) hostu Nadawcy i gniazdem hostu Odbiorcy. Dla adresowania i sterowania

procesem przekazywania danych protokół posługuje się nagłówkiem. Nagłówek

składa się z pól.

Page 142: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

142

Tryby pracy:

• Nawiązywanie połączenia

• Realizacja połączenia

• Zakończenie połączenia

TCP (Transport Control Protocol)

Host A w pierwszym segmencie nadaje sygnał sterujący <CTL=SYN>, za

pośrednictwem pola flagi SYN i nadaje numer w polu numer sekwencji <SEQ=100>

mówiący o tym, że będzie zaczynał nadawać oktety danych zaczynając od numeru

np. 100 (ISN) ze strumienia oktetów danych, przygotowanych do nadawania.

Host B otrzymując segment z ustawioną flagą SYN przechodzi w stan <SYN-

RECEIWED> mówiącym o tym, że on zaakceptował sygnał SYN. W odpowiedź

Host B przygotowuję segment z ustawionymi w 1 flagami SYN i ACK

<CTL=SYN,ACK> mówiącymi o tym, że Host B zaakceptował sygnał SYN

nadawcy ustawiając flagę ACK w 1 i wysyła własny sygnał SYN.

Nawiązywanie połączenia Hostu A z Hostem B

Page 143: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

143

STAN TCP A FRAGMENT SEGMENTU / KIERUNEK STAN TCP B

CLOSED LISTEN

SYN-SENT <SEQ=100><CTL=SYN> SYN-RECEIVED

ESTABLISHED <SEQ=300><ACK=101><CTL=SYN,ACK> SYN-RECEIVED

ESTABLISHED <SEQ=101><ACK=301><CTL=ACK> ESTABLISHED

ESTABLISHED <SEQ=101><ACK=301><CTL=ACK><DATA>

ESTABLISHED

Sekwencja sygnałów przy nawiązywaniu połączenia TCP

Page 144: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

144

ProtocolTCP class, SocketTCP class

Page 145: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

145

TCP Flag class

Page 146: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

146

x2x3 z=~(x0x1)x2x3

x0

x1

x2

x3

x ~x

B A C

~ (x0x1)

z

Modelowania procesów przejściowych w układach kombinacyjnych

Page 147: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

147

realny proces ustawienia sygnału wyjściowego C

wartość

napięcia

progowego

sygnał wyjściowy C

sygnał wejściowy A

B

Page 148: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

148

t

+60%

e)

-60% UB

UB

UB

τ10 τ01

τ01 τ10

A2 UA1

UA2

Ѳ

0

0

0

0

c)

A1

A2

A1 B

a)

τ01 τ10

Ѳ

+60%

-60%

t

d)

b)

UB

UB

UB

A2 A1 UA1

UA2

0

0

0

0

Fig. 2

Procesy przejściowe wyścigowe

Page 149: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

149

Ub(t)+ U

T

Ua(t)- U

[Ua(t)]

[UP]

[UP]

Określ warunki

[Ua(t)=1, Ub(t)=0, a=1, b=0, t=0, U, T]

[Ub(t)]

[Ua(t) <UP] [a=0]

[c=1]

[Ub(t) < UP] [b=0]

[Ua(t) > UP] [a=1]

[T0]

Ua(t)

Ub(t) Uc(t)

[Ub(t) > UP] [b=1]

Suma T Diagram czynności. Modelowanie procesu przejściowego w

bramce logicznej AND

[ T&c]

[∑ T]

[UP]

Page 150: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

150

Diagram klas: BramkaLogiczna

Page 151: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

151

Diagram klas. Proces przejściowy

Page 152: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

152

Diagramy maszyny stanowej

q0/t0

q2/t2 q1/t1

x0

x0

x2

x0

x1 x1 x2

x2

Symulacja automatów skończonych

Page 153: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

153

Termostat.

Diagram maszyny stanowej

Sterownik układu klimatyzacji

Page 154: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

154

154

Termostat. Kodowanie.

kodowanie

stany

bezczynność q0

chłodzenie q1

grzanie q2

kodowanie

wejścia

temperaturaOK x0

zaCiepło x1

zaZimno x2

Page 155: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

155

kodowanie

stany

bezczynność q0

chłodzenie q1

grzanie q2

kodowanie

wejścia

temperatura OK

x0

zaCiepło x1

zaZimno x2

wejścia stany

x0 x1 x2 wyjścia

q0 q0 q1 q2 t0

q1 q0 q1 q2 t1

q2 q0 q1 q2 t2

q0/t0

q2/t2 q1/t1

x0 x0

x2

x1

x0

x1 x1 x2

x2

Graf. Diagram stanów Tablica przejść-wyjść

Termostat.

Page 156: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

156

156

Termostat. Tablica przejść-wyjść

kodowanie

podstany

czuwanie q3

rozpalanie q4

ogrzewanie q5

wyłączanie q6

kodowanie

wejścia

x3 x4

czuwaj (1) 0

włącz (1) 0

grzej (1) 0

wyłącz (1) 0

czuwanie

rozpalanie

ogrzewanie

wyłączanie

włącz

grzej wyłącz

czuwaj

Page 157: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

157

czuwanie

rozpalanie

ogrzewanie

wyłączanie

włącz

grzej wyłącz

czuwaj

wejścia stany

x3 x4 wyjścia

q3 q4 q3 t3

q4 q5 q4 t4

q5 q6 q5 t5

q6 q3 q6 t6

kodowanie

podstany

czuwanie q3

rozpalanie q4

ogrzewanie q5

wyłączanie q6

kodowanie

wejścia

x3 x4

czuwaj (1) 0

włącz (1) 0

grzej (1) 0

wyłącz (1) 0

q3/t3

q4/t4

1 1

0

0

Graf, diagram stanów

q5/t5

q6/t6

1

0

0

Notacja UML

Termostat.

Page 158: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

x1

x2

x3

A

B z = f(x1, x2, x3 )

z

Projektowanie sterownika poziomu.

Jest rezerwuar dla wody R. On ma dwa zawory A i B.

A to jest zawór do wpływu wody a zawór B dla odpływu.

Trzeba zaprojektować system sterowania zaworem A

tak ażeby w nocy był utrzymywany poziom wody x1 ,

a w dzień poziom x2 . Odpływ przez zawór B jest mniejszy niż dopływ przez

zawór A.

Stan zaworu A

z

zamknięty 0

otwarty 1

Pora doby

x3

noc 0

dzień 1 R

158

Kodowanie

Page 159: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

x

3 x

2 x

1 z

0 0 0 1

0 0 1 0

0 1 0 0

0 1 1 0

1 0 0 1

1 0 1 1

1 1 0 0

1 1 1 0

x1

x2

x3

1

0

f(x1, x2, x3 ) = ~x1 ~ x2 ~ x3 +

~x1 ~ x2 x3 +

x1 ~ x2 x3

A

B

z = f(x1, x2, x3 ) z

R

159

Page 160: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Koniukcja Alternatywa

x * x = x x + x = x

x * ~x = 0 x + ~x = 1

x * 0 = 0 x + 0 = x

x * 1 = x x + 1 = 1

Własności

f(x1, x2, x3 ) = ~x1 ~ x2 ~ x3 + ~x1 ~ x2 x3 + x1 ~ x2 x3 =

~x1 ~ x2 (~ x3 + x3) + x1 ~ x2 x3 = ~x1~ x2 + ~ x2 x3 =

= ~x2 *(~ x1 + x3) 1

160

Page 161: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

161

0

~x1 1 x1

0 0 ~x3~

x2

1 0

0 1 ~x3 x2

0 0

1 1 x3x2

0 0

1 0 x3 ~x2

1 1

x3 x2 x1 z

0 0 0 1

0 0 1 0

0 1 0 0

0 1 1 0

1 0 0 1

1 0 1 1

1 1 0 0

1 1 1 0

1

2

2

x3 ~x2~x1

x3 ~x2 x1

x3 ~x2

1 ~x3 ~x2~x1

x3 ~x2 ~x1

~x2 ~x1

2

Page 162: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

f(x1, x2, x3 ) x2

x1

x3 z

f(x1, x2, x3 ) = ~x2 (~ x1 + x3)

x2

x1

x3

~x1

~x2

(~ x1 + x3)

z = ~x2 (~ x1 + x3)

Układ modelowania funkcji sterującej

z

162

Page 163: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

x1

x2

A

B

z

Stan zaworu A z

zamknięty 0

otwarty 1

Pora doby x3

noc 0

dzień 1

f(x1, x2, x3 ) x3

Układ sterowania

R czujniki poziomu

163

Page 164: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

164

Układ sterowania. Tablica przejść-wejść

kodowanie

stany zawora A

otwarty q0

(1)

zamknięty

q1

(0)

kodowanie

wejścia

zamknij 0

otwórz 1

wejścia stany

0 1 wyjścia

q0 q0 q1 1

q1 q1 q0 0

q0 /1

q1 /0

1

0

1

0

[f(x1, x2, x3 )]

warunek dozoru

zdarzenie uruchamiające

akcja

G. Booch

UML

Przejścia Automat Moore’a

Page 165: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

5. Technika modelowania 5. Technika modelowania CRC CRC

( ang. ( ang. classclass--responsibilityresponsibility--collaboration cardscollaboration cards))

165

Page 166: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

166

Gra Black Jack powstała we Francji na początku XVIII wieku.

Kronika gry:

1956r. – pierwsze próby zwyciężenia w BackJacku poprzez matematyczne

podejścia do gry.

Roger Baldwin, opublikował artykuł „Optymalna Strategia BlackJacka”.

1962r. – powstaje pierwsza strategie liczenia kart. Zaproponowana była

przez profesora Edwarda O. Thorp’a.

1963r. - Książka Edwarda O. Thorp’a „Beat the Dealer: Strategy for the

Game of Twenty-One” staje się bestsellerem i sprawia, że wiele kasyn

zmienia reguły gry.

1970r. – powstanie pierwszej strategii komputerowej gry BlackJack

Matematyczne podstawy gry Black Jack

Page 167: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

167

Wartości punktowe:

król, dama, walet i dziesiątka mają po dziesięć punktów;

as ma 1 punktów lub 11 w zależności od sytuacji (As może mieć

wartość równa jedenastu punktów tylko wtedy, gdy gracz nie

przekroczy limitu 21 punktów. W momencie, gdy gracz przekroczył

określony limit, As ma wartość w jeden punkt);

karty od 2 do 9 mają wartość równą wartości karty

Liczenie kart ( metoda Hi-Lo) – obecnie najbardziej

rozpowszechniona i najczęściej stosowana metoda.

• karty 2,3,4,5,6 mają wartość +1

• karty 7,8,9 mają wartość 0

• karty 10, walet, dama, król, as mają wartość (-1) W ten sposób

gracz otrzymuje tzw. wartość bieżącą, lub prawdziwą

Matematyczne strategii gry

Page 168: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

168

Strategia krupiera:

polega na takim dobieraniu kart, aby liczba oczek wynosiła nie

więcej, ani nie mniej niż 17.

Wtedy przewaga kasyna jest równa 5.48%.

Strategia „bez fury” – bardzo zbliżona do strategii krupiera, jednak tutaj

liczba oczek jest równa 11, a przewaga kasyna ma wartość 3.91%.

Strategia podstawowa - zmniejsza przewagę kasyna do 0,5%

Po otrzymaniu dwóch pierwszych kart, gracz decyduje, czy powinien on brać

dodatkowe karty.

Krupier musi brać dodatkowe karty w każdym przypadku, jeśli ma karty o

łącznej wartości mniej niż 17.

Page 169: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

169

Celem projektu jest implementacja gry karcianej w BlackJack.

W grze tej gra się przeciwko krupierowi. Liczba graczy jest

dowolna, ale nie grają oni przeciwko sobie, a wyłącznie

przeciwko krupierowi.

Gra Black Jack

Krótki opis gry

Celem gracza jest uzbieranie takiej sumy wartości kart, które dobiera

kolejno z talii, aby była jak najbliższa 21 (idealnie równa 21). Suma nie

może jednak przekroczyć tej wartości. Jeśli tak się stanie, gracz przegra.

Jeśli suma dwóch pierwszych kart, które gracz pobierze, wyniesie 21,

nazywa się to BlackJackiem. Każda karta ma określoną wartość (nie ma na

nią wpływu kolor). Wartość asa to 11. Wszystkie figury maja wartość 10.

Pozostałe karty mają wartości odpowiadające ich rodzajowi.

Page 170: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

170

Zadania krupiera są

podawanie graczom kolejnych kart,

pokazywanie części lub wszystkich kart,

obliczanie wartości kart na ręku,

sprawdzanie liczby kart na ręku,

określanie wygrywającego oraz rozpoczynanie nowej partii.

Zgodnie z zasadami gry gracz wygrywa i zabiera pulę zakładów wówczas,

gdy suma wartości jego kart jest bliższa 21 niż suma krupiera. Jeśli gracz

ma BlackJacka, zgarnia pulę w wysokości 3:2 oryginalnego zakładu

(zakładając, że krupier nie ma BlackJacka). Jeśli suma wartości kart

gracza przekroczy 21, gracz przegrywa. BlackJack (as i figura lub

dziesiątka) bije inne kombinacje kart, które dają sumę 21.

Page 171: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

171

znać swoją wartość

dzielić się informacją o swojej wartości

znać swój kolor

należeć do talii

Zadania karty są

żądać kolejnej karty

umieć sprawdzać jaką kartę otrzymał od krupiera

umieć obliczać wartości kart na ręku

znać ile ma aktualnie kart na ręku.

decydować czy podać następną kartę, czy zacząć nową partię.

Zadania gracza są

Zadania ręki są

znać , ile ma kart.

znać wartość posiadanych kart.

pokazywać karty.

Page 172: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

172

Zadania talii są

umożliwiać podawanie kolejnych kart

informować o tym, ile jeszcze kart zostało nierozdanych.

tasowanie kart.

Wytyczne do projektu: interesuje nas tylko to, co system robi, a nie jak to robi.

Jedną z najpopularniejszych metod identyfikacji i kategoryzowania klas jest

użycie kart CRC (ang. class-responsibility-collaboration cards). Każda taka

karta reprezentuje zadania i kolaboracje jednej klasy.

Każda karta CRC powinna być podzielona na trzy sekcje:

• nazwa klasy,

• zadania klasy,

• kolaboracje klasy.

Page 173: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

173

Karta CRC

Klasa: Gracz

Zadania klasy: Kolaboracje klasy:

Zacznij nową grę Ręka, Krupier

Daj kartę Krupier

Każda karta powinna być podzielona na trzy sekcje:

• nazwa klasy,

• zadania klasy,

• kolaboracje klasy.

Page 174: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

174

Identyfikacja klas gry w BlackJacka

Rzeczowniki

Rzeczowniki zazwyczaj określają klasy ale nie są jedynym ich źródłem

Gra

Blackack

Krupier

Gracze

Gracz

Karty

Karta

Talia

Ręka

Wartość

Kolor

As

Figura

Król

Dama

Walet

Gra

Zakład

Page 175: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

175

Gra — nazwa gry to BlackJack. A więc będziemy ją traktować tak samo jak

rzeczownik BlackJack.

Blackjack — w tym przypadku uznajemy, że utworzymy klasę Gra, która tutaj

jest synonimem rzeczownika BlackJack.

Krupier — ponieważ bez krupiera nie można się obejść, zostawimy go.

Gracze i Gracz — gracze są potrzebni, a więc klasa ta jest niezbędna. Powinna

ona jednak reprezentować jednego gracza, a nie grupę graczy. Pozostawiamy

Gracz.

Karty i Karta — komentarz taki sam jak dla gracza.

Tal ia — ponieważ jest wiele czynności właściwych talii (np. tasowanie i

pobieranie kart), uznajemy, że jest to dobry pomysł na klasę.

Ręka — każdy gracz będzie miał określony zestaw kart, zatrzymamy tę klasę.

Wartość — wartość karty najlepiej zaprezentować w postaci atrybutu klasy.

Kolor — w grze w BlackJacka nie trzeba znać koloru karty. Może być

atrybutem klasy Karta.

Identyfikacja klas

Page 176: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

176

As — figurę lepiej zdefiniować jako atrybut klasy Karta.

Figura — figurę lepiej zdefiniować jako atrybut klasy Karta.

Król — króla lepiej zdefiniować jako atrybut klasy Karta.

Dama — damę lepiej zdefiniować jako atrybut klasy Karta.

Zakład —dobrym pomysłem jest wyodrębnienie zakładu jako osobnej

klasy, ponieważ postawić w grze można różne rzeczy. Można postawić

pieniądze, paczkę chipsów, zegarek, konia, a nawet akt własności domu.

Identyfikacja klas

Karta Talia Ręka

Krupier Gracz Zakład

Początkowy zestaw klas dla gry BlackJack

Page 177: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

177

Zadania klasy odpowiadają działaniom, które ona wykonuje. Listę zadań

można sporządzić na podstawie czasowników użytych w oświadczeniu

podsumowującym wymagania.

Identyfikowanie zadań klasy

Czasowniki dla określenia zadania poszczególnych klas:

Karta

Zna swoją wartość.

Zna swój kolor.

Wie, czy jest figurą.

Wie, czy jest asem.

Talia

Tasowanie kart.

Udostępnianie kart.

Wie, ile kart zostało do rozdania.

Wie, czy jest pełna, aby zacząć nową grę.

Page 178: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

178

Ręka

Wie, ile ma kart.

Zna wartość posiadanych kart.

Pokazuje karty.

Identyfikowanie zadań klasy

Krupier

Rozdaje karty.

Zleca tasowanie kart.

Podaje karty graczom.

Pokazuje swoje karty na ręku.

Oblicza wartość kart.

Zna liczbę kart na swoim ręku.

Żąda kart (pobiera lub nie).

Decyduje, kto wygrał.

Zaczyna nową partię.

Page 179: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

179

Gracz

Żąda kart (pobiera lub nie).

Pokazuje swoje karty na ręku.

Oblicza wartość kart na ręku.

Wie, ile ma kart na ręku.

Wie, czy wartość kart na ręku jest wyższa od 21.

Wie, czy wartość kart na ręku jest równa 21 (i czy jest to BlackJack).

Wie, czy wartość kart na ręku jest niższa od 21

Identyfikowanie zadań klasy

Zakład

Wie, jaki to jest rodzaj zakładu.

Zna bieżącą wartość zakładu.

Wie, ile gracz postawił.

Wie, czy zakład może zostać pokryty.

Page 180: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

180

Analiza szczegółowa wymienionych zadań:

Karta

Zna swoją wartość (wyświetlanie wartości karty).

Zna swój kolor (wyświetlanie koloru).

Wie, czy jest figurą. (to samo można osiągnąć za pomocą zwracania

wartości).

Wie, czy jest asem (podobnie jak powyżej).

Talia

Tasowanie (talia musi dać się potasować).

Rozdawanie kart (musi być możliwość rozdawania kart graczom).

Wie, ile kart zostało do rozdania (krupier musi wiedzieć, czy zostały mu jeszcze

jakieś karty do rozdania).

Wie, czy jest pełna, aby zacząć nową grę (talia musi wiedzieć, czy jest pełna).

Page 181: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

181

Ręka

Wie, ile ma kart (informacja o liczbie kart na ręku).

Zna wartość posiadanych kart (informacja o wartości kart na ręku).

Pokazuje karty.

Identyfikowanie zadań klasy

Zakład

Wie, jaki to jest rodzaj zakładu.

Zna bieżącą wartość zakładu.

Wie, ile pieniędzy graczowi zostało.

Wie, czy zakład może zostać pokryty.

Informacja ta jest potrzebna, aby

znać, jaka jest aktualnie pula

zakładu.

Informacja ta pozwala krupierowi

zorientować się, czy gracz ma

wystarczającą ilość środków, aby

pokryć zakład.

Gracz nie będzie mógł

postawić więcej, niż ma.

Gracz musi mieć możliwość obejrzenia kart,

które ma na ręku.

Page 182: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

182

Krupier

Zleca tasowanie kart.

Rozdaje karty.

Podaje karty graczom.

Pokazuje swoje karty na ręku.

Oblicza wartość kart krupiera (pokazywanie wartości kart na ręku krupiera).

Zna liczbę kart na swoim ręku (pokazywanie liczby kart na ręku krupiera).

Żąda kart (pobiera lub nie).

Decyduje, kto wygrał.

Zaczyna nową partię.

Identyfikowanie zadań klasy

Gracz

Żąda kart (pobiera lub nie).

Pokazuje swoje karty na ręku.

Oblicza wartość kart na ręku (pokazywanie wartości kart gracza).

Wie, ile ma kart na ręku (pokazywanie liczby kart na ręku gracza).

Wie, czy wartość kart na ręku jest wyższa, równa, czy niższa od 21

(generowanie raportu o wartości kart na ręku).

Page 183: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

183

-Breaking hand – układ kart, którego suma równa się 12

- Bust ( fura) – przekroczenie 21 oczek – przegrana

- Double down – podwojenie stawki

- High-Low – najpopularniejsza metoda liczenia kart

- Hit – dobrać kartę

- Pass – nie dobierać karty

- Pat hand – układ kart, którego suma wynosi 17 ( lub więcej)

- Remis – ma miejsce, gdy wartość kart gracza jest równa wartości kart krupiera

- Soft hand – układ kart, gdzie występuje as, lecz suma oczek po otrzymaniu kart

nie wynosi więcej niż 21

- Stach – pula żetonów, które znajdują się przed graczem

- Upcard – odsłonięta karta

- Wartość bieżąca (ręki)– występuje, gdy jest ona wyższa niż 0

- Wartość prawdziwa – podzielenie wartości bieżącej przez sumę pozostałych do

rozdania w talii.

Słowniczek

Page 184: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

184

Przypadki użycia w UML — identyfikowanie kolaboracji

Do zidentyfikowania kolaboracji można wykorzystać scenariusze

przypadków użycia.

Przypadek użycia (ang. use-case) to transakcja lub sekwencja

wzajemnie powiązanych operacji, które system wykonuje w

odpowiedzi na żądanie użytkownika lub jakieś zdarzenie

Dla każdego przypadku użycia należy zidentyfikować obiekty i komunikaty.

Karty CRC pomagają w określeniu zestawu klas.

Scenariusze przypadków użycia pomagają w odkrywaniu kolaboracji.

Page 185: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

185

Gracz

Diagram wariantów wykorzystania

185

Karta CRC

Gracz ma BJ,

Krupier ma BJ

Remis

Gracz ma BJ,

Krupier ma K < 21

Gracz wygrywa

Krupier ma BJ,

Gracz ma G < 21

Gracz przegrywa

Gracz ma G < 21,

Krupier ma K < 21

G > K

Gracz wygrywa

Gracz ma G < 21,

Krupier ma K < 21

G < K

Gracz przegrywa

Gracz ma G < 21,

Krupier ma K < 21

G = K

Remis

Page 186: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

186

Krupier i jeden gracz. Przykład

•Krupier zleca tasowanie kart.

• Gracz robi zakłady.

• Krupier rozdaje po jednej karcie.

• Gracz dodaje kartę do swojej ręki.

• Krupier dodaje kartę do swojej ręki.

• Ręka zwraca graczowi wartość znajdujących się w niej kart.

• Ręka zwraca krupierowi wartość znajdujących się w niej kart.

• Krupier pyta, czy gracz chce kolejną kartę.

• Krupier daje graczowi kolejną kartę.

• Gracz dodaje kartę do swojej ręki.

• Ręka zwraca graczowi wartość znajdujących się w niej kart.

• Krupier pyta, czy gracz chce kolejną kartę.

• Gracz nie bierze więcej kart.

• Krupier dodaje karty do swojej ręki.

• Ręka zwraca krupierowi wartość znajdujących się w niej kart.

• Krupier decyduję, czy chce kolejną kartę.

• Krupier odbiera wartość kart na ręku gracza.

• Krupier decyduje o tym kto przegrał.

• Krupier wysyła do gracza wartość zakładu lub jej od niego żąda.

Przebieg gry:

Page 187: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

187

Rozpoczęcie gry

Program Krupier

Diagramy kolaboracji

StartNewGame

Załóżmy, że mamy jedną główną aplikację, która zawiera wszystkie

obiekty (tzn. nie ma klasy Game).

Zgodnie z założeniami projektowymi grę rozpoczyna krupier.

Page 188: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

188

Tasowanie i rozdanie pierwszych kart

Krupier Talia resetDesk

Krupier Talia shuffledDesk

Krupier Gracz moreCards

Page 189: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

189

Sprawdzanie wartości kart na ręku Gracza

Gracz Ręka

getHandValue( )

returnValue( )

Krupier Talia getCard

returnCard

Pobranie karty z Talii

Gracz Krupier getCard

Page 190: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

190

Krupier Gracz

Wydanie kolejnej karty, dopóki Gracz nie spasuje.

Gracz Ręka getHandValue( )

returnValue( )

getCards()

Page 191: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

191

Krupier Ręka getHandValue( )

returnValue( )

Krupier gra do swoją rękę

Gracz Krupier playerPass

Page 192: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

192

Krupier Talia getCard

returnCard

Wydanie Krupierowi karty na żądanie

Krupier Ręka getHandValue

returnValue( )

Czy Krupier pasuje?

Page 193: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

193

Krupier Gracz krupierPass

Krupier Gracz getValueCards

Krupier pasuje i prosi podać wartość kart na Ręku Gracza

Gracz Ręka returnValue( )

Page 194: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

194

Krupier Gracz

Krupier Gracz playerWiner

returnValue( )

Krupier porównuje wartości kart na swojej Ręki i na Ręki Gracza.

Krupier Gracz transferFacility

Krupier decyduje o wygraniu Gracza.

Page 195: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

195

Krupier Gracz playerBusts

Krupier Gracz getFacility

Krupier decyduje o przegraniu Gracza.

Page 196: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

196

Mając określony początkowy zestaw klas i kolaboracji, można

przystąpić do wypełniania kart CRC dla tych klas.

Analiza kart CRC

Klasa: Karta

Zadania (ang. Responsibility): Współpraca (ang. Collaboration)

Pobierz nazwę Talia

Pobierz wartość

Page 197: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

197

Klasa: Talia

Zadania (ang. Responsibility): Współpraca (ang. Collaboration)

Reset Talii Krupier

Sprawdź rozmiar Talii Krupier

Pobierz kolejną kartę Krupier

Potasuj talię Krupier

Sprawdź wartość prawdziwą Talii Karta

Klasa: Krupier

Zadania (ang. Rresponsibility): Współpraca (ang. Collaboration)

Zacznij nową grę Ręka

Podaj kolejną kartę Gracz

Pobierz kolejną kartę Talia

Page 198: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

198

Klasa: Gracz

Zadania (ang. Rresponsibility): Współpraca (ang. Collaboration)

Chcę kolejną kartę? Ręka

Pobierz kolejną kartę Krupier

Pokarz kartę Ręka

Pokarz karty Krupier

Sprawdź wartość kart na Ręku Ręka

Klasa: Ręka

Zadania (ang. Rresponsibility): Współpraca (ang. Collaboration)

Zwróć wartość Gracz, Krupier

Dodaj kartę Gracz, Krupier

Pokarz kartę Gracz, Krupier

Pokarz karty Krupier

Page 199: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Diagram klas (Class Diagram)

199

Gracz

limit:int

+moreCard:boolean +showHand:void +getHandValue:int +getCard():Krupier +playerBusts():boolean +playerPass():boolean

Notacja UML

Reka

-value:int -hand:vector

+getValue:int +addToHand:void +showHand:void

Krupier

+startNewGame:void +getCard:Card +krupierPass():boolean +getFacility():int +krupierBust():boolean Karta

-name:string -value:int

+get Name:string +getValue:int +setName:void +setValue:void

Talia

-cards:vektor -shufledCards:vektor random:Random

+resetDesk:void +getDeskSize:int +getNextCard:Card +shuffledDesk:void +showDesk:void +showShuffledDesk:void +setSuit:void Reka RekaK = new Reka();

Reka RekaG = new Reka();

Java, C#

Page 200: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

200

Diagram klas (Class Diagram)

Gracz

-limit:int

+moreCard:boolean +showHand:void +getHandValue:int +getCard():Krupier +playerPass():boolean +playerBusts():boolean

Reka

-value:int -hand:Vector

+getValue:int +addToHand:void +showHand:void

Krupier

-limit:int

+startNewGame:void +getCard:Card +krupierPass():boolean +getFacility():int +krupierBust():boolean

Karta

-name:string -value:int -suit:string

+getName:String +getValue:void +getSuit:String +setName:void +setValue:void

Talia

-cards:Vektor -shufledCards:Vektor random:Random

+resetDesk:void +getDeskSize:int +getNextCard:Card +shuffledDesk:void +showDesk:void +showShuffledDesk:void +setCard:void

RekaK

+getValue:int

RekaG

+getValue:int

Wariant

Page 201: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

Krupier Talia Gracz Karta RękaK

: startNewGame : shufledDesk

: getCard

: getHandValue

Diagram sekwencji (Sequence Diagram)

201

:moreCards

:getHandValue : getCard

: setCard : getCard

RękaG

: resetDesk

: playerBusts :getFacility

:moreCards

:getHandValue

: playerPass

:setCard

:setCard

: setCard

: getHandValue

:getHandValue

Page 202: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

202

6. MODELOWANIE OBIEKTOWE EKOLOGII OCEANU.

Projekt przykładowy

Page 203: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

203

2. określić początkowe obiekty systemu, opierając się na ogólnym opisie

systemu. Rozszerzyć zależności w terminach hierarchii klas

(aggregation, association);

Istota pracy tworzenia projektu obiektowo - orientowanego polega na

wykonywaniu następujących kroków:

1. podać ogólny opis systemu, zidentyfikować jego kierunki i

ograniczenia;

3. określić zmienne dla pierwotnych obiektów.

One stanowią egzemplarze zmiennych w

opisanych klasach;

Page 204: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

204

5. opracować początkowy projekt, wykorzystując wyrażenia

wysokiego poziomu. W tych wyrażeniach powinny wykonywać się

operacje na pierwotnych obiektach;

6. drogą detalizacji udoskonalić wyrażenia

wysokiego poziomu, dopóki nie będą

gotowy projekt roboczy.

4. określić kluczowe komunikację na które powinny odpowiadać

pierwotne obiekty. Zaznaczyć, jeśli jest to możliwe, komunikaty, które

powodują następne inne komunikację przez „hierarchię komunikacji„;

Page 205: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

20

5

OGÓLNY OPIS SYSTEMU MODELOWANIA EKOLOGII OCEANU

Ocean zawiera określoną ilość przeszkód, drapieżników i ofiar.

Podstawowe kierunki modelowania są :

Celem programu jest modelowanie w trybie interaktywnym systemu

ocean wirtualny.

• przeszkody są statyczne i nie mogą się przemieszczać;

• ofiara i drapieżnik przemieszczają się w przestrzeni oceanu.

• ofiara i drapieżnik rozmnażają się w zależności od warunków życia.

Liczebność każdego z nich może wzrastać i zmniejszać się.

Page 206: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

206

• drapieżnik może atakować drugiego drapieżnika. W początkowym

wariancie drapieżnik atakuje tylko ofiary.

• drapieżnik ginie, kiedy nie zje w określonym czasie żadnej ofiary.

• ofiara ginie, kiedy zje ją drapieżnik.

Page 207: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

207

POCZĄTKOWA HIERARCHIA KLAS

Ocean - Ocean składa się z dwuwymiarowej tablicy komórek.

Cell - Komórka to klasa abstrakcyjna, która jest pusta. Jej podklasy

zawierają różne obiekty, które występują w oceanie. Komórka powinna

wiedzieć, co zawiera w sobie ocean.

Model oceanu - to zbiór wszystkich komórek.

Prey - ofiara jest odmianą komórki. Może się ona poruszać. Ofiara

rozmnaża się tylko wtedy, kiedy jej czas rozmnażania osiągnął zero i ona

przemieściła się.

Page 208: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

208

Predator - drapieżnik jest odmianą komórki. Może się on poruszać.

Drapieżnik rozmnaża się tylko wtedy, kiedy jego czas rozmnażania

osiągnął zero i on przemieścił się.

Predator woli się poruszać i jeść sąsiednie ofiary. Jeśli w sąsiedniej

komórce nie ma ofiary, będzie on poruszać się po pustych

komórkach.

Predator powinien umrzeć, jeżeli nie zje on w ciągu określonego

czasu.

Obstacle - przeszkoda jest odmiana komórki. Ona nie może się poruszać.

Coordinate - dwuwymiarowe współrzędne.

Page 209: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

209

HIERARCHIA KLAS OBIEKTÓW SYSTEMU

Zgodnie z opisem obiektów i hierarchii klas

ofiary, drapieżniki i przeszkody są specjalnymi komórkami i mogą być

obiektami odpowiednich klas.

Cell - Komórka zna swoje położenie (offset - egzemplarz klasy

Coordinate) w oceanie.

Ocean zawiera kolejne komórki: komórka zna ocean do którego należy.

Wszystkie komórki są części jednego oceanu (myOcean). Można

określić tablicę komórek myOcean jak zmienną cells w definicji

obiektów klasy Ocean.

Zależność między obiektem a jego komórkami określą się przy pomocy

egzemplarzy klasy Ocean i zmiennej klasy Cell.

Page 210: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

210

PROJEKT POCZĄTKOWY

Dla obiektów klasy Ocean :

Komentarz: Obiekty tej klasy przedstawiają ocean jako dwuwymiarową

tablicę komórek.

• W oceanie znajduje się określona ilość przeszkód, drapieżników i ofiar.

• System kontroluje każdą komórkę i porównuje ją z ofiarą lub

drapieżnikiem i określa czy osobnik ma się poruszać, rozmnażać czy ginie

zgodnie z regularni modelowania.

Przeszkody i puste komórki nie robią niczego.

Page 211: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

211

Egzemplarze zmiennych:

• cells - dwuwymiarowa tablica komórek. Przemieszczenie komórki –

to operacji arytmetyczne nad odpowiednimi dwuwymiarowymi wskaźnikami;

• numRows - ilość wierszy w oceanie (domyślnie MaxRows =25),

• numCols - ilość kolumn w oceanie (domyślnie MaxCols = 70),

• size - ilość elementów w cells (numRows * numCols):

• numPrey - określa początkową ilość ofiar w oceanie (domyślnie - 150);

• numPredators - określa początkową ilość drapieżników w oceanie

(domyślnie = 20);

• numObstacles - określa ilość przeszkód w oceanie (domyślnie 75);

• random - generator liczb losowych.

Page 212: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

212

Dla obiektów klasy Cell

Komentarz:

• Cell to klasa określająca wygląd wszystkich komórek, które znajdują

się w oceanie. Komórki przydzielone jednemu oceanowi nazywają się

myOcean. Domyślnie przedstawienie komórki obiektu :

DefaultImage=” „

• myOcean - obiekt klasy Ocean, myOcean to ten, który zawiera

wszystkie komórki danego modelu.

Page 213: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

213

Egzemplarze zmiennych :

• offset – zmienna klasy Coordinate, która zawiera współrzędne komórek w

obiekcie Ocean1 klasy Ocean.

• image - graficzny wygląd komórki - symbol identyfikujący dany obiekt.

Na przykład :

symbol 'f 'oznacza ofiarę,

symbol 'S' — drapieżnika

symbol # - przeszkodę.

Konkretny wygląd może być określony w odpowiedniej podklasie.

Page 214: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

214

Dla obiektów klasy Prey

Komentarz: Prey jest podklasa klasy Cell przedstawiającą

ofiarę. Ofiara może przemieszczać się, rozmnażać i zostać zjedzona.

Domyślnie dla obiektów ofiary przyjęto wygląd :

DefaultPreyImage = „f”.

Egzemplarze zmiennych:

• timeToReproduce - dostępny czas potrzebny do tego, aby obiekt

podklasy Cell stworzył siebie podobnego.

Domyślnie przyjęto timeToReproduce = 6.

Page 215: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

215

Egzemplarze zmiennych :

• timeToFeed = czas podczas którego drapieżnik musi zjeść ofiarę, bo

inaczej ginie. Domyślnie timeToFeed == 6.

Dla obiektów klasy Predator

Predator - podklasa klasy Cell, przedstawia drapieżników.

Drapieżnik może przemieszczać się, rozmnażać się i jest zdobywcą ofiar

Domyślnie dla obiektów drapieżników przyjęto wygląd :

DefaultPredatorImage = „S”.

Page 216: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

216

Komentarz • Obstacle - podklasa klasy Cell, przedstawia przeszkody w

oceanie (nie mogą zmieniać położenia). Domyślnie dla przeszkód

przyjęto symbol:

ObstacleImage – „ #”.

Komentarz Klasa przedstawiająca współrzędne. Obiekty Coordinate

przedstawiają współrzędne wszystkich obiektów klasy Cell,

Atrybuty :

x - współrzędna x;

y - współrzędna y.

Dla obiektów klasy Obstacle

Dla obiektów klasy Coordinate

Page 217: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

217

MINIMALNA SPECYFIKACJA

Ocean1, egzemplarz klasy Ocean, składa się z dwuwymiarowej tablicy

komórek, które są egzemplarze klasy Cell lub jego podklas - Prey,

Predator, Oblacle.

Maksymalny rozmiar oceanu - 70 kolumn i 25 wierszy. Domyślnie ,

parametry oceanu maksymalne (wierszy-25, kolumny-70).

Egzemplarz myOcean tworze się w Cell, jako zmienna klasy, z

parametrami domyślnymi.

Użytkownik interakcyjnie wprowadza ilość przeszkód, drapieżników i

ofiar.

Komentarz: Powinna być zabezpieczona ochrona przed wprowadzeniem

wielkości, które są większy od ilości komórek w oceanie

(MaxNumCols*MaxNumRows).

Modelowanie wykonuje się dla wprowadzonej przez użytkownika ilości iteracji

(domyślnie 1000).

Page 218: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

218

Iteracja składa się z następujących kroków:

Każdej komórce Cell w myOcean wysyła się komunikat process.

Wykonanie komunikatu process przebiega następujące:

• Sąsiednie Cells znajdują się w północnym, półdniowym, wschodnim,

zachodnim kierunkach ot bieżącego stanu.

• Komórki, znajdujące się koło granicy oceanu, mają za sąsiedni tylko z

lewej i prawej strony lub od góry i od dołu.

•Prey przemieszczają się w sposób losowy, jeżeli to jest możliwe do

sąsiedniej pustej komórki Cell lub zostają się na miejscu.

•Predators umierają, jeżeli timeToFeed stało zero, lub jedzą sąsiednie

losowo wybraną ofiarę, lub w losowo dobierany sposób przemieszczają się

do sąsiedniej pustej komórki, lub zostają się na miejscu.

MODELOWANIE

• Kiedy Predator przemieszcza się i je Prey to jego timeToFeed przyjmuje

początkową wartość.

Page 219: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

219

• Przy przemieszczeniu Prey lub Predator, timeToReproduce których

równo zero, tworzą się nowe Prey lub Predator w tym miejscu, z

którego oni przemieszczają się.

•Każdy process zmniejsza timeToRerpoduce każdego Prey i

Predator o 1.

• Ilości Prey, Predator i Obtacles i ilość wykonanych iteracji

wyprowadza się po każdej iteracji.

Modelowanie dobiega do końca jeżeli:

•wykonano określone ilość iteracji,

• ilość Prey stało równym zero,

• ilość Predators stało równym zero.

Page 220: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

220

GŁÓWNE KOMUNIKACJE: POCZĄTKOWA HIERARCHIA

Dla obiektów klasy Ocean

Metody dostępu (dla otrzymania odpowiedzi lub inicjalizacji zmiennych):

- getNumPrey( ) - zwraca ilość ofiar:

- set NumPrey (aNumber) - ustala ilość ofiar

- getNumPredators ( ) - zwraca ilość drapieżników

-setNumPredators(aNumber) - ustala ilość drapieżników.

getNumObstacles ( ) - zwraca ilość przeszkód

- setNumObstacles (aNumber) - ustala ilość przeszkód.

Page 221: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

221

initialize( ) - inicjalizuje generator liczb losowych i rozmiar oceanu.

Ustala domyślne wartości ilości przeszkód, ofiar i drapieżników.

initCells - Odczytuje, wprowadzone przez użytkownika ilości przeszkód,

ofiar i drapieżników, i wstawia je w ocean.

addObstacles (numObstacles) - ustala numObstacles przegród w oceanie;

addPredators (numPredators) - ustala numPredators drapieżników w

oceanie.

addPrey (numPrey) - ustala numPrey ofiar w oceanie.

Metody inicjalizacji

Page 222: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

222

myOcean-> displayStats( ) - pokazuje numer iteracji, ilość

drapieżników, ofiar i przeszkód.

Cell->process( ) - przemieszcza komórki zgodnie z

regułami każdej podklasy i odnawia tablice Cells w Ocean1.

Cell->displayCell( ) odwzorowuje wszystkie komórki

Ocean* myOcean = new Ocean;

myOcean -> run ( ) program główny,

określa ilość iteracji,

potem wywołuje iteracje :

Cell-> process,

Cell->displayStats( ),

Cell->displayCells( ),

Cell->displayBorder( ).

Page 223: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

223

UŚCIŚLENIE POCZĄTKOWEGO PROJEKTU

1. virtual ~Cell( void) destructor (klasa Cell)

virtual ~Prey( void) destructor (klasa Prey)

virtual ~Predator (void) destructor (klasa Predator)

W modeli stworzona dwuwymiarowa tablica wskaźników na

obiekty klasy Cell lub jego podklas (Prey, Predator). Jeżeli

destruktor klasy

rodzicielskiej ogłosimy wirtualnym, operator delete może

zwalniać pamięć, przydzieloną pod obiekty klasy Cell

lub jego podklasy we wszystkich wystąpieniach programu.

Funkcji wirtualne w projekcie

Page 224: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

224

2. funkcja virtual process( )

Wszystkie podklasy klasy Cell w różne sposoby wykonują

komunikat process. Obiekty klas Cell i Obstacle nie robią nic.

Obiekty podklasy Prey próbują przemieszczać się i rozmnażać się.

Obiekty podklasy Predator próbują jeść ofiary, przemieszczać się i

rozmnażać się.

Dlatego funkcja process( ) powinna być wirtualna.

Page 225: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

225

3. funkcja virtual reproduce (anOffset)

Funkcja reproduce (anOffset) wykonuje się w czasie

modelowania, kiedy komórka (Prey, Predator) powinna odtworzyć się w

przedstawionych współrzędnych tablicy cells. Ponadto zależy od

konkretnej podklasy Cell.

Dlatego funkcja reproduce (anOffset) powinna być wirtualna.

Page 226: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

226

funkcja getEmptyCellCoord ( ) ( klasa Ocean )

Komentarz:

funkcja getEmptyCellCoord ( ) stworzona po to, aby zmieścić nowe

obiekty klas Obstacle, Predator i Prey w oceanie. Trzeba w sposób

losowy wybrać współrzędne w tablice cells i sprawdzić, czy jest to

pusta komórka.

Ten powtarzający się proces jest zdefiniowany w

funkcji getEmptyCellCoord( ).

Member function ( metody)

Page 227: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

227

funkcja getNeighborWithImage (anImage) ( klasa Cell )

Podklasy Cell przy próbie przemieszczenia podporządkowują się rożnym

ustalonym algorytmom.

Prey i Predator sprawdzają sąsiednie komórki na obecność różnych

obiektów w nich w sposób podobny (niezależnie od tego czy to pusta komórka

lub komórka, zawierająca Prey ). Wykorzystując porównanie

wyglądu komórek, można znaleźć sąsiednie komórki, spełniające

żądanie sąsiada i zwrócić losową wybraną z nich.

Funkcja getNeighborWithImage(anImage) zwraca wskaźnik do przypadkowo

wybranej sąsiedniej komórki spośród tych, które zawierają animację

anImage.

Page 228: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

228

funkcja getCellAt(aCoord) (klasa Cell )

Liczne funkcji, uczestniczące w obróbce komórek i

obiektów podklas żądają otrzymania dostępu do komórki o

współrzędnej aCoord w tablice Ocean1. Funkcja

getCellAt(aCoord) zwraca wskaźnik do takiej komórki.

funkcja assignCellAt(aCoord, aCell) (klasa Cell )

Liczne funkcji uczestniczące w obróbce komórek i

obiektów podklas żądają rozmieszczenia nowej komórki w miejsce

współrzędnych aCoord w tablice cells Ocean1.

Funkcja assignCellAt( aCoord, aCel1) przemieszcza aCell w miejsce

współrzędnych aCoord w tablice cells Ocean1.

Page 229: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

229

funkcja moveFrom (from, to) ( podklasa Prey )

Metody obróbki klas Prey i Predator często żądają

przemieszczenia obiektu z jego bieżącego miejsca w tablice cells

Ocean1 w miejsce o nowych współrzędnych. Funkcja

moveFrom(from, to) przemieszcza obiekty z komórki o

współrzędnych from do komórki o współrzędnych to.

randReal( ) (klasa Random)

Funkcja randReal( ) (klasa Random) w założeniu algorytmu

bazowego generacji liczb losowych uszeregowanych pomiędzy 0.0 a 1.0,

wykonuje generację liczb losowych rzeczywistych.

Page 230: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

230

funkcja nextIntBetween(Low, High)

Komentarz:

Funkcja nextIntBetween(Low, High) najpierw wywołuje

randReal(), a potem przemieszcza, skaluję i transformuję

otrzymaną liczbą rzeczywistą w liczbę całkowitą w określonym

zakresie.

Page 231: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

231

KOŃCOWA HIERARCHIA KLAS

Pomimo klas przedstawiających pierwotnie obiekty, które omówione

zostały wcześnie, w oddzielnej klasie wyróżniono generator liczb losowych.

Końcowa hierarchia klas przedstawiona poniżej. Dla każdej klasy w

nawiasach okrągłych podano ich zmienne składowe.

Ocean_Sim (główny program, nie klasa)

Ocean (numRows, numCols, size, numPrey, numPredators,

numObstacIes, random, cells)

Cell (static Ocean1, offset, image)

Prey (timeToReproduce)

Predator (timeToFeed)

Obstacle ( )

Coordinate (x. y)

Random (seed1, seed2)

Page 232: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

232

badacz

Diagram wariantów wykorzystania systemu modelowania

ekologii oceanu

Wykonać symulacje:

W1

Wykonać symulacj

e: W5 Wykonać

symulacje: W2

Wykonać symulacje

: W4 Wykonać symulacj

e: W3

Page 233: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

233

Diagram klas

Page 234: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

234

Diagram sekwencji: inicjalizacja

Page 235: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

:myOcean

:aCell

:random

:aPrey

:aPredator

:aObstacle

1. random.initialize( )

2. myOcean.InitCells( )

3. myOcean.addEmptyCell( )

4. cell.addPrey( )

5. cell.displayPrey( )

6. cell.addPredator( )

7. cell.displayPredator( )

8. cell.addObstacle ( )

9. cell.displayObstacle( )

„local”

„global”

„global”

„global”

„global”

Diagram kooperacji: inicjalizacja

Page 236: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

236

Diagram maszyny stanowej: Prey

Inicjalizacja modelowanie

wait

move

reproduce

Page 237: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

237

Diagram maszyny stanowej: Predator

Inicjalizacja modelowanie

wait

move

search

reproduce

Page 238: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

238

N imagePrey==imageOst;

[yes;]

Przykład diagramu czynności: poszukiwanie Prey

[not]

imagePrey==imageWest;

imagePrey= =imageNord;

imagePrey==imageSouth;

[yes;]

[yes;]

[yes;]

[not]

[not]

[not]

eat

move i++

i< =N;

[yes;]

[not]

Page 239: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

239

Page 240: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

240

Page 241: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

241

Page 242: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

242

Page 243: Automatyka i robotykawsinf.edu.pl/assets/img/podstorny/Materiały...Ruby on Rails (często nazywany RoR lub po prostu Rails) – framework open source do szybkiego tworzenia aplikacji

243