Objektově orientované programování

Podobné dokumenty
Objektově orientované programování 1 XOBO1. Autor: Doc. Ing. František Huňka, CSc.

OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ

Návrhové vzory Design Patterns

TÉMATICKÝ OKRUH Softwarové inženýrství

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

7 Jazyk UML (Unified Modeling Language)

Základy objektové orientace I. Únor 2010

KTE / ZPE Informační technologie

7 Jazyk UML (Unified Modeling Language)

Návrhové vzory. Jakub Klemsa, Jan Legerský. 30. října Objektově orientované programování.

7.5 Diagram tříd pokročilé techniky

IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33

Principy objektově orientovaného programování

Objektově orientovaný přístup

Abstraktní datové typy: zásobník

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

UML - opakování I N G. M A R T I N M O L H A N E C, C S C. Y 1 3 A N W

Úvod do programovacích jazyků (Java)

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Informační systémy 2008/2009. Radim Farana. Obsah. UML - charakteristika

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

7.5 Diagram tříd pokročilé techniky

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

Úvod do programování - Java. Cvičení č.4

1. Dědičnost a polymorfismus

UML a jeho použití v procesu vývoje. Jaroslav Žáček jaroslav.zacek@osu.cz

Modelování informačních systémů s využitím jazyka UML. Jaroslav Šmarda

Programování II. Třídy a objekty (objektová orientovanost) 2018/19

11. Přehled prog. jazyků

Generické programování

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

Vyřešené teoretické otázky do OOP ( )

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Objekty, třídy, instance

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

UML. Unified Modeling Language. Součásti UML

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

Programování v C++ 1, 6. cvičení

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

IRAE 07/08 Přednáška č. 1

7.3 Diagramy tříd - základy

Výčtový typ strana 67

6 Objektově-orientovaný vývoj programového vybavení

8 Třídy, objekty, metody, předávání argumentů metod

Teoretické minimum z PJV

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

Unifikovaný modelovací jazyk UML

PREPROCESOR POKRAČOVÁNÍ

Matematika v programovacích

2. Modelovací jazyk UML 2.1 Struktura UML Diagram tříd Asociace OCL. 3. Smalltalk 3.1 Jazyk Pojmenování

Programování v Javě I. Leden 2008

Informační systémy 2008/2009. Radim Farana. Obsah. Nástroje business modelování. Business modelling, základní nástroje a metody business modelování.

Programování v Javě I. Únor 2009

1. Programování proti rozhraní

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

OOPR_05. Případové studie

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda

Paměť počítače. alg2 1

Programování v C++ 3, 3. cvičení

Modelování procesů s využitím MS Visio.

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Vývoj informačních systémů. Přehled témat a úkolů

KIV/ASWI 2007/2008 Pokročilé softwarové inženýrství. Cíle předmětu Organizační informace Opakování

Projekty pro výuku programování v jazyce Java

Softwarové komponenty a Internet

PB161 Programování v jazyce C++ Přednáška 7

Student s Life. Návrhová dokumentace (Design) Lukáš Barák, Jakub Ječmínek, Jaroslav Brchel, Jiří Zmeškal

PB161 Programování v jazyce C++ Přednáška 7

Programování v C++ 2, 4. cvičení

Programování II. Návrh programu I 2018/19

typová konverze typová inference

7.3 Diagramy tříd - základy

Třídy. Instance. Pokud tento program spustíme, vypíše následující. car1 má barvu Red. car2 má barvu Red. car1 má barvu Blue.

Profilová část maturitní zkoušky 2017/2018

10 Balíčky, grafické znázornění tříd, základy zapozdření

Přehled probírané látky

Diagramy tříd - základy

Vytváření a použití knihoven tříd

Objektové programování

Programování II. Modularita 2017/18

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

DTP Základy programování Úvod do předmětu

Datové struktury. alg12 1

Tvorba informačních systémů

Úvod. Programovací paradigmata

Dalším příkladem může být například výstup dat na různá zařízení, souborů, grafických rozhraní, sítě atd.

Seminář Java II p.1/43

Úvod do programovacích jazyků (Java)

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Algoritmizace. Cíle předmětu

20. Projekt Domácí mediotéka

Profilová část maturitní zkoušky 2013/2014

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Jazyk C# (seminář 6)

Návrh IS - UML. Jaroslav Žáček

