Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
mgr-szz:in-pos:6-pos [2019/06/10 09:23] lachmanfrantisek návrhové vzory |
mgr-szz:in-pos:6-pos [2020/04/12 16:56] |
||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
- | ====== IN-POS 6. Objektové metody návrhu systémů ====== | ||
- | ===== Zadání ===== | ||
- | |||
- | * Návrhové vzory. | ||
- | * Softwarové architektury. | ||
- | * Rozhraní komponent, signatury a omezující podmínky služeb, OCL. | ||
- | * Komponentové systémy a modely, kvalitativní aspekty služeb (QoS). | ||
- | * Objektové metody vývoje softwaru, RUP. | ||
- | |||
- | * PA103 | ||
- | |||
- | ===== Vypracování ===== | ||
- | |||
- | ==== Návrhové vzory ==== | ||
- | |||
- | |||
- | <box 90% red|vzor (pattern)> | ||
- | Obecné řešení pro opakující se problém, tak aby jej bylo možné aplikovat v různém kontextu. | ||
- | </box> | ||
- | |||
- | |||
- | === Analytické vzory === | ||
- | |||
- | Existují i vzory využitelné při fázi analýzy. Seznam kategorií od M. Fowlera: | ||
- | |||
- | * **Accountability** | ||
- | * Party | ||
- | * Organization Hierarchies | ||
- | * Organization Structure | ||
- | * Accountability | ||
- | * Organization Structure | ||
- | * Accountability Knowledge Level | ||
- | * Party Type Generalization | ||
- | * Hierarchic Accountability | ||
- | * Operating Scopes | ||
- | * Post | ||
- | * **Observations and Measurements** | ||
- | * Quantity | ||
- | * Conversion Ratio | ||
- | * Compound Units | ||
- | * Measurement | ||
- | * Observation | ||
- | * Subtyping Observation Concepts | ||
- | * Protocol | ||
- | * **Observations for Corporate Finance** | ||
- | * Enterprise Segment | ||
- | * Measurement Protocol | ||
- | * Range | ||
- | * Phenomenon with Range | ||
- | * **Referring to Objects** | ||
- | * Name | ||
- | * Identification Scheme | ||
- | * Object Merge | ||
- | * Object Equivalence | ||
- | * **Inventory and Accounting** | ||
- | * **Planning** | ||
- | * **Trading** | ||
- | * **Derivative Contracts** | ||
- | * **Trading Packages** | ||
- | |||
- | |||
- | === Návrhové vzory dle GoF === | ||
- | |||
- | Podle knihy "Design Patterns: Elements of Reusable Object Oriented Software (1995)" (Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides). | ||
- | |||
- | * Návrhové vzory | ||
- | * Popis šablony, kterou lze použít pro řešení problému v různých situacích. | ||
- | * Popisují úspěšné návrhy a softwarovou architekturu. | ||
- | * Popisují statickou i dynamickou strukturu a komunikaci mezi objekty. | ||
- | * Vzor je pouze "meta-model", je potřeba jej instanciovat. | ||
- | |||
- | * Jednotlivé vzory jsou pěkně vysvětlené zde: https://refactoring.guru/design-patterns/ | ||
- | |||
- | 3 kategorie: | ||
- | |||
- | * **Creational patterns** | ||
- | * inicializace a konfigurace objektů | ||
- | * lze skrýt specifika vytváření objektu | ||
- | * lze oddálit určení přesné třídy při instanciaci | ||
- | |||
- | <box 90% blue|Abstract Factory> | ||
- | Vytváření skupiny souvisejících objektů. | ||
- | </box> | ||
- | |||
- | <box 90% blue|Builder> | ||
- | Postupné vytváření komplexních objektů. | ||
- | </box> | ||
- | |||
- | <box 90% blue|Factory Method> | ||
- | Virtuální konstruktor. | ||
- | </box> | ||
- | |||
- | <box 90% blue|Prototype> | ||
- | Instanciace objektů přes klonování "prototypu". | ||
- | </box> | ||
- | |||
- | <box 90% blue|Singleton> | ||
- | Tvorba maximálně jedné instance pro celý systém. | ||
- | </box> | ||
- | |||
- | * **Structural patterns** | ||
- | * řeší dělení rozhraní a implementace | ||
- | * kompozice objektů | ||
- | |||
- | <box 90% blue|Adapter> | ||
- | Překlad rozhraní. | ||
- | </box> | ||
- | |||
- | <box 90% blue|Bridge> | ||
- | Abstrakce pro spojení více implementací. | ||
- | </box> | ||
- | |||
- | |||
- | <box 90% blue|Composite> | ||
- | Tvorba rekurzivní hierarchie objektů. | ||
- | </box> | ||
- | |||
- | <box 90% blue|Decorator> | ||
- | Transparentní rozšíření objektů. | ||
- | </box> | ||
- | |||
- | <box 90% blue|Facade> | ||
- | Zjednodušení a agregace rozhraní komplexního subsystému. | ||
- | </box> | ||
- | |||
- | <box 90% blue|Flaywight> | ||
- | Sdílení mnoha objektů. | ||
- | </box> | ||
- | |||
- | <box 90% blue|Proxy> | ||
- | Aproximace objektů. | ||
- | </box> | ||
- | |||
- | * **Behavioral patterns** | ||
- | * řeší dynamické interakce mezi třídami/objekty | ||
- | * dělba zodpovědnosti | ||
- | |||
- | |||
- | <box 90% blue|Chain of Responsibility> | ||
- | Delegování žádosti na zodpovědného poskytovatele. | ||
- | </box> | ||
- | |||
- | <box 90% blue|Command> | ||
- | Realizace žádostí/příkazů. | ||
- | </box> | ||
- | |||
- | <box 90% blue|Interpreter> | ||
- | Interpretr jazyka pro malé gramatiky. | ||
- | </box> | ||
- | |||
- | <box 90% blue|Mediator> | ||
- | Koordinace komunikace mezi zúčastněnými. | ||
- | </box> | ||
- | |||
- | <box 90% blue|Memento> | ||
- | Uchování a obnovení stavu. | ||
- | </box> | ||
- | |||
- | <box 90% blue|Observer> | ||
- | Update několika objektů při změně "sledovaného". | ||
- | </box> | ||
- | |||
- | <box 90% blue|State> | ||
- | Objekty, jejichž chování závisí na stavu. | ||
- | </box> | ||
- | |||
- | <box 90% blue|Strategy> | ||
- | Abstrakce pro volbu jednoho z více algoritmů. | ||
- | </box> | ||
- | |||
- | <box 90% blue|Template Method> | ||
- | Algoritmus s několika kroky implementovanými v podtřídě. | ||
- | </box> | ||
- | |||
- | <box 90% blue|Visitor> | ||
- | Operace aplikované na různorodé struktury objektů. | ||
- | </box> | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | ==== Softwarové architektury ==== | ||
- | |||
- | ==== Rozhraní komponent, signatury a omezující podmínky služeb, OCL ==== | ||
- | |||
- | ==== Komponentové systémy a modely, kvalitativní aspekty služeb (QoS) ==== | ||
- | |||
- | ==== Objektové metody vývoje softwaru, RUP ==== | ||
- | |||
- | ===== Zdroje ===== | ||
- | |||
- | * slidy pa103 (jaro 2019) |