Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Použití návrhových vzorů v prostředí jazyka C#.NET Bc. Michal Jakubec MCSE, MCSD, MCDBA, MCTS 1.

Podobné prezentace


Prezentace na téma: "Použití návrhových vzorů v prostředí jazyka C#.NET Bc. Michal Jakubec MCSE, MCSD, MCDBA, MCTS 1."— Transkript prezentace:

1 Použití návrhových vzorů v prostředí jazyka C#.NET Bc. Michal Jakubec MCSE, MCSD, MCDBA, MCTS 1

2 Agenda  17:00 až 17:10 – Představení WUGu  17:10 až 18:30 – Návrhové vzory GoF  18:30 až 18:45 – Přestávka a občerstvení  18:45 až 20:00 – Návrhové vzory EAA  20:00 – Diskuse: postřehy z praxe 2

3 Návrhové vzory GoF 1. část 3

4 Co je návrhový vzor?  Definice „Obecně použitelné řešení určitého problému v určitém kontextu“  Specifikace  Název vzoru  Popis problému  Popis řešení  Důsledky použití vzoru, příp. alternativy 4

5 Trochu historie…  Christopher Alexander: A Pattern Language, 1977  Kent Beck, Ward Cunningham: Using Pattern Languages for Object-Oriented Programs, OOPSLA, 1987  GoF: Design Patterns, OOPSLA,

6 GoF: Gang of Four Ralph Johnson, Erich Gamma, Richard Helm, John Vlissides  6

7 Klasifikace vzorů GoF 7 Účel  Přístup  Tvorba instancí (Creational) Struktura (Structural) Chování (Behavioral) TřídaFactory MethodAdapter (C)Interpreter Template Method InstanceAbstract Factory Builder Prototype Singleton Adapter (I) Bridge Composite Decorator Façade Flyweight Proxy Chain of Responsibility Command Iterator Mediator Memento Observer State Strategy Visitor

8 Vzájemné vztahy vzorů GoF 8

9 Zadání ukázkové aplikace  Vytvořte aplikaci, která umožní  zadání jednoduchého algebraického výrazu s konstantami a proměnnými v textové formě  zadání hodnot jednotlivých proměnných ve výrazu  vyhodnocení výrazu a zobrazení výsledku 9

10 Vzory GoF v praktické ukázce  Composite (Skladba)  Builder (Stavitel)  Interpreter (Interpret)  Command (Příkaz) …možná naleznete nějaké další :-) 10

11 Podoba uživatelského rozhraní 11 Kalkulátor algebraických výrazů a - (b + c) Výraz: a = 12, b = 3, c = 5 Proměnné: 4 Výsledek: ZavřítVypočítat X Smazat

12 Gramatika platných výrazů Zápis v Backusově-Naurově formě (BNF): ::= | | | "(" ")" ::= '+' | '-' | '*' | '/' ::= | ::= "0" | "1" | "2" | … | "9" ::= | ::= "a" | "b" | "c" |... | "z" Možný výskyt bílých znaků (mezery, tabulátory, apod.) v definici pro přehlednost neuvádím. 12

13 Příklady vyhovující gramatice  36  a + b  12 + c  5 + a * 9 + b – c  5 + (a * 9) + b – c  (abc + xyz) / opq  (24 + (b * 3)) / (a – 2) 13

14 Zachycení hodnot proměnných  Kolekce typu klíč-hodnota 14 Název proměnné (klíč kolekce)Hodnota proměnné a26 b38 ……

15 (24 + (b * 3)) / (a – 2) Zachycení výrazu v paměti 15 / * b3 2a Kořen Binární strom Konstanta Binární výraz Proměnná

16 Zachycení výrazu – Composite 16

17 Praktická ukázka (1/5)  Implementace zachycení výrazu  rozhraní IExpression  třída ConstantExpression  třída VariableExpression  třída BinaryExpression  Doplnění překrytí metody ToString()  umožní zobrazení textové podoby výrazu – užitečné pro ladění 17

18 Tvorba stromu výrazu – Builder

19 Praktická ukázka (2/5)  Implementace tvorby stromu výrazu  rozhraní IExpressionBuilder  třída ExpressionParser  třída InfixExpressionBuilder 19

20 Výpočet výrazu – Interpreter 20

21 Praktická ukázka (3/5)  Implementace výpočtu výrazu  rozhraní IContext  metoda IExpression.Evaluate(IContext)  třída DictionaryContext 21

22 Tvorba kontextu – Builder 22

23 Praktická ukázka (4/5)  Implementace tvorby kontextu  rozhraní IContextBuilder  třída ContextParser  třída DictionaryContextBuilder 23

24 Napojení na UI - Command 24

25 Praktická ukázka (5/5)  Implementace napojení na UI  rozhraní ICommand  třída CalculationCommand  deklarace atributu typu ICommand  vytvoření instance CalculationCommand 25