Objekty, třídy, vazby 2006 UOMO 30

Programovací jazyk Úvod do programování v C#

Transkript:

Objektově orientované programování Doc. Ing. František Huňka, CSc. katedra informatiky a počítačů PřF Ostravská univerzita frantisek.hunka@osu.cz 1

Literatura zdroje informací Pecinovský R.: Myslíme objektově v jazyku Java 5.0, Grada 2004 Barness, D., Kolling, M. Object First with Java. Prentice Hall 2009 Arlow J., Neustadt I.: UML2 a unifikovaný proces vývoje aplikací. Computer Press 2007 Gamma E., Helm R., Johnson R., Vlissides J.: Návrh programů pomocí vzorů. Grada 2003 Pecinovský R.: Návrhové vzory. Computer Press 2007 2

Literatura zdroje informací Polák, Merunka: Objektově orientované programování, Objektově orientované pojmy. Softwarové noviny 1993 série článků. www.oracle.com - prostředí jazyka Java 3

Obsah kurzu 1/3 1. Úvod do tříd a objektů. Java a její zvláštnosti. UML (Unified Modeling Language) a jeho diagramy. 2. Třídně instanční ní model. Třída, instance. Zpráva, metoda. 3. Práce s objekty v grafickém prostředí (bod, čára). 4. Skládání objektů, grafické objekty křížek, obdélník. 5. Skládání objektů praktická aplikace, přetížené konstruktory. 4

Obsah kurzu 2/3 6. Práce s poli jako datovými atributy. 7. Případová studie koruna, účet. 8. Návrhové vzory a jejich použití při návrhu programu. Využití vzoru messanger (přepravka), singleton (jedináček). 9. Balíčky, dědičnost, třída Object. 10.Dědičnost, vztahy mezi nadtřídou a podtřídami. 11.Polymorfismus. Abstraktní třída, rozhraní. 12.Využití polí pro ukládání objektů. 5

Obsah kurzu 3/3 12.Spojový seznam, využití dědičnosti a skládání (delegování). 13.Stromové struktury. 6

Obsah přednášky Objektově orientované paradigma perspektiva. Objektově orientované jazyky. Java jako technologie. Formalizace zápisu třída. Unified modeling language UML. 7

Objektově orientovaný přístup Objektově orientovaný přístup zahrnuje: OO analýzu co chci dělat, OO návrh (design) implementaci, programování. OOP - objektově orientované programování. V OOP na rozdíl od procedurálního, logického programování pracujeme pouze s OBJEKTY. Pojem objekt je jak v reálném světě, tak v počítačovém světě. 8

Objektově orientovaný přístup Blízkost chápání reálného světa pojem objekt se vyskytuje jak v reálném světě, tak v počítačovém světě. Obecně mají stejné charakteristiky: vlastnosti & datové atributy (instanční proměnné) schopnosti (funkce) & metody 9

Pojem OBJEKT V objektově orientovaném přístupu je objekt všechno: osoba, student, seznam vykonaných zkoušek, telefonní seznam, seznam dětí, auto, kompilační program, matice, vektor atd. Jednotlivé objekty mohou být tvořeny dalšími objekty: auto složeno z: karoserie, 4 kola, volant ubytování složeno z: odkaz na hotel, zákazníka, číslo pokoje, vybavení pokoje 10

Struktura objektu vlastnosti objektu datové atributy datová povaha objektu operace (metody), které s objektem můžeme provádět funkční povaha objektu 11

Datová povaha objektu Datová povaha objektu je dána tím, že objekty se skládají z příslušných vnitřních dat (datových atributů), což jsou buď primitivní typy (real, int, boolean, char), nebo jiné objekty (ze kterých je pak konkrétní objekt složen). 12

Funkční povaha objektu Funkční povaha každého objektu je dána tím, že každý objekt má jakoby kolem svých datových atributů (vnitřních dat) obal či zeď, která je tvořena množinou samostatných částí kódu, jež jsou nazývány metodami a které realizují požadované operace. Metody slouží k tomu, aby umožňovaly konkrétní operace s datovými atributy objektu. Metoda má své jméno, deklaruje typy vstupních a výstupních parametrů a obsahuje kód požadovaných dílčích operací. 13

