SWI041: (Design Patterns) JAK se to obvykle dlá

Rozměr: px
Začít zobrazení ze stránky:

Download "SWI041: (Design Patterns) JAK se to obvykle dlá"

Transkript

1 SWI041: Návrhové vzory (Design Patterns) JAK se to obvykle dlá

2 Zdroje: použity vzory GoF (Gamma, Helm, Johnson, Vlisidess: Design Patterns - The Elements of reusable objectoriented software. 1995), Tomáš Richta (Návrhové vzory I., FEL 2005), Petr Šlégr (Návrhové vzory II., FEL 2005) SWI041 - Návrhové vzory 2

3 Nejprve trochu kontroly Stav projekt

4 Co to je návrhový vzor? Christopher Alexander: Každý vzor popisuje asto se vyskytující problém a poté popisuje jádroešení tohoto problému tak, aby bylo možno toto ešení opakovan využívat, bez toho, že bychom stejnou vc dlali dvakrát". Pestože se tato definice týká návrhu budov, totéž platí pro návrhové vzory pi tvorb program. ešení je zde vyjádeno pomocí potebných objekt a zpsobu jejich komunikace. SWI041 - Návrhové vzory 4

5 Typy vzor Analytické vzory úetnictví Architektonické vzory Klient/Server, ti vrstvy, Broker, Model-View- Controller (MVC) Návrhové vzory základní - tvorba, struktura, chování (GoF) paralelní (producent-konzument), reálný as, testovací,... Programovací vzory, konvence SWI041 - Návrhové vzory 5

6 Obecnéásti návrhových vzor Jméno vzoru Popis problému Popisešení Dsledky použití SWI041 - Návrhové vzory 6

7 Jméno vzoru Termín, pes který se na vzor odvoláváme. Aby se v katalogu vzor dobe a intuitivn hledalo, je volba jména dležitá a obtížná. P.: Proxy, Iterator SWI041 - Návrhové vzory 7

8 Popis problému pro vzor Vyjaduje situaci, kde se použití vzoru hodí. Mže se stanovit píkladem, seznamem podmínek, které musí platit, apod. SWI041 - Návrhové vzory 8

9 P: Návrhový vzor Proxy Deklarace zámru: pokud potebujeme zástupce objektu, nebo vlastní objekt je nkde jinde, je tžko pístupný, má být chránn,... Motivaní píklad: editor dokumentu by ml umt pracovat s obrázky, ale zobrazení obrázku je nároné -asto postaí náhradník SWI041 - Návrhové vzory 9

10 Popisešen ení pro vzor Popisuje elementy použité piešení a jejich vztahy. Nejedná se o konkrétní implementaci, nebo vzor je pouze šablonou pro ešení. SWI041 - Návrhové vzory 10

11 Struktura vzoru Proxy Obrázek pevzat z [GoF] SWI041 - Návrhové vzory 11

12 Dsledky použit ití vzoru Rozmanité dsledky, které s sebou použití vzoru pináší - nap. asové a prostorové nároky. Poslouží dobe i pi výbru alternativ. SWI041 - Návrhové vzory 12

13 Píklad použit ití vzoru Proxy Obrázek pevzat z [GoF] SWI041 - Návrhové vzory 13

14 Píbuzné strukturáln lní vzory Proxy zastupuje objekt a poskytuje stejné rozhranní jako on Adapter mní rozhranní, které objekt poskytuje Dekorátor nco pidává SWI041 - Návrhové vzory 14

15 SWI041 - Návrhové vzory 15

16 Kategorie návrhových vzor Vzory pro vytváení a manipulaci sreprezentací informace (nap. Abstract Factory, Proxy) Vzory strukturální vyjadující strukturu implementace (nap. Adapter, Composite) Vzory pro chování (nap. Iterátor) SWI041 - Návrhové vzory 16

17 Taxonomie návrhových n vzor Tvorba Struktura Chování Statické Tovární metoda Adaptér (tídní) Šablonová metoda Dynamické Singleton Adaptér (instanní), Kompozice Strategie SWI041 - Návrhové vzory 17

18 Problém Je teba, aby v aplikaci existovala pouze jedna instance njaké tídy. Jak to zajistit? SWI041 - Návrhové vzory 18

19 Singleton SWI041 - Návrhové vzory 19

20 Singleton Vlastnosti: konkrétní typ poskytnuté instance lze urit za bhu poskytovanou instanci lze mnit bez zmn klientského kódu snadná zmna logiky tvorby - nap. povolení více instancí Píklad v J2SE: java.lang.runtime Související vzory: Null Object/Objekt null Object Pool SWI041 - Návrhové vzory 20

21 Problém Uritáást innosti (provádného algoritmu) je stejná u rzných tíd, ale bázová tída nezná odlišné chování svých potenciálních podtíd SWI041 - Návrhové vzory 21

22 Píklad: komunikaní systém m (chat) Server pijímá rzné typy zpráv a podle nich provádí rzné akce. Server pracuje podle tohoto schématu: kontrola identity a oprávnní zaslat danou zprávu provedení akce a píprava odpovdi odeslání odpovdi a záznam do logu Kroky 1. a 3. jsou stejné, krok 2. se bude lišit pro každý typ zprávy. SWI041 - Návrhové vzory 22

23 Template Method (šablonová metoda) Definuje kostru algoritmu Specifikaci nkterých krok nechává na podtídách Umožuje modifikovat nkteré kroky algoritmu bez zmny jeho struktury Obrázek pevzat z [GoF] SWI041 - Návrhové vzory 23

24 Vzor: : Builder Deklarace zámru: oddlení konstrukce složitého objektu od jeho reprezentace pokud má být algoritmus pro vytváení složitého objektu nezávislý na vytváeníástí pokud lze objekt reprezentovat rznými zpsoby Motivaní píklad: editor dokumentu v RTF by ml umt pracovat s rznými reprezentacemi textu (ASCII, TeX, ) SWI041 - Návrhové vzory 24

25 Struktura vzoru Builder Obrázek pevzat z [GoF] SWI041 - Návrhové vzory 25

26 Píklad použit ití vzoru Builder Obrázek pevzat z [GoF] SWI041 - Návrhové vzory 26

27 Participanti Builder (TextConverter) specifikuje abstraktní interface pro vytváeníástí objekt typu Product. ConcreteBuilder (ASCIIConverter, TeXConverter, TextWidgetConverter) kontruuje a sestavujeásti - implementuje interface tídy Builder udržuje si vytvoenou reprezentaci poskytuje služby pro vyzvednutí produktu (GetASCIIText, GetTextWidget,...) SWI041 - Návrhové vzory 27

28 Participanti (pokra.) Director (RTFReader) konstruuje objekty pomocí služeb tídy Builder Product (ASCIIText, TeXText, TextWidget) reprezentuje složitý objekt, který je konstruován, tída ConcreteBuilder vytváí konkrétní vnitní reprezentaci zahrnuje tídy pro definiciástí a služby pro konstrukci celku SWI041 - Návrhové vzory 28