26 Shrnutí  Implementace vzoru Composite (Skladba)  zachycení struktury algebraického výrazu  Implementace vzoru Builder (Stavitel)  tvorba stromu výrazu z jeho textové podoby  tvorba kontextu z jeho textové podoby  Implementace vzoru Interpreter (Interpret)  výpočet hodnoty výrazu dle kontextu  Implementace vzoru Command (Příkaz)  napojení na UI  … nějaké další vzory?  26

27 Rok 2005: 10. výročí vzorů GoF 27 Zdroj:

28 Přestávka Občerstvení, názory, připomínky, otázky, odpovědi… 28

29 Návrhové vzory EAA 2. část 29

30 O vzorech EAA  hlavním autorem Martin Fowler   převážně architektonické a návrhové vzory „na míru“ podnikovým aplikacím a jejim potřebám 30

31 Přehled vzorů EAA  Domain Logic Patterns  Transaction Script (110), Domain Model (116), Table Module (125), Service Layer (133). Transaction ScriptDomain Model Table ModuleService Layer  Data Source Architectural Patterns  Table Data Gateway (144), Row Data Gateway (152), Active Record (160), Data Mapper (165). Table Data GatewayRow Data GatewayActive RecordData Mapper  Object-Relational Behavioral Patterns:  Unit of Work (184), Identity Map (195), Lazy Load (200) Unit of WorkIdentity MapLazy Load  Object-Relational Structural Patterns:  Identity Field (216), Foreign Key Mapping (236), Association Table Mapping (248), Dependent Mapping (262), Embedded Value (268), Serialized LOB (272), Single Table Inheritance (278), Class Table Inheritance (285), Concrete Table Inheritance (293), Inheritance Mappers (302). Identity FieldForeign Key Mapping Association Table MappingDependent MappingEmbedded ValueSerialized LOBSingle Table InheritanceClass Table InheritanceConcrete Table InheritanceInheritance Mappers  Object-Relational Metadata Mapping Patterns:  Metadata Mapping (306), Query Object (316), Repository (322). Metadata MappingQuery Object Repository  Web Presentation Patterns:  Model View Controller (330), Page Controller (333), Front Controller (344), Template View (350), Transform View (361), Two-Step View (365), Application Controller (379). Model View ControllerPage ControllerFront ControllerTemplate ViewTransform ViewTwo-Step ViewApplication Controller  Distribution Patterns:  Remote Facade (388), Data Transfer Object (401) Remote FacadeData Transfer Object  Offline Concurrency Patterns:  Optimistic Offline Lock (416), Pessimistic Offline Lock (426), Coarse Grained Lock (438), Implicit Lock (449). Optimistic Offline LockPessimistic Offline LockCoarse Grained LockImplicit Lock  Session State Patterns:  Client Session State (456), Server Session State (458), Database Session State (462). Client Session StateServer Session StateDatabase Session State  Base Patterns:  Gateway (466), Mapper (473), Layer Supertype (475), Separated Interface (476), Registry (480), Value Object (486), Money (488), Special Case (496), Plugin (499), Service Stub (504), Record Set (508) GatewayMapperLayer SupertypeSeparated InterfaceRegistry Value ObjectMoneySpecial CasePluginService StubRecord Set 31 Zdroj:

32 Rozšíření ukázkové aplikace  Máme aplikaci, která umožňuje  zadání jednoduchého algebraického výrazu s konstantami a proměnnými v textové formě  zadání hodnot jednotlivých proměnných ve výrazu  vyhodnocení výrazu a zobrazení výsledku  Rozšiřme aplikaci tak, aby umožňovala  uložení zadaného algebraického výrazu a hodnot proměnných pro další spuštění aplikace  snadnou změnu konkrétní implementace funkčnosti aplikace z jednoho místa v kódu 32

33 Vzory EAA v praktické ukázce  Repository – hlavní přístupový bod k mechanismu persistence výrazů a hodnot proměnných  Dependency Injection – výměna implementace mechanismu persistence  Domain Model – třídy reprezentující prvky výrazu a hodnoty proměnných  Adapter (GoF) – doplňková funkčnost k mechanismu persistence výrazů 33

34 Dependency Injection  Tři základní metody „kontejnerové“ injekce  pomocí konstruktorů  pomocí setterů  pomocí „injekčních“ rozhraní  Alternativa pomocí EAA vzoru Registry  statické rozhraní – „pevné“ metody vrací produkt  dynamické rozhraní – produkt získáván z kolekce či pomocí reflexe 34

35 Praktická ukázka (1/1)  Uložení zadaného algebraického výrazu a hodnot proměnných pro další spuštění aplikace  třída Repository  rozhraní IRepositoryProvider  třída SimpleRepositoryProvider  Změna konkrétní implementace funkčnosti z jednoho místa v kódu  třída ServiceLocator 35

36 Zdroje   36

37 Závěr Diskuse: názory, připomínky, otázky, odpovědi 37


Stáhnout ppt "Použití návrhových vzorů v prostředí jazyka C#.NET Bc. Michal Jakubec MCSE, MCSD, MCDBA, MCTS 1."

Podobné prezentace


Reklamy Google