Zapouzdření objektu datové atributy Osoba jméno výška oblíbená jídla seznam kamarádů dejjmeno() nastavvysku() vytiskniseznamoblibenychjidel() pridejkamaradadoseznamu(kamarad) nastavvysku(176) dejjmeno() metody 14

Zapouzdřenost objektu Zapouzdřenost objektu je důležitá vlastnost OOP a znamená, že s datovými atributy objektu nemůžeme pracovat přímo, ale pouze prostřednictvím deklarovaných metod objektu. Množina povolených operací s objektem se nazývá protokol metod objektu 15

Členění metod Metody get/ set přístupové a modifikační metody. Metody vytvářející objekty konstruktory. Ostatní metody. 16

Pojem třídy Většinou, když vytváříme objekty, potřebujeme vytvořit více objektů dané struktury. Tyto objekty potřebujeme vytvořit podle nějaké šablony (formy, předpisu). Tuto šablonu představuje třída. Třídu si můžeme představit jako továrnu na objekty. Třída (Class) deklarujeme jedenkrát a vytvoříme libovolný počet objektů (instancí). 17

Struktura třídy public class Trida { // deklarace datovych atributu... // deklarace metod... 18

public class Hello { // datovy atribut private String pozdrav = "Hello World"; // metoda public void go() { System.out.println("\n" + pozdrav); Poznámky Třída Hello a třída HelloTest 1 public class HelloTest { 2 public static void main(string[] args) { 3 // vytvoreni instance (objektu) 4 Hello hello = new Hello(); 5 hello.go(); 6 7 19

public class Citac { // datovy atribut private int pocet; // pristupova metoda k atributu pocet public int getpocet(){ return pocet; Poznámky Třída Citac public void pricti(){ pocet = pocet + 1; public void odecti(){ pocet--; public void nuluj(){ pocet = 0; public String tostring(){ return "Citac stav: " + getpocet(); public void tisk(){ //this - odkaz na sebe sama System.out.println(this.toString());

Poznámky 1 public class CitacTest { 2 public static void main(string[] args) { 3 Citac ales = new Citac(); 4 Citac eliska = new Citac(); 5 ales.odecti(); 6 ales.odecti(); 7 eliska.pricti(); 8 eliska.pricti(); 9 eliska.odecti(); 10 System.out.println("Tisk citace ales: "); 11 ales.tisk(); 12 System.out.println("Tisk citace eliska: "); 13 eliska.tisk(); Třída CitacTest

public class Citac { private int pocet; // pristupova metoda k atributu pocet public int getpocet(){ return pocet; Poznámky Využití přístupových a modifikačních metod // modifikacni metoda atributu pocet public void setpocet(int cislo) { pocet = cislo; public void pricti(){ //pocet = pocet + 1; this.setpocet(this.getpocet() + 1); public void odecti(){ setpocet(getpocet() - 1); //pocet--; public void nuluj(){ this.setpocet(0); //pocet = 0; public void pricticislo(int cislo) { setpocet(getpocet() + cislo);

Metoda tostring() Metodu deklaruje třída Object. Vrací textovou reprezentaci konkrétní třídy (objektu). Je nutné ji deklarovat, jinak by se použila metoda tostring() třídy Object. 23

public class CitacTest { public static void main(string[] args) { Citac ales = new Citac(); Citac eliska = new Citac(); ales.setpocet(11); eliska.setpocet(3); ales.pricticislo(15); ales.odecti(); eliska.pricticislo(-24); eliska.pricti(); System.out.println("Tisk citace ales: "); ales.tisk(); System.out.println("Tisk citace eliska: "); eliska.tisk(); Poznámky Třída CitacTest

Objektově orientovaný přístup Způsob nazírání na realitu jako na fyzikální model, který simuluje chování reálné, nebo imaginární části světa; Řeší krizi programového vybavení; Zahrnuje oblast analýzy, návrhu a implementace programových produktů. 25

Výhody objektově orientovaného přístupu Blízkost chápání reálného světa Stabilita návrhu Znovupoužitelnost na úrovni kódu 26

Výhody objektově orientovaného přístupu 1/3 Blízkost chápání reálného světa V objektově orientovaném přístupu se vyjadřujeme a pracujeme v pojmech reálného světa a to se neliší od způsobu chápání reálného světa. Jev - Koncept Objekt Třída 27

Programování jako proces modelování modelování koncepty specifikující problém mapování třídy realizované koncepty abstrakce abstrakce jevy mapování objekty, instance tříd referenční systém model systému 28

Složky procesu modelování Jev je věc, která má danou individuální existenci v reálném světě, nebo v mysli; cokoli reálného. Koncept je zevšeobecňující představa kolekce jevů, založena na znalostech společných vlastností jevů v kolekci. 29

Výhody objektově orientovaného přístupu 2/3 Stabilita návrhu Místo zaměření se na funkcionalitu systému, je prvním krokem vytvoření fyzikálního modelu reálného světa odpovídající dané aplikaci. Tento model potom vytváří základ pro různé funkce, které systém může mít. Tyto funkce mohou být později měněny a mohou být dodávány nové funkce beze změny základního modelu. 30

Diagram tříd knihovny 31

Výhody objektově orientovaného přístupu 3/3 Znovupoužitelnost na úrovni kódu. Každý OOP systém má knihovnu tříd (hotové třídy). 1. Znovupoužitelnost vytvoření instance od konkrétní knihovní třídy (nebo námi vytvořené třídy). 2. Vytvoření podtřídy od konkrétní knihovní (naší) třídy a doplnění datových atributů a metod. 32

Objektově orientované programovací jazyky Simula doba vzniku 1967 Smalltalk model-view-controller C++ Beta Self, Ada 33

Java jako technologie Objektově orientovaná Nezávislá na platformě Robustní, dynamická a bezpečná Víceprocesní Podporuje vývoj SW pomocí komponent Distribuovaná 34

Java objektová aplikace pro BlueJ // Class Hello: Hello-world program pro demonstraci v BlueJ class Hello { // Method that does the work public void go() { System.out.println("Hello, world"); /** * main method for testing outside BlueJ */ // public static void main(string args[]) //{ Hello hi = new Hello(); // hi.go(); 35

Nezávislost na platformě Produktem překladu zdrojových souborů je Java Bytecode (soubory.class) nezávislé na architektuře počítače Knihovny java.awt.*, java.net.*, java.applet.* Java Virtual Machine (JVM) imaginární stroj implementovaný pomocí programové emulace na skutečném stroji Instrukční sada, registry, zásobník (stack), garbage collector 36

Typické vývojové prostředí v Javě Fáze 1: Edit Editor Disk Program vytvořen a uložen v.java souboru Fáze 2: Compile Compiler Disk Kompilátor vytvoří bytecode, který uloží do.class souboru Fáze 3: Load Class Loader Primary Memory Class loader čte.class soubor z disku a uloží ho do paměti Disk Fáze 4: Verify Bytecode Verifier Primary Memory Bytecode verifier potvrdí, že celý bytecode je platný Fáze 5: Execute Java Virtual Machine Primary Memory JVM čte bytecode a překládá ho do strojového kódu počítače 37

Programovací jazyk Java Java je všeobecně použitelný, conkurentní, silně typový, objektově orientovaný jazyk založený na třídách. Normálně kompilovaný do byte-kódové množiny instrukcí a binárního formátu definovaného ve specifikaci Java Virtual Machine. 38

Programovací jazyk Java Java virtual machine je abstraktní počítačový stroj, který má množinu instrukcí a manipuluje pamětí za běhu programu. JVM je portovaný na různé platformy k poskytnutí nezávislosti hardwarové a nezávislosti operačního systému. 39

Struktura objektu formalizmus zápisu Pro deklaraci objektů se v tzv. třídně instančním modelu používá třída (class). Základní prvky třídy: název třídy (jedinečný název v rámci balíčku) datové atributy primitivní datové typy objektové datové typy metody (operace i datové atributy vypočítávané při každém přístupu) 40

Struktura objektu formalizmus zápisu datové atributy: primitivní int, boolean, double objektové datové typy ostatní atributy deklarované pomocí třídy metody: zajišťují základní požadované operace (tisk, tostring, výpočet ) přístupové a modifikační metody 41

Zapouzdření objektu (encapsulation) Výhody zapouzdření: s datovými atributy je možno manipulovat pouze prostřednictvím protokolu deklarovaných metod vede k zefektivnění ní procesu implementace (programování) 42

public class Bod { // deklarace datových atributů private int x; private int y; // deklarace přístupových metod public int getx() { return x; Poznámky Objektově orientované programování příklady public int gety() { return y; // deklarace modifikačních metod public void setx(int x0) { x = x0; public void sety(int y) { this.y = y; 43

// deklarace dalších metod public String tostring() { String t = "\nx: "+ x +" Y: "+y; return t; Poznámky Objektově orientované programování příklady public void tisk() { System.out.println("Souradnice bodu "+this.tostring()); // konec deklarace třídy Bod 44

public class BodTest { public static void main(string args[]) { Bod b1 = new Bod(); // vytvoření objektu / instance b1 Bod b2 = new Bod(); // vytvoření objektu / instance b2 Bod b3; // kvalifikace proměnné b3 b3 = new Bod(); // vytvoření objektu / instance b3 b1.setx(12); b1.sety(-26); b1.tisk(); Poznámky Objektově orientované programování příklady Třída BodTest b2.setx(b1.gety()); b2.sety(b1.getx()); String g = b2.tostring(): System.out.println( Bod b2: \n + g); b3.setx(b1.getx + b2.getx()); b3.sety(b2.gety * b1.getx()); System.out.println( Bod b3: ); b3.tisk(); 45

Třída bod a atributem jméno Pro snadnější identifikaci, přidáme další atribut jméno typu String 46

public class Bod_Jm { // deklarace datových atributů private int x; private int y; private String jmeno; Poznámky Třída Bod_Jm // přístupové metody public int getx() { return x; public int gety() { return y; public String getjmeno() { return jmeno; // modifikační metody public void setjmeno(string jmeno) { this.jmeno = jmeno; public void setx(int x1) { x = x1; public void sety(int y) { this.y = y; 47

public String tostring() { String t = "\nnazev bodu: "+jmeno+" X: "+ getx() +" Y: "+ gety(); return t; Poznámky Třída Bod_Jm public void tisk() { System.out.println("Souradnice bodu "+this.tostring()); public int soucet() { return x + y; public double prumer() { double v = (double) (x + y) / 2; return v; // return (double) (x + y) / 2; 48

public class Bod_JmTest { public static void main(string args[]) { Bod_Jm bod1 = new Bod_Jm(); Bod_Jm bod2 = new Bod_Jm(); Poznámky Třída Bod_JmTest bod1.setjmeno( bod_1 ); bod1.setx(44); bod1.sety(-555); bod1.tisk(); bod2.setjmeno( muj bod 2 ); bod2.sety(bod1.getx() + b1.gety()); bod2.setx(bod1.gety() b1.getx()); bod2. tisk(); System.out.println( Soucet souradnic bodu bod2: + bod2.soucet()); double prm = bod1.prumer(); 49

Co je to UML 1/2 Unified Modeling Language (UML) je standardní jazyk pro specifikaci, zobrazení (vizualizaci) vytváření a dokumentaci programových systémů, stejně také pro business modeling a jiné neprogramové systémy. UML je nejrozšířenější schéma grafické reprezentace pro modelování objektově orientovaných systémů. 50

Co je UML 2/2 UML reprezentuje kolekci nejlepších inženýrských zkušeností, jaké byly úspěšně prověřeny v modelování rozsáhlých složitých systémů. UML využívá hlavně grafickou notaci pro vyjádření návrhu programových projektů. Používání UML pomáhá projektovým týmům komunikovat, zkoumat potenciální návrhy a prověřovat návrh architektury programovým systémům. 51

Cíle UML 1/2 1. Poskytnout uživatelům jednoduchý, expresivní vizuální modelovací jazyk, aby mohly vyvíjet a měnit smysluplné modely. 2. Poskytnout mechanismus na rozšíření a další specifikaci základních konceptů. 3. Být nezávislý na konkrétním programovacím jazyku a vytvářených procesech. 4. Poskytnout formální základ pro porozumění jazyku modelování. 52

Cíle UML 2/2 5. Podpořit vysoce úrovňové rozvojové koncepty jako spolupráce, programové balíčky (frameworks), vzory (patterns) a komponenty. 6. Integrovat nejlepší zkušenosti. 53

Typy UML diagramů 1/2 Každý UML diagram je navržen, aby dovolil vývojářům a zákazníkům mít pohled na programový systém z různých perspektiv a z měnících se stupňů abstrakce. UML diagramy obecně vytváření vizuální modelovací prostředky, které zahrnují: 54

Typy UML diagramů Diagram případů užití use case diagram Diagram tříd class diagram Interakční diagramy Sekvenční diagram Diagram spolupráce Stavový diagram Diagram aktivit Fyzické diagramy Diagram komponent Diagram rozmístění deployment diagram 55

Diagram případů užití 1/4 Use Case Diagram Use case (případ užití) je specifikace posloupnosti činností (včetně měnících se a chybových posloupností, které systém může vykonávat prostřednictvím interakce (vzájemného působení) s vnějšími účastníky. Případ užití je něco, co účastník (aktor) od systému očekává. Je to případ užití systému specifickým účastníkem. Případy užití jsou vždy iniciovány účastníkem. Případy užití jsou vždy napsány z pohledu účastníka. Use case diagram (diagram případů užití) zobrazuje vztah mezi účastníky a případy užití (use cases). Use case diagram má dvě hlavní komponenty: Use cases (případy užití) Účastníky - aktory (actors) 56

Diagram případů užití 2/4 UseCase Actor Případ užití Účastník - aktor reprezentuje uživatele, nebo jiný systém, který bude v interakci (vzájemném působení) se systémem, který modelujete. Use case (případ užití) je externí pohled systému, který reprezentuje nějakou činnost, kterou uživatel může vykonávat, aby dokončil úlohu. 57

Diagram případů užití 3/4 Restaurace název systému komunikační relace číšník příjem objednávky objednání objedníní jídla servírování jídla potvrzení objednávky příprava jídla hranice systému usnadnění placení kuchař účastník / aktor klient placení konzumace jídla vrchní příjem peněz placení za jídlo případ užití (use case) 58

Diagram případů užití 4/4 Diagram případu užití může být snadno rozšířen o další činnosti, resp. aktualizovat stávající činnosti. 59

Diagram tříd 1/2 Diagram tříd (class diagram) modeluje strukturu a obsah tříd k čemuž používá navržené prvky jako třídy, pakety a objekty. Také zobrazuje vztahy (relace) jako kompozice, dědičnost, asociaci a další. 60

Diagram tříd 61

Diagram tříd 62

Knihovna diagram tříd 63

Interakční diagramy 1/2 Sequance diagram (sekvenční diagram) zobrazuje časovou sekvenci objektů účastnící se interakce. Skládá se z vertikální dimenze (čas) a horizontální dimenze (různé objekty). Object1: Class Object2: Class Message1 Message2 Object3: Class Message4 Message3 64

Interakční diagramy 2/2 Collaboration diagram (diagram spolupráce) zobrazuje interakce organizované mezi objekty a jejich spojení (vazby) mezi sebou (pořadí zasílaných zpráv mezi objekty). 65

Stavový diagram state diagram Stavový diagram zobrazuje sekvence stavů, kterými prochází objekt během svého života v závislosti na obdrženém stimulu, spolu s jeho reakcemi a činnostmi. touch Opening complete Closed complete touch Closing touch touch timeout StayOpen Open touch 66

Diagram aktivit Zobrazuje speciální stavový diagram, kde většina ze stavů jsou stavy činností a většina přechodů je spouštěna vykonáním akcí ve zdrojových stavech. Tento diagram se zaměřuje na toky řízené vnitřním ním zpracováním. Používá se k zachycení algoritmů v programovacích jazycích vývojový diagram. 67

Diagram aktivit - příklady pridej stup en do celkem o dpovida prikazu celkem = ce lkem + stupe n pridej 1 d o citac odp ovid a prikazu citac = citac + 1 tisk "chyba" [ stupen < 60 ] [ stupen >= 60] tisk "proslo" 68

Diagram aktivit - příklady F o r k A c tio n S t a te 1 A c tio n S ta t e 2 A c t io n S ta te 3 B r a n c h A c tio n S ta te 4 A c t io n S ta te 5 M e r g e J o in A c tio n S ta t e 6 69

Fyzické diagramy 1/2 Diagram komponent zobrazuje vysokou úroveň paketové struktury samotného kódu. Jsou zobrazeny závislosti mezi komponentami včetně zdrojového kódu komponent, binárního kódu komponent a spustitelné komponenty. 70

Fyzické diagramy 2/2 Deployment diagram (diagram nasazení) zobrazuje konfiguraci prvků běhového zpracování (run-time processing elements) a programových komponent, procesů a na nich žijících objektů. 71