29 Kolaborace pi použit ití Builder Obrázek pevzat z [GoF] SWI041 - Návrhové vzory 29

30 Vzor: Iterator (Cursor) Deklarace zámru: pro sekvenní pístup ke složkám složeného objektu bez ohledu na reprezentaci - pokud má být procházen seznam aniž se zabýváme jeho reprezentací (uniformní pístup pro traverzování agregovaných struktur) Motivaní píklad: sekvenní prchod seznamy SWI041 - Návrhové vzory 30

31 Struktura pro Iterator Obrázek pevzat z [GoF] SWI041 - Návrhové vzory 31

32 Píklad použit ití Iterator Obrázek pevzat z [GoF] SWI041 - Návrhové vzory 32

33 Participanti Iterator definuje služby pro pístup k elementm ConcreteIterator implementuje služby tídy Iterator udržuje si informace o aktuální poloze Aggregate definuje služby pro vytváení objet typu Iterator ConcreteAggregate implementuje služby pro tídu Aggregate SWI041 - Návrhové vzory 33

34 Implementace template <class Item> class List { public: List(long size = DEFAULT_LIST_CAPACITY); //... }; long Count() const; Item& Get(long index) const; SWI041 - Návrhové vzory 34

35 Implementace (pokra.) template <class Item> class Iterator { public: virtual void First() = 0; virtual void Next() = 0; virtual bool IsDone() const = 0; virtual Item CurrentItem() const = 0; protected: Iterator(); }; SWI041 - Návrhové vzory 35

36 Implementace (pokra.) template <class Item> class ListIterator : public Iterator<Item> { public: ListIterator(const List<Item>* alist); virtual void First(); virtual void Next(); virtual bool IsDone() const; virtual Item CurrentItem() const; private: const List<Item>* _list; long _current; }; SWI041 - Návrhové vzory 36

37 Implementace (pokra.) template <class Item> ListIterator<Item>::ListIterator ( const List<Item>* alist ) : _list(alist), _current(0) { } SWI041 - Návrhové vzory 37

38 Implementace (pokra.) template <class Item> void ListIterator<Item>::First () { _current = 0; } template <class Item> void ListIterator<Item>::Next () { _current++; } SWI041 - Návrhové vzory 38

39 Vzor: : Interpret Deklarace zámru: máme zadánu gramatiku jazyka, jehož vty chceme interpretovat Motivaní píklad: hledání vzorku zadaného regulárním výrazem v etzci (známe gramatiku regulárního výrazu) SWI041 - Návrhové vzory 39

40 Struktura vzoru Interpret globální kontext Obrázek pevzat z [GoF] SWI041 - Návrhové vzory 40

41 Gramatika pro regulárn rní výraz expression ::= literal alternation sequence repetition '(' expression ')' alternation ::= expression ' ' expression sequence ::= expression '&' expression repetition ::= expression '*' literal ::= 'a' 'b' 'c'... { 'a' 'b' 'c'... }* SWI041 - Návrhové vzory 41

42 Interpret pro reg. výrazy Obrázek pevzat z [GoF] SWI041 - Návrhové vzory 42

43 Reprezentace vzorku: raining & (dogs cats) * Obrázek pevzat z [GoF] SWI041 - Návrhové vzory 43

44 Jiný píklad: Booleovské výrazy BooleanExp ::= VariableExp Constant OrExp AndExp NotExp '(' BooleanExp ')' AndExp ::= BooleanExp 'and' BooleanExp OrExp ::= BooleanExp 'or' BooleanExp NotExp ::= 'not' BooleanExp Constant ::= 'true' 'false' VariableExp ::= 'A' 'B'... 'X' 'Y' 'Z' SWI041 - Návrhové vzory 44

45 Tída BooleanExp class BooleanExp { public: BooleanExp(); virtual ~BooleanExp(); virtual bool Evaluate(Context&) = 0; virtual BooleanExp* Replace(const char*, BooleanExp&) = 0; virtual BooleanExp* Copy() const = 0; }; SWI041 - Návrhové vzory 45

46 Tída Context class Context { public: bool Lookup(const char*) const; void Assign(VariableExp*, bool); }; SWI041 - Návrhové vzory 46

47 Tída VariableExp class VariableExp : public BooleanExp { public: VariableExp(const char*); virtual ~VariableExp(); virtual bool Evaluate(Context&); virtual BooleanExp* Replace(const char*, BooleanExp&); virtual BooleanExp* Copy() const; private: char* _name; }; SWI041 - Návrhové vzory 47

48 Vzor: : Abstract factory (Kit) Deklarace zámru: interface pro vytváení kolekcí objekt bez podrobné specifikace jejich struktury Motivaní píklad: SWI041 - Návrhové vzory 48

49 Abstract factory (stavebnice( stavebnice) Obrázek pevzat z [GoF] SWI041 - Návrhové vzory 49

50 Píklad použit ití Obrázek pevzat z [GoF] SWI041 - Návrhové vzory 50

51 Vzor: : Factory method (virtu( virtuální konstruktor) Deklarace zámru: interface pro vytváení a manipulaci s objekty, jejichž konkrétní reprezentaci neznáme SWI041 - Návrhové vzory 51

52 Struktura pro Factory method Obrázek pevzat z [GoF] SWI041 - Návrhové vzory 52

53 Píklad použit ití Factory method Obrázek pevzat z [GoF] SWI041 - Návrhové vzory 53

54 SWI041 - Návrhové vzory 54

55 Pehled vzor Abstract Factory interface pro vytváení sady objekt, bez specifikace konkrétní tídy Adapter pevádí interface tídy na interface oekávaný klientem - umožuje spolupráci nekomatibilních tíd Bridge oddluje abstrakci od implementace, takže se mohou nezávsle mnit SWI041 - Návrhové vzory 55

56 Pehled vzor Builder oddluje konstrukci složeného objektu od jeho reprezentace, takže stejný proces mže vytváet rzné reprezentace Chain of Responsibility umožuje propojení zdroje požadavku s píjemcem tak, že dává více objektm šanci požadavek zpracovat. Zetzí píjemce a pedává požadavek mezi nimi. SWI041 - Návrhové vzory 56

57 Pehled vzor Command zapouzduje požadavek jako objekt, a tím umožuje parametrizovat klienty s rznými požadavky, frontami, žurnály Composite sestavuje objekt do stromové struktury aby reprezentoval vztah celek-ást. Umožuje pracovat s celkem a jehoástmi uniformním zpsobem SWI041 - Návrhové vzory 57

58 Pehled vzor Decorator dynamicky pidává odpovdnost, pružná alternativa pro rozšiování fuknosti (alternativa k podtídám) Facade poskytuje unifikovaný interface pro sadu nástroj - podsystém. Poskytuje interfacel vyšší úrovn tak, že použití podsystém je jednodušší. SWI041 - Návrhové vzory 58

59 Pehled vzor Factory Method definuje interface pro vytváení objektu, ale ponechává na podsystémech rozhodnutí, které tídy použijí (jakou instanci) Flyweight umožuje podporu efektivního sdílení velkých sad objekt Interpreter vychází z reprezentace gramatiky jazyka, která umožuje interpretaci vt jazyka SWI041 - Návrhové vzory 59

60 Pehled vzor Iterator poskytuje sekvenní pístup k sad element agregovaných objekt bez znalosti reprezentace sady Mediator definuje object, který zapouzduje zpsob jak spolu objekty komunikují - místo aby komunikovaly pímo SWI041 - Návrhové vzory 60

61 Pehled vzor Memento bez porušení pravidla zapouzdení umožuje zapamatování stavu, do kterého se objekt mže pozdji vrátit Observer definuje vztah 1:N mezi objekty tak, že pokud jeden objekt zmní stav, všechny objekty na nm závislé jsou na to upozornny a automaticky poopraveny SWI041 - Návrhové vzory 61

62 Pehled vzor Prototype specifikuje sadu objekt potebných pro vytvoení instance prototypu a pro kopírování tohoto prototypu Proxy poskytuje zástupce pro ízení pístupu k objektu Singleton zajišuje,a by tída mla pouze jednu instanci a poskytuje k ní globální pístup SWI041 - Návrhové vzory 62

63 Pehled vzor State umožuje objektu zmnu chování na základ zmny jeho stavu Strategy definuje rodinu algoritm, které jsou podobné a zamnitelné (umožuje zmnu algoritmu nezávisle na klientech) SWI041 - Návrhové vzory 63

64 Pehled vzor Template Method definuje kostru algoritmu operace, který pak komunikuje s podsystémy pi vlastnímešení - krokyešení se mohou mnit beze zmny kostry algoritmu Visitor reprezentuje operaci, která má být vykonána na elementech struktury objektu - návštvu struktury objektu SWI041 - Návrhové vzory 64

65 Píklad: Šablonová metoda 1 Vytvoíme tídu Message jako pedka pro všechny typy zpráv public abstract class Message { protected User sender; protected Message (User sender) { this.sender = sender; } } //... SWI041 - Návrhové vzory 65

66 Píklad: Šablonová metoda 2 Do tídy Message pidáme ty metody, jejichž implementace je známa a spolená všem podtídám /** Sends response back to the client and make log entry... */ private void sendresponse (String text) { } //... //... SWI041 - Návrhové vzory 66

67 Píklad: Šablonová metoda 3 Do tídy Message dále pidáme abstraktní metody, jejichž implementaci zajistí až podtídy /** Checks user's right to send this message */ public abstract boolean isallowedfor (User sender); /** Does message's job and return text to be sent to the client as response */ public abstract String process (); SWI041 - Návrhové vzory 67

68 Píklad: Šablonová metoda 4 Nakonec pidáme vlastní šablonovou metodu /** This is the TEMPLATE METHOD! It performs algorithm not defined fully in this class. */ public void dispatch () { } if (isallowedfor (sender)) { sendresponse (process ()); else { sendresponse ("Forbidden"); } SWI041 - Návrhové vzory 68

69 Píklad: Šablonová metoda 5 Struktura tídy Message (rekapitulace): private void sendresponse (String text) { } public abstract boolean isallowedfor (User sender); public abstract String process (); public void dispatch () { } SWI041 - Návrhové vzory 69

70 Píklad: Šablonová metoda 6 Tvorba podtídy: implementuje se pouze to specifické public class KickMessage extends Message { public boolean isallowedfor (User sender) { return sender.isadmin (); } } public String process() { // delete user from the room... return "User kicked from the room"; } SWI041 - Návrhové vzory 70

71 Šablonová metoda - diskuse Vlastnosti: nemnnáást algoritmu je implementována pouze jednou, podtídy implementují pro n specifické chování (statický vzor) Píklad v J2SE: vlastní chování tíd java.lang.threadi java.util.timertask se urí implementací metody run() v jejich podtíd. Související vzory: tovární metoda zvláštní pípad šablonové metody (tvorba objekt) strategie (viz dále) SWI041 - Návrhové vzory 71

72 Problém Je poteba mnit chování objektu za bhu Píklady: rzné zpsoby prezentace dat (nap. lámání textu, obarvování syntaxe v IDE) rzné zpsoby interpretace dat (nap. kalendá) SWI041 - Návrhové vzory 72

73 Píklad: výpis kalendáe kalendá se liší pro rzné národy a náboženství první den v týdnu mže být rzný množina svátk je odlišná potebujeme vypsat dny v týdnu s odlišením svátk SWI041 - Návrhové vzory 73

74 Vzor Strategy (strategie) Aka policy/postup Motivace: pro nkteréinnosti existuje mnoho algoritm, které ale nelze napevno implementovat (nap. jsou vhodné vždy jen pro uritou situaci) SWI041 - Návrhové vzory 74

75 Strategie Obrázek pevzat z [GoF] Vlastnosti (srv. šablonová metoda) pro stejná data se používají rzné algoritmy algoritmus je zapouzdený do samostatného objektu algoritmus lze dynamicky mnit za bhu SWI041 - Návrhové vzory 75

76 Píklad strategie 1 Definujeme rozhraní CalendarPrinter, které bude ídit výpis kalendáe public interface CalendarPrinter { public int getfirstdayofweek (); public boolean isholiday (int day, int month); } SWI041 - Návrhové vzory 76

77 Píklad strategie 2 Vytvoíme tídu Calendar s atributem printer a píslušnými metodami set a get (setery a getery) public class Calendar { protected printer = new DefaultCalendarPrinter (); public void setprinter (CalendarPrinter printer) { if (printer!= null) { this.printer = printer; } } public CalendarPrinter getprinter () { return printer; } } SWI041 - Návrhové vzory 77

78 Píklad strategie 3 Pidáme metodu využívající služby objektu CalendarPrinter public void printweek (int week) { } int start = printer.getfirstdayofweek (); for (...) { } if (printer.isholiday (day, month)) { //... } else { } //... SWI041 - Návrhové vzory 78

79 Píklad strategie 4 Základní implementace CalendarPrinter public class DefaultCalendarPrinter implements CalendarPrinter { public int getfirstdayofweek() { return 7; // nedele } } public boolean isholiday(int day, int month) { return false; // zadne svatky :-) } SWI041 - Návrhové vzory 79

80 Píklad strategie 5 Nyní vytvoíme (nebo uživatelé našeho API) další implementace public class FrenchCalendarPrinter implements CalendarPrinter { public int getfirstdayofweek() { return 1; // pondeli } } public boolean isholiday(int day, int month) { return day == 14 && month == 7; } SWI041 - Návrhové vzory 80

81 Strategie - diskuse Píklady v J2SE: Pi vytváení instancíjava.util.treeset lze specifikovat objekt typu java.util.comparator, který definuje zpsob uspoádání množiny. Pi vytváení instance tídy java.lang.thread lze specifikovat objekt typu java.lang.runnable s definovanou metodou run() (srv. pedefinování metody run() v potomkovi tídy Thread u šablonové metody). java.util.zip.checkedinputstream Související vzory: šablonová metoda statická verze vzoru strategie SWI041 - Návrhové vzory 81

82 Problém Tída má rozhraní pro tvorbu nových objekt. Konkrétní podtídy potebují vytváet velmi odlišné typy tchto objekt. Jak to udlat, když tída neví jaké objekty bude vytváet? SWI041 - Návrhové vzory 82

83 Factory Method/Tov /Tovární metoda Virtuální konstruktor Použití: editory vytváejí jednotným zpsobem rzné dokumenty (viz píklad) abstraktní (logické) objekty poskytují rznou grafickou reprezentaci (delegáta) SWI041 - Návrhové vzory 83

84 Factory Method/Tov /Tovární metoda Tovární metoda createdocument v tíd Editor vytváí rzné instance tídy Document podle toho, na které podtíd je vyvolána. SWI041 - Návrhové vzory 84

85 Factory Method/Tov /Tovární metoda Vlastnost: poskytuje rozhraní pro tvorbu objekt, ale volbu vytváeného objektu nechává na podtídách Píklad v J2SE: javax.swing.text.editorkit.createdefaultdocument () Související vzory: šablonová metoda (viz dále) delegát (Abstract) Factory samostatná tída (typu singleton) urená pro tvorbu objekt SWI041 - Návrhové vzory 85

86 Problém Na stavu jednoho objektu závisíada jiných objekt. Pi zmn stavu objektu potebují být závislé objekty automaticky vyrozumni. Jak toho docílit? SWI041 - Návrhové vzory 86

87 Observer/Pozorovatel Aka Dependents, Publish-Subscribe J2SE: Event Delegation Model Obrázek pevzat z [GoF] SWI041 - Návrhové vzory 87

88 Observer/Pozorovatel Vlastnosti volné spojení tíd Observer a Subject hromadná komunikace (broadcast/vysílání) selektivní sledování zmn možnost odmítnutí zmn Píklady v J2SE: java.awt.* java.awt.event.* Component MouseListener JComponent PropertyChangeListener SWI041 - Návrhové vzory 88

89 Problém Chceme použít njakou užitenou tídu, která ale má jiné rozhraní, než oekáváme. Co s tím? SWI041 - Návrhové vzory 89

90 Adapter/Adaptér wrapper/obal Obrázek pevzat z [GoF] SWI041 - Návrhové vzory 90

91 Adapter/Adaptér Tídní implementace: vícenásobná ddinost Instanní implementace: kompozice Obrázky pevzaty z [GoF] SWI041 - Návrhové vzory 91

92 Adapter/Adaptér Píklad v J2SE: java.awt.event.* MouseAdapter adaptér rozhraní MouseListener poskytuje prázdné implementace všech metod MouseListener Související vzory: delegát SWI041 - Návrhové vzory 92

93 Problém Máme hierarchicky organizovaný celek s jehožástmi chceme manipulovat jednotným zpsobem. Jak na to? SWI041 - Návrhové vzory 93

94 Composite/Kompozice Použití: grafická uživatelská rozhraní strukturované dokumenty (XML, HTML,...) stromov organizovaná data... Obrázek pevzat z [GoF] SWI041 - Návrhové vzory 94

95 Composite/Kompozice Vlastnosti: definuje spolené rozhraní pro objekty stromové hierarchie jednoduché použití klient se nestará, zda pracuje s celkem nebo ástí snadné rozšiování nové prvky automaticky fungují se starými klienty Píklad v J2SE: java.awt.* Component abstraktní komponenta Container abstraktní kontejner Button, Label konkrétní jednoduché objekty Panel, Window konkrétní složené objekty SWI041 - Návrhové vzory 95

96 The End

Problém, jehož různé instance je třeba často řešit Tyto instance lze vyjádřit větami v jednoduchém jazyce

Problém, jehož různé instance je třeba často řešit Tyto instance lze vyjádřit větami v jednoduchém jazyce Interpreter Interpreter Motivace Problém, jehož různé instance je třeba často řešit Tyto instance lze vyjádřit větami v jednoduchém jazyce Příklad: zda daný textový řetězec odpovídá nějakému vzoru (match)

Více

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

Návrhové vzory. Jakub Klemsa, Jan Legerský. 30. října Objektově orientované programování. Jakub Klemsa Jan Legerský Objektově orientované programování klemsjak@fjfi.cvut.cz jan.legersky@gmail.com 30. října 2012 návrhový vzor (design pattern) obecné řešení problému, které se využívá při návrhu

Více

Semin aˇr Java N avrhov e vzory Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Duben 2008 Radek Koˇc ı Semin aˇr Java N avrhov e vzory 1/ 24

Semin aˇr Java N avrhov e vzory Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Duben 2008 Radek Koˇc ı Semin aˇr Java N avrhov e vzory 1/ 24 Seminář Java Návrhové vzory Radek Kočí Fakulta informačních technologií VUT Duben 2008 Radek Kočí Seminář Java Návrhové vzory 1/ 24 Znovupoužitelnost Dědičnost implementace třídy pomocí jiné (již existující)

Více

Semin aˇr Java N avrhov e vzory Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Duben 2009 Radek Koˇc ı Semin aˇr Java N avrhov e vzory 1/ 25

Semin aˇr Java N avrhov e vzory Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Duben 2009 Radek Koˇc ı Semin aˇr Java N avrhov e vzory 1/ 25 Seminář Java Návrhové vzory Radek Kočí Fakulta informačních technologií VUT Duben 2009 Radek Kočí Seminář Java Návrhové vzory 1/ 25 Znovupoužitelnost Dědičnost implementace třídy pomocí jiné (již existující)

Více

Návrhové vzory OMO, LS 2014/2015

Návrhové vzory OMO, LS 2014/2015 Návrhové vzory OMO, LS 2014/2015 Motivace Cílem objektového návrhu je strukturu aplikace navrhnout tak, aby splňovala následující kritéria: snadná rozšiřitelnost účelnost testovatelnost dokumentovatelnost

Více

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika Vývoj informačních systémů Architektura, návrh Vzory: Doménová logika Zachman Framework Zdroje Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Elements of Reusable Object-Oriented

Více

ČÁST 1. Zahřívací kolo. Co je a k čemu je návrhový vzor 33

ČÁST 1. Zahřívací kolo. Co je a k čemu je návrhový vzor 33 Stručný obsah Část 1: Zahřívací kolo Kapitola 1 Co je a k čemu je návrhový vzor 33 Kapitola 2 Zásady objektově orientovaného programování 39 Kapitola 3 Co konstruktor neumí (Jednoduchá tovární metoda Simple

Více

Návrh. Kroky návrhun. Základní technologická. Vstupy pro návrhn. návrhu architektury. Píklad

Návrh. Kroky návrhun. Základní technologická. Vstupy pro návrhn. návrhu architektury. Píklad Kroky návrhun Návrh Z analytického konceptuálního modelu, kde je popsáno CO, musíme navrhnout JAK se to udlá návrh architektury systému návrh uživatelského vzhledu návrh komponent návrh komunikace mezi

Více

Návrhové vzory Tvorba objektů

Návrhové vzory Tvorba objektů Objektové modelování, AD7B36OMO Návrhové vzory Tvorba objektů ČÁST B Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze https://edux.feld.cvut.cz/courses/ad7b36omo Přednáška

Více

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Bridge. Známý jako. Účel. Použitelnost. Handle/Body Bridge Bridge Známý jako Handle/Body Účel odděluje abstrakci (rozhraní a jeho sémantiku) od její konkrétní implementace předchází zbytečnému nárůstu počtu tříd při přidávání implementací používá se v době

Více

OMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC

OMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC OMO 4 - Creational design patterns A Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC Ing. David Kadleček, PhD. kadlecd@fel.cvut.cz, david.kadlecek@cz.ibm.com 1 Creational

Více

Návrhové vzory. n OO jazyky - široká paleta technických prostředků. n Návrhový vzor. n rozhraní!! n volnější vazby, parametrizace

Návrhové vzory. n OO jazyky - široká paleta technických prostředků. n Návrhový vzor. n rozhraní!! n volnější vazby, parametrizace Návrhové vzory Návrhové vzory n OO jazyky - široká paleta technických prostředků q dědičnost, polymorfismus, šablony, reference, přetěžování,... q problém - jak toto všechno efektivně používat q cíl -

Více

Literatura. E. Gamma, R. Helm, R. Johnson, J. Vlissides The Gang of Four (GoF) Design Patterns Elements of Reusable Object-Oriented Software 1995

Literatura. E. Gamma, R. Helm, R. Johnson, J. Vlissides The Gang of Four (GoF) Design Patterns Elements of Reusable Object-Oriented Software 1995 Návrhové vzory Literatura E. Gamma, R. Helm, R. Johnson, J. Vlissides The Gang of Four (GoF) Design Patterns Elements of Reusable Object-Oriented Software 1995 Grada 2003: Návrh programů podle vzorů J.

Více

, Brno Připravil: David Procházka Návrhové vzory

, Brno Připravil: David Procházka Návrhové vzory 7. 10. 2010, Brno Připravil: David Procházka Návrhové vzory Základy objektově orientovaného návrhu Design Patterns NV (Design patterns) můžeme s nadsázkou označit za ntu, jak řešit určitý problém nejen

Více

State. Známý jako. Účel. Použitelnost. Stav, Object for States. umožňuje objektu měnit svoje chování v závislosti na stavu objekt mění svou třídu

State. Známý jako. Účel. Použitelnost. Stav, Object for States. umožňuje objektu měnit svoje chování v závislosti na stavu objekt mění svou třídu State State Známý jako Stav, Object for States Účel umožňuje objektu měnit svoje chování v závislosti na stavu objekt mění svou třídu Použitelnost chování objektu závisí na jeho stavu, který se mění za

Více

specifikuje vytvářené objekty pomocí prototypické instance nový objekt vytváří kopírováním prototypu

specifikuje vytvářené objekty pomocí prototypické instance nový objekt vytváří kopírováním prototypu Prototyp Prototyp Účel ( creational kategorie: vytvářecí pro objekty (class specifikuje vytvářené objekty pomocí prototypické instance nový objekt vytváří kopírováním prototypu Příklad obecný systém pro

Více

Návrhové vzory Design Patterns

Návrhové vzory Design Patterns Návrhové vzory Design Patterns doc. Ing. František Huňka, CSc. Ostravská univerzita PřF 1 Definice vzoru Každý vzor popisuje problém, který nastává opakovaně v našem prostředí, a potom popisuje podstatu

Více

PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITY PALACKÉHO KATEDRA INFORMATIKY BAKALÁŘSKÁ PRÁCE. Návrhové vzory. 2013 Dan Doležel

PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITY PALACKÉHO KATEDRA INFORMATIKY BAKALÁŘSKÁ PRÁCE. Návrhové vzory. 2013 Dan Doležel PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITY PALACKÉHO KATEDRA INFORMATIKY BAKALÁŘSKÁ PRÁCE Návrhové vzory 2013 Dan Doležel Anotace Návrhové vzory jsou doporučené postupy pro řešení často se vyskytujících úloh. V

Více

Kód, který se nebude často měnit

Kód, který se nebude často měnit Factory Method Úvod - problém Mějme obchod s auty: public class OrderCars { public Car ordercar(string model) { Car car; Při přidání nového modelu je nutné upravit if(model.equals("mark IV")) car = new

Více

Objektov orientovaný pístup

Objektov orientovaný pístup Objektov orientovaný pístup Softwarové inženýrství (SWI ) je disciplína poítaové vdy (computer science) zabývající se vývojem velkých aplikací. Softwarové inženýrství zahrnuje nejen technické aspekty vytváení

Více

typová konverze typová inference

typová konverze typová inference Seminář Java Programování v Javě II Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Programování v Javě (2) 1/ 36 Téma přednášky Rozhraní: použití, dědičnost Hierarchie

Více

Chain of responsibility

Chain of responsibility Chain of responsibility Chain of responsibility n Známý jako n Účel q český překlad řetěz(ec) odpovědnosti q umožnit zasílání požadavků (zpráv) neznámým příjemcům q příjemci tvoří frontu è předávají si

Více

Dynamicky vázané metody. Pozdní vazba, virtuální metody

Dynamicky vázané metody. Pozdní vazba, virtuální metody Dynamicky vázané metody Pozdní vazba, virtuální metody Motivace... class TBod protected: float x,y; public: int vrat_pocet_bodu() return 1; ; od třídy TBod odvodíme: class TUsecka: public TBod protected:

Více

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

Programování v C++ 2, 8. cvičení Programování v C++ 2, 8. cvičení návrhový vzor iterátor 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 Shrnutí minule procvičené látky

Více

Design Patterns. Tomáš Herceg Microsoft MVP (ASP.NET) www.dotnetcollege.cz

Design Patterns. Tomáš Herceg Microsoft MVP (ASP.NET) www.dotnetcollege.cz Design Patterns Tomáš Herceg Microsoft MVP (ASP.NET) www.dotnetcollege.cz Základní návrhové vzory Kategorie Creational Patterns starají se o vytváření instancí Structural Patterns struktura komponent v

Více

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

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

Unifikovaný modelovací jazyk UML

Unifikovaný modelovací jazyk UML Unifikovaný modelovací jazyk UML Karel Richta katedra počíta tačů FEL ČVUT Praha richta@fel fel.cvut.czcz Motto: Komunikačním m prostředkem informační komunity se postupem času stala angličtina. Chcete-li

Více

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

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

Hiearchical MVC (Model-view-controller) vs. PAC (Presentation-abstraction-control)

Hiearchical MVC (Model-view-controller) vs. PAC (Presentation-abstraction-control) Hiearchical MVC (Model-view-controller) vs. PAC (Presentation-abstraction-control) Problém HMVC úvod MVC v určitých aplikacích nedostačující Příklad: webová stránka s widgety Např. kalendář, hodnocení,

Více

PREPROCESOR POKRAČOVÁNÍ

PREPROCESOR POKRAČOVÁNÍ PREPROCESOR POKRAČOVÁNÍ Chybová hlášení V C# podobně jako v C++ existuje direktiva #error, která způsobí vypsání chybového hlášení překladačem a zastavení překladu. jazyk C# navíc nabízí direktivu #warning,

Více

Návrhový vzor Factory v JAVA API

Návrhový vzor Factory v JAVA API Návrhový vzor Factory v JAVA API Martin Kot Katedra informatiky VŠB - Technická univerzita Ostrava martin.kot.fei@vsb.cz Abstrakt V třídách API jazyka JAVA je použito mnoho návrhových vzorů. Najdeme zde

Více

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí Kolekce obecně Seznamy a iterátory doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Kolekce ::= homogenní sada prvků

Více

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e); TŘÍDY POKRAČOVÁNÍ Události pokračování public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e); class Bod private int x; private int y; public event ZmenaSouradnicEventHandler ZmenaSouradnic;

Více

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

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo Statické proměnné a metody Tomáš Pitner, upravil Marek Šabo Úvod Se statickou metodou jsme se setkali už u úplně prvního programu - Hello, world! public class Demo { public static void main(string[] args)

Více

Infrastruktura UML. Modelování struktury v UML. Superstruktura UML. Notace objektů. Diagramy objektů

Infrastruktura UML. Modelování struktury v UML. Superstruktura UML. Notace objektů. Diagramy objektů Infrastruktura UML v UML Karel Richta listopad 2011 Richta: B101TMM - v UML 2 Superstruktura UML Směr pohledu na systém dle UML Diagramy popisující strukturu diagramy tříd, objektů, kompozitní struktury,

Více

Struktura třídy, operátory, jednoduché algoritmy, junit. Programování II 2. cvičení Alena Buchalcevová

Struktura třídy, operátory, jednoduché algoritmy, junit. Programování II 2. cvičení Alena Buchalcevová Struktura třídy, operátory, jednoduché algoritmy, junit 2. cvičení Alena Buchalcevová Cíle cvičení seznámit se s rozhraním (interface) v Javě seznámit se s testováním při vývoji (makety, JUnit) naučit

Více

Abstract Factory úvod

Abstract Factory úvod Abstract Factory Abstract Factory úvod Problém potřebujeme vytvářet objekty ze skupiny souvisejících tříd skupin je více, chceme je snadno vyměňovat můžeme používat (v jednom kontextu) pouze jednu skupinu

Více

Obsah Znovupou ˇzitelnost N avrhov e vzory Z asady programov an ı Radek Koˇc ı Semin aˇr Java N avrhov e vzory, Z asady... 2/ 46

Obsah Znovupou ˇzitelnost N avrhov e vzory Z asady programov an ı Radek Koˇc ı Semin aˇr Java N avrhov e vzory, Z asady... 2/ 46 Seminář Java Návrhové vzory, Zásady programování Radek Kočí Fakulta informačních technologií VUT Duben 2010 Radek Kočí Seminář Java Návrhové vzory, Zásady... 1/ 46 Obsah Znovupoužitelnost Návrhové vzory

Více

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu A Tutorial Advances in query languages for similarity-based databases George J. Klir Petr Krajča State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu Palacky University,

Více

Abstraktní datové typy: zásobník

Abstraktní datové typy: zásobník Abstraktní datové typy: zásobník doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Abstraktní datové typy omezené rozhraní

Více

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu. Informatika 10. 9. 2013 Jméno a příjmení Rodné číslo 1) Napište algoritmus pro rychlé třídění (quicksort). 2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus

Více

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní) Příklad aplikace Klient/Server s Boss/Worker modelem (informativní) Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze A0B36PR2 Programování 2 Jan Faigl, 2015 A0B36PR2

Více

Zpracoval: houzvjir@fel.cvut.cz

Zpracoval: houzvjir@fel.cvut.cz Zpracoval: houzvjir@fel.cvut.cz 15. Návrhové vzory. Komponentový návrh, volná vazba versus těsná vazba. Oddělení politiky od mechanismu. Doménově specifické jazyky (DSL). (A7B36OMO) Obsah Návrhové vzory...

Více

Motivační příklad reálný svět. výroba (assembly line)

Motivační příklad reálný svět. výroba (assembly line) Template method Motivační příklad reálný svět n Pásová výroba (assembly line) Motivační příklad SW inženýrství n Otevírání souborů n Třídy Application a Document (+potomci) Motivační příklad SW inženýrství

Více

11.5.2012. 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

11.5.2012. 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 Obsah přednášky 9 Základy programování (IZAPR, IZKPR) Přednáška 9 Základy dědičnosti, přístupová práva Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 03 022, Náměstí Čs. legií

Více

Čipové karty Lekařská informatika

Čipové karty Lekařská informatika Čipové karty Lekařská informatika Následující kód je jednoduchou aplikací pro čipové karty, která po překladu vytváří prostor na kartě, nad kterým jsou prováděny jednotlivé operace a do kterého jsou ukládány

Více

Vazba (volná, těsná) - míra znalosti jedné třídy*komponenty o druhé.

Vazba (volná, těsná) - míra znalosti jedné třídy*komponenty o druhé. Návrhové vzory. Komponentový návrh, volná vazba versus těsná vazba. Oddělení politiky od mechanismu. Návrh distribuovaných systémů s použitím webových služeb a servisně orientované architektury (SOA).

Více

Každý datový objekt Pythonu má minimáln ti vlastnosti. Identitu, datový typ a hodnotu.

Každý datový objekt Pythonu má minimáln ti vlastnosti. Identitu, datový typ a hodnotu. Datový objekt [citováno z http://wraith.iglu.cz/python/index.php] Každý datový objekt Pythonu má minimáln ti vlastnosti. Identitu, datový typ a hodnotu. Identita Identita datového objektu je jedinený a

Více

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance

Více

ADT/ADS = abstraktní datové typy / struktury

ADT/ADS = abstraktní datové typy / struktury DT = datové typy obor hodnot, které může proměnná nabývat, s operacemi na tomto oboru určen: obor hodnot + výpočetní operace např. INT = { 2 147 483 648 až +2 147 483 647} + {+,,*,/,} ADT/ADS = abstraktní

Více

PB161 Základy OOP. Tomáš Brukner

PB161 Základy OOP. Tomáš Brukner PB161 Základy OOP Tomáš Brukner Sylabus - Co je to OOP? Jaké jsou základní principy OOP? Jak se projevují v C++? https://cs.wikipedia.org/wiki/strahovská_knihovna SELECT * FROM books WHERE pages < 250

Více

20. Projekt Domácí mediotéka

20. Projekt Domácí mediotéka Projekt Domácí mediotéka strana 211 20. Projekt Domácí mediotéka 20.1. Základní popis, zadání úkolu V projektu Domácí mediotéka (Dome) se jednoduchým způsobem evidují CD a videa. Projekt je velmi jednoduchý

Více

1. Dědičnost a polymorfismus

1. Dědičnost a polymorfismus 1. Dědičnost a polymorfismus Cíl látky Cílem této kapitoly je představit klíčové pojmy dědičnosti a polymorfismu. Předtím však je nutné se seznámit se základními pojmy zobecnění neboli generalizace. Komentář

Více

Abstraktní třída a rozhraní

Abstraktní třída a rozhraní Abstraktní třída a rozhraní Někdy se může stát, zejména při psaní v hierarchické struktuře hodně nadřazených tříd, že tušíme, že bude ve zděděných třídách vhodné použít nějakou metodu. Tuto metodu ještě

Více

Generické programování

Generické programování Generické programování Od C# verze 2.0 = vytváření kódu s obecným datovým typem Příklad generická metoda, zamění dva parametry: static void Swap(ref T p1, ref T p2) T temp; temp = p1; p1 = p2; p2 =

Více

Správa obsahu ízené dokumentace v aplikaci SPM Vema

Správa obsahu ízené dokumentace v aplikaci SPM Vema Správa obsahu ízené dokumentace v aplikaci SPM Vema Jaroslav Šmarda, smarda@vema.cz Vema, a. s., www.vema.cz Abstrakt Spolenost Vema patí mezi pední dodavatele informaních systém v eské a Slovenské republice.

Více

Jazyk C# (seminář 3)

Jazyk C# (seminář 3) Jazyk C# (seminář 3) Pavel Procházka KMI October 8, 2014 Motivace Největší využití v programování okenních aplikací a GUI knihoven. Data reprezentujeme pomocí objektů (tříd), máme tedy ucelený pohled na

Více

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

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance

Více

Replikace. Pro a proti replikaci. Vztah ke škálovatelnosti (1)

Replikace. Pro a proti replikaci. Vztah ke škálovatelnosti (1) Replikace Pednášky z distribuovaných systém Pro a proti replikaci 1. Zvýšení spolehlivosti. 2. Zvýšení výkonnosti. 3. Nutnost zachování škálovatelnosti systému co do potu komponent i geografické rozlehlosti.

Více

Jazyk C# (seminář 6)

Jazyk C# (seminář 6) Jazyk C# (seminář 6) Pavel Procházka KMI 29. října 2014 Delegát motivace Delegáty a události Jak docílit v C# funkcionální práce s metodami v C je to pomocí pointerů na funkce. Proč to v C# nejde pomocí

Více

Iterator & for cyklus

Iterator & for cyklus Iterator & for cyklus for (Object o : foo) funguje pokud je foo pole nebo je foo iterovatelné jako to zařídit? implementovat interface java.lang.iterable Iterable má jednu metodu java.util.iterator iterator()

Více

Tvorba informačních systémů

Tvorba informačních systémů Tvorba informačních systémů Michal Krátký 1, Miroslav Beneš 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2005/2006 c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních

Více

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

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/04.0006 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/04.0006 Lekce 1 Jazyk Java Tento projekt je spolufinancován Evropským sociálním fondem

Více

Úvod do programovacích jazyků (Java)

Úvod do programovacích jazyků (Java) Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích

Více

Facade. Známý jako. Účel. Motivace. Facade, Fasáda

Facade. Známý jako. Účel. Motivace. Facade, Fasáda Facade Facade Známý jako Facade, Fasáda Účel sjednocené high-level rozhraní pro subsystém zjednodušuje použití subsystému zapouzdření skrytí návrhu před uživateli Motivace zjednodušit komunikaci mezi subsystémy

Více

Úvod - problém. Při přidání nového modelu je nutné upravit. Kód, který se nebu de často měnit. n Mějme obchod s auty:

Úvod - problém. Při přidání nového modelu je nutné upravit. Kód, který se nebu de často měnit. n Mějme obchod s auty: Factory Method Úvod - problém n Mějme obchod s auty: public class OrderCars { public Car ordercar(string model) { Car car; Při přidání nového modelu je nutné upravit if(model.equals("mark IV")) { car =

Více

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

PB161 Programování v jazyce C++ Přednáška 7 PB161 Programování v jazyce C++ Přednáška 7 Statické položky tříd Základy OOP Nikola Beneš 6. listopadu 2018 PB161 přednáška 7: static, základy OOP 6. listopadu 2018 1 / 21 Klíčové slovo static Znáte z

Více

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

PB161 Programování v jazyce C++ Přednáška 7 PB161 Programování v jazyce C++ Přednáška 7 Statické položky tříd Základy OOP Nikola Beneš 6. listopadu 2018 PB161 přednáška 7: static, základy OOP 6. listopadu 2018 1 / 21 Klíčové slovo static Znáte z

Více

7 Jazyk UML (Unified Modeling Language)

7 Jazyk UML (Unified Modeling Language) 7 Jazyk UML (Unified Modeling Language) 7.1 Základní charakteristika jazyka Motivace - vznik řady OO metod a metodologií (konec 80. let a první polovina 90.let) podobné notace vyjadřující totéž, komplikující

Více

Teoretické minimum z PJV

Teoretické minimum z PJV Teoretické minimum z PJV Pozn.: následující text popisuje vlastnosti jazyka Java zjednodušeně pouze pro potřeby výuky. Třída Zavádí se v programu deklarací třídy což je část programu od klíčových slov

Více

Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4

Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4 Fronta (Queue) Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 Fronta uplatňuje mechanismus přístupu FIFO first

Více

Dědění, polymorfismus

Dědění, polymorfismus Programování v jazyce C/C++ Ladislav Vagner úprava Pavel Strnad Dědění. Polymorfismus. Dnešní přednáška Statická a dynamická vazba. Vnitřní reprezentace. VMT tabulka virtuálních metod. Časté chyby. Minulá

Více

PŘETĚŽOVÁNÍ OPERÁTORŮ

PŘETĚŽOVÁNÍ OPERÁTORŮ PŘETĚŽOVÁNÍ OPERÁTORŮ Jazyk C# podobně jako jazyk C++ umožňuje přetěžovat operátory, tj. rozšířit definice některých standardních operátorů na uživatelem definované typy (třídy a struktury). Stejně jako

Více

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

PB161 Programování v jazyce C++ Přednáška 10 .. PB161 Programování v jazyce C++ Přednáška 10 Šablony Nikola Beneš 23. listopadu 2015 PB161 přednáška 10: šablony 23. listopadu 2015 1 / 29 K zamyšlení Jaký je rozdíl mezi new int[10] a new int[10]()?

Více

Úvodní studie (pokraov

Úvodní studie (pokraov Úvodní studie (pokraov ování) Model jednání a kontext Model jednání (use case model) slouží pro evidenci aktér a služeb systému. Kontextový diagram slouží pro evidenci aktér a datových tok. Oba modely

Více

Abstraktní datové typy

Abstraktní datové typy Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní datové typy BI-PA2, 2011, Přednáška 10 1/27 Abstraktní datové typy Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky,

Více

Java a XML. 10/26/09 1/7 Java a XML

Java a XML. 10/26/09 1/7 Java a XML Java a XML Java i XML jsou přenositelné V javě existuje podpora pro práci s XML, nejčastější akce prováděné při zpracování XML: načítání XML elementů generování nových elementů nebo úprava starého zápis

Více

Internetový mapový server Karlovarského kraje

Internetový mapový server Karlovarského kraje Internetový mapový server Karlovarského kraje Ing.Jií Heliks Karlovarský kraj Závodní 353/88 Karlovy Vary tel.: 353 502 365 e-mail: jiri.heliks@kr-karlovarsky.cz 1. Úvod Vývojem informa,ních systém. a

Více

1 Píklady popisu typických konstrukcí

1 Píklady popisu typických konstrukcí 1 Píklady popisu typických konstrukcí V tomto odstavci se pokusíme ilustrovat denotaní popis sémantiky ve funkcionálním modelu pro typické píklady jazykových konstrukcí. Popisované konstrukce budou fragmenty

Více

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Datové struktury Daniela Szturcová

Více

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo Datové typy v Javě Tomáš Pitner, upravil Marek Šabo Úvod k datovým typům v Javě Existují dvě základní kategorie datových typů: primitivní a objektové Primitivní v proměnné je uložena přímo hodnota např.

Více

1. Programování proti rozhraní

1. Programování proti rozhraní 1. Programování proti rozhraní Cíl látky Cílem tohoto bloku je seznámení se s jednou z nejdůležitější programátorskou technikou v objektově orientovaném programování. Tou technikou je využívaní rozhraní

Více

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

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod. Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání

Více

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti NetBeans platforma Aplikační programování v Javě (BI-APJ) - 7 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha Evropský sociální fond Praha & EU: Investujeme

Více

Mediator motivace. FontDialog. závislosti mezi jednotlivými ovládacími prvky jsou netriviální

Mediator motivace. FontDialog. závislosti mezi jednotlivými ovládacími prvky jsou netriviální Mediator Mediator motivace FontDialog závislosti mezi jednotlivými ovládacími prvky jsou netriviální Mediator - motivace zná pomůcky, koordinuje interakce místo distribuce chování do jednotlivých pomůcek

Více

NA CO SI DÁT POZOR V JAVASCRIPTU? Angular.cz

NA CO SI DÁT POZOR V JAVASCRIPTU? Angular.cz NA CO SI DÁT POZOR V JAVASCRIPTU? Milan Lempera @milanlempera Víťa Plšek @winsik Angular.cz STRICT MODE volitelně aktivovatelná omezenější varianta JS 'use strict'; a = 11; // strict mode pro celý soubor

Více

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář Vazba (binding) Tabulka symbolů Miroslav Beneš Dušan Kolář vazba = spojení mezi entitou a vlastností okamžik vazby (binding time) při návrhu jazyka při implementaci jazyka během překladu/spojování/zavádění

Více

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

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

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

PB161 Programování v jazyce C++ Přednáška 9 PB161 Programování v jazyce C++ Přednáška 9 Právo friend Přetěžování operátorů Nikola Beneš 16. listopadu 2015 PB161 přednáška 9: friend, přetěžování operátorů 16. listopadu 2015 1 / 30 Reklama PB173 Tematicky

Více

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15 Platforma Java Objektově relační mapování II Petr Krajča Katedra informatiky Univerzita Palackého v Olomouci Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, 2016 1 / 15 Dotazování vyhledání objektu podle

Více

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services 13. Webové služby. K čemu slouží? Popis a vyhledávání služeb. Co je a k čemu slouží orchestrace a choreografie služeb. Technologie pro implementaci služeb 1. Webové služby. K čemu slouží? Definice WS -

Více

Základy objektové orientace I. Únor 2010

Základy objektové orientace I. Únor 2010 Seminář Java Základy objektové orientace I Radek Kočí Fakulta informačních technologií VUT Únor 2010 Radek Kočí Seminář Java Základy OO (1) 1/ 20 Téma přednášky Charakteristika objektově orientovaných

Více

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

Programování v C++ 1, 5. cvičení Programování v C++ 1, 5. cvičení konstruktory, nevirtuální dědění 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 3 Shrnutí minule procvičené

Více

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

Využití OOP v praxi -- Knihovna PHP -- Interval.cz Page 1 of 6 Knihovna PHP Využití OOP v praxi Po dlouhé teorii přichází na řadu praxe. V následujícím textu si vysvětlíme možnosti přístupu k databázi pomocí různých vzorů objektově orientovaného programování

Více

Zápis programu v jazyce C#

Zápis programu v jazyce C# Zápis programu v jazyce C# Základní syntaktická pravidla C# = case sensitive jazyk rozlišuje velikost písmen Tzv. bílé znaky (Enter, mezera, tab ) ve ZK překladač ignoruje každý příkaz končí ; oddělovač

Více

7 Jazyk UML (Unified Modeling Language)

7 Jazyk UML (Unified Modeling Language) 7 Jazyk UML (Unified Modeling Language) 7.1 Základní charakteristika jazyka Motivace - vznik řady OO metod a metodologií (konec 80. let a první polovina 90.let) podobné notace vyjadřující totéž, komplikující

Více

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

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní Základy jazyka C# doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah přednášky Architektura.NET Historie Vlastnosti

Více

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika Vývoj informačních systémů Architektura, návrh Vzory: Doménová logika Zachman Framework Zdroje Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Elements of Reusable Object-Oriented

Více

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

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více