SWI041: (Design Patterns) JAK se to obvykle dlá
|
|
- Šimon Špringl
- před 8 lety
- Počet zobrazení:
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
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)
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
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í)
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í)
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ý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
ČÁ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
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
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
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ě
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
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 -
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.
, 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
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
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
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
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
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
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í
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
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
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:
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
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
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ů
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
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ů
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í,
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,
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
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ů
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;
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)
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,
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
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
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
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,
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í
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
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
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...
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í
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í
Č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
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).
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
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
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í
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
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ý
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ář
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ě
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 =
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.
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
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ů
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
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.
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í
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()
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
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
Ú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
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
Ú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 =
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
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
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í
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
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
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á
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
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]()?
Ú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
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,
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
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
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
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á
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ř.
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í
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í
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
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
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
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í
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ů
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
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
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 -
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
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é
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í
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č
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í
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ý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
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ů