Návrhové vzory OMO, LS 2014/2015
|
|
- Petr Černý
- před 8 lety
- Počet zobrazení:
Transkript
1 Návrhové vzory OMO, LS 2014/2015
2 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
3 Koncepty OOP Objekty Abstrakce Zapouzdření Skládání Delegování Dědičnost Polymorfismus
4 Objekty Jedná se o prvky modelované reality, které v sobě seskupují jak funkčnost (metody) tak data (proměnné). Objekty si pamatují svůj stav v podobě proměnných a poskytují rozhraní pro komunikaci s nimi. Většina jazyků rozlišuje třídy a instance tříd.
5 Abstrakce Pomocí abstrakce programátor může abstrahovat od některých detailů jednotlivých objektů (abstraktní třídy, abstraktní metody,...). Každý objekt pracuje navenek jako černá skříňka.
6 Zapouzdření Každý objekt navenek zpřístupňuje rozhraní, pomocí kterého se s objektem pracuje. Je vhodné, aby každá metoda tohoto rozhraní, po jejím provedení zanechala objekt v konzistentním stavu.
7 Skládání Objekt může obsahovat jiné objekty. Jedná se o vztah typu has-a.
8 Delegování Objekt může využívat služeb jiných objektů tak, že je požádá o provedení operace.
9 Dědičnost Objekty jsou obvykle organizovány stromovým způsobem, kdy objekty nějakého druhu mohou dědit z jiného druhu objektů, čímž přebírají jejich schopnosti. K těmto schopnostem mohou zděděné objekty přidávat svá vlastní rozšíření.
10 Dědičnost Vztah mezi třídami: členské proměnné a metody definované v předku mohou být použity i potomkem, potomek může přidat nové členské proměnné a metody, potomek může změnit definice metod předka. Vždy musí platit vztah is-a. Jedná se o specializaci nadtypu.
11 Dědičnost Při dědění by měl být vždy dodržen substituční princip LSP: Let q(x) be a property provable about objects x of type T. Then q(y) should be provable for objects y of type S where S is a subtype of T.
12 Polymorfismus Situace, kde různé objekty: rozumí stejné zprávě (mají metodu se stejnou signaturou), ale na zprávu reagují různě (vyvoláním jiného kódu). Aby měl polymorfismus praktický význam, musí mít provedený kód stejný význam (v kontextu daného objektu).
13 Duplikace kódu a dat Příklad: různých způsobů validace amerického Social Security Number v US vládních systémech Příčiny? Předejití?
14 Návrhové vzory místní architektura poskytují řešení opakujících se problémů reálné použití vzoru se může v praxi lišit Bible návrhových vzorů: Design Patterns: Elements of Reusable Object-Oriented Software
15 Návrhové vzory Vzory pro tvorbu instancí Strukturální vzory Vzory chování
16 Vzory pro tvorbu instancí Factory Method Abstract Factory Prototype Builder Singleton...
17 Strukturální vzory Adapter Bridge Composite Decorator Facade Flyweight Proxy...
18 Interpreter Template Method Chain of Responsibility Command Iterator Mediator Observer State Strategy Visitor... Vzory chování
19 Singleton Aneb: Jediná instance v systému Převzato z [2]
20 Singleton - Vlastnosti Použije se v případě, že chceme zajistit od dané třídy existenci pouze jediné instance. V minulosti byl používán velmi často. Může způsobit problémy při rozšiřování programu (produktu).
21 Singleton Příklad public class SingletonDemo { private static volatile SingletonDemo instance = null; private SingletonDemo() { } } public static SingletonDemo getinstance() { if (instance == null) { synchronized (SingletonDemo.class){ if (instance == null) { instance = new SingletonDemo (); } } } return instance; }
22 Singleton - Příklad public class SingletonDemo { private static SingletonDemo instance = null; private SingletonDemo() { } } public static synchronized SingletonDemo getinstance() { if (instance == null) { instance = new SingletonDemo (); } return instance; }
23 Singleton - Příklad public enum Singleton { INSTANCE; public void execute (String arg) { // perform operation here } }
24 Factory Method Aneb: Střihni mi to na míru Převzato z [2]
25 Factory Method - Vlastnosti Definuje rozhraní pro vytváření nových instancí. Podtřída rozhroduje o tom, která třída bude instanciována. Tovární metoda tedy přenechává vytváření instancí podtřídám.
26 Factory Method - Příklad Převzato z [1]
27 Adapter Aneb: Je to trochu jinak Převzato z [2]
28 Adapter - Vlastnosti Slouží ke konverzi rozhraní jedné třídy na jinou. K použití je vhodný v případě, že rozhraní tříd se liší jen velice málo, například názvy metod.
29 Adapter Příklad 1 Převzato z [1]
30 Adapter Příklad 2 Převzato z [1]
31 Adapter - Příklad 3 Převzato z [1]
32 Proxy Aneb: Pod ruce mi neuvidíš Převzato z [2]
33 Proxy - Vlastnosti Zastupuje cílový objekt, aniž by to uživatel poznal. Pomocí proxy lze například kontrolovat volání a parametry metod. Používá se například v RMI, Corba apod. pro zastoupení objektů, které existují fyzicky jinde. Lze využít například k logování nebo řízení přístupu.
34 Proxy - příklad Převzato z [1]
35 Facade Převzato z [2]
36 Facade Fasáda je třída, která poskytuje jednotné rozhraní k celému souboru tříd. Velice užitečné řešení v případě, že rozhraní jednotlivých tříd jsou velice heterogenní a chceme je sjednotit.
37 Facade - Příklad Každý den ráno, když vyjíždím na kolo provádím na svém telefonu následující akce: vypnout WiFi zapnout mobilní data povolit GPS zapnout Bluetooth zapnout aplikaci na měření, např. Runkeeper
38 Facade - Příklad Poté, co přijedu z kola provádím následující akce: nasdílím naměřenou vzdálenost na Facebook vypnu Runkeeper vypnu GPS vypnu Bluetooth vypnu mobilní data zapnu WiFi
39 Facade - Příklad Jak bude vypadat třída, která mi usnadní život? Bude to právě fasáda, např. CyclingFacade s operacemi startcycling a stopcycling.
40 Iterator Převzato z [2]
41 Iterator Poskytuje rozhraní pro sekvenční procházení dané struktury. Uživatel iterátoru nemusí znát skutečnou reprezentaci procházené struktury. Příkladem může být foreach (C#, Java) nebo iterátory v STL v C++.
42 State Pattern Motivace: Chceme aby se objekt choval různě v závislosti na jeho vnitřním stavu Zdroj:
43 State Pattern Kdy mám State pattern použít? Chování objektu závisí na jeho vnitřním stavu Metody obsahují velké množství podmínek závislých na aktuálním vnitřním stavu. State pattern přesune jednotlivé větve do samostatných objektů.
44 State Pattern Převzato z [2]
45 State Pattern Výhody Přenese veškeré chování v daném stavu do jednoho objektu (Stav = Objekt) Zpřehlední kód Zjednodušší rozšiřování kódu o další stavy Nevýhody Vyšší počet objektů (tříd)
46 Strategy Pattern Motivace: Mějme skupinu algoritmů, každý je zapouzdřen, možnost libovolné jejich výměny. Strategy nám umožní změnu algoritmu bez ohledu na clienta.
47 Strategy Pattern Kdy mám Strategy pattern použít? Mnoho podobných tříd se liší pouze chováním Potřebuji několik variant k řešení stejného problému Algoritmus používá data o kterých client nemusí vědět Třída obsahuje velké množství ifů
48 Strategy Pattern Převzato z [2]
49 Strategy Pattern Výhody Představuje alternativu k dědění abychom získali několik různých chování Eliminuje velké množství ifů Poskytuje snadnou změnu implementace daného problému Nevýhody Vyšší počet objektů (tříd) Všechny algoritmy (strategie) musí dodržovat stejné rozhraní!
50 Literatura [1] [2]
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í)
ČÁ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
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á
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ý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
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.
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
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
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ář
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
IB111 Programování a algoritmizace. Objektově orientované programování (OOP)
IB111 Programování a algoritmizace Objektově orientované programování (OOP) OP a OOP Objekt Kombinuje data a funkce a poskytuje určité rozhraní. OP = objektové programování Vše musí být objekty Např. Smalltalk,
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
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 =
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).
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
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
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
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...
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
Třídy. Instance. Pokud tento program spustíme, vypíše následující. car1 má barvu Red. car2 má barvu Red. car1 má barvu Blue.
23. Třídy, generické třídy, instance, skládání, statické metody a proměnné. Zapouzdření, konstruktory, konzistence objektu, zpřístupnění vnitřní implementace, modifikátory public a private. Polymorfismus,
Delphi - objektově orientované
Kapitola 6 Delphi - objektově orientované programování Objektově orientované programování (zkracováno na OOP, z anglického Object oriented programming) je metodika vývoje softwaru, založená na těchto myšlenkách,
Sada 1 - Základy programování
S třední škola stavební Jihlava Sada 1 - Základy programování 01. Základní pojmy a principy programování Digitální učební materiál projektu: SŠS Jihlava šablony registrační číslo projektu:cz.1.09/1.5.00/34.0284
Vyřešené teoretické otázky do OOP ( )
Vyřešené teoretické otázky do OOP (16. 1. 2013) 1) Vyjmenujte v historickém pořadí hlavní programovací paradigmata a stručně charakterizujte každé paradigma. a) Naivní chaotičnost, špatná syntaxe a sémantika
6 Objektově-orientovaný vývoj programového vybavení
6 Objektově-orientovaný vývoj programového vybavení 6.1 Co značí objektově-orientovaný - organizace SW jako kolekce diskrétních objektů, které zahrnují jak data tak chování objekt: OMG: Objekt je věc (thing).
Objekt. základní prvek v OOP. má vlastnosti. má metody. vznikne vytvoření nové instance definován pomocí třídy
3. ročník Objekt základní prvek v OOP má vlastnosti charakterizují objekt (barva, počet osob) má metody definují to, co objekt umí (vypni motor, připoj se) vznikne vytvoření nové instance definován pomocí
Objektové programování
Objektové programování - přináší nové možnosti a styl programování - vytváří nový datový typ, který umí vše co standardní datové typy + to co ho naučíme - překladač se k tomuto typu chová stejně jako k
Výchozí a statické metody rozhraní. Tomáš Pitner, upravil Marek Šabo
Výchozí a statické metody rozhraní Tomáš Pitner, upravil Marek Šabo Výchozí a statické metody rozhraní Java 8 přidává ohledně metod v rozhraní nové možnosti. Neuvidíme je tedy ve starém kódu a mnozí vývojáři
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
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
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
, 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ýčtový typ strana 67
Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce
Dědičnost (inheritance)
Dědičnost (inheritance) Úvod Umožňuje objektům převzít (zdědit) členy jiných objektů a pouze je rozšířit o Auto: lze odvodit Vztah je osobní auto, cisterna jsou auta Základní pojmy Bázová třída (rodič)
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)
RMI Remote Method Invocation
2. cvičení RMI Remote Method Invocation 2007/09 ver.2.0 1 RMI co to je? vyvolání metody z jiné JVM lokalizace vzdáleného objektu komunikace se vzdálenými objekty přenos objektu v bytecode typicky klient
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
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ů
Programování II. Abstraktní třída Vícenásobná dědičnost 2018/19
Programování II Abstraktní třída Vícenásobná dědičnost 2018/19 Osnova přednášky Polymorfismus - důsledky. Abstraktní třída. Vícenásobná dědičnost. Polymorfismus - důsledky Polymorfismus Polymorfismus je
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
3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda
1. Lze vždy z tzv. instanční třídy vytvořit objekt? 2. Co je nejčastější příčinou vzniku chyb? A. Specifikace B. Testování C. Návrh D. Analýza E. Kódování 3. Je defenzivní programování technikou skrývání
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
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:
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
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
Principy OOP při tvorbě aplikací v JEE. Michal Čejchan
Principy OOP při tvorbě aplikací v JEE Michal Čejchan Témata přednášky Principy OOP - připomenutí Úvod - co nás vede k používání OOP Reálný svět - jak (ne)používáme OOP Nedostatky na úrovni programovacích
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
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)
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
Ú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 =
Dědičnost. seskupování tříd do hierarchie. potomek získá všechny vlastnosti a metody. provádí se pomocí dvojtečky za názvem třídy.
3. ročník Dědičnost seskupování tříd do hierarchie nadtyp-podtyp potomek získá všechny vlastnosti a metody kromě označených jako private provádí se pomocí dvojtečky za názvem třídy Polymorfismus všude
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;
Programování II. Dědičnost změna chování 2018/19
Programování II Dědičnost změna chování 2018/19 Osnova přednášky Rozšíření chování. Změna chování. Příklad. Rozšíření chování Když rozšiřujeme chování Můžeme bezpečně použít to, co už máme. Nehrozí žádný
Programování II. Modularita 2017/18
Programování II Modularita 2017/18 Modul? Osnova přednášky Vývoj programování Modularita Příklad Vývoj programování Paradigmata programování Jak a proč se jazyky vyvíjejí? V čem se OOP liší od předchozí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
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í
Pokročilé programování v jazyce C pro chemiky (C3220) Pokročilá témata jazyka C++
Pokročilé programování v jazyce C pro chemiky (C3220) Pokročilá témata jazyka C++ Prostory jmen U programů mohou někdy nastat kolize mezi jmény (tříd, funkcí, globálních proměnných atd.) pokud v různých
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
Třídy, polymorfismus. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické
Třídy, polymorfismus A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické Polymorfizmus ~ vícetvarost Polymorfizmus základní vlastnost objektového přístupu základní princip polymorfismu:
Programování II. Úvod do dědičnosti 2018/19
Programování II Úvod do dědičnosti 2018/19 Osnova přednášky Co řeší dědičnost? Příklad. Dědičnost základní princip. Co řeší dědičnost? Co se řeší? Znovu-použitelnost Nechceme znovu opisovat (kopírovat)
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í
Programování v C++ 3, 3. cvičení
Programování v C++ 3, 3. cvičení úvod do objektově orientovaného programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Dokončení spojového
Parametrizované třídy Generics generické třídy. JDK zavádí mimo jiné tzv. parametrizované třídy - generics
1 Parametrizované třídy Generics generické třídy JDK zavádí mimo jiné tzv. parametrizované třídy - generics Úvod 2 podobnost se šablonami (templates) z C++ nejčastěji použité v oblasti knihoven kontejnerového
Programování II. Polymorfismus
Programování II Polymorfismus Osnova přednášky Vztah přetížení, překrytí a protected přístupu. Co je polymorfismus? Příklad. Přetížení, překrytí, protected Přetížení x překrytí Přetížením řešíme doplnění
Softwarové komponenty a Internet
Softwarové komponenty a Internet Doc. Dr. Ing. Miroslav Beneš Katedra informatiky FEI VŠB-TU Ostrava Miroslav.Benes@vsb.cz Obsah přednášky Motivace Vývoj přístupů k tvorbě programů Definice komponenty
Objekty, třídy, vazby 2006 UOMO 30
Objekty, třídy, vazby 2006 UOMO 30 Osnova Vymezení pojmu objekt Objekt a základní objektové koncepty Třídy, třída vs. objekt Vztahy mezi objekty, vazby mezi třídami Polymorfismus 2006 UOMO 31 Vymezení
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í
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ý
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í
Dalším příkladem může být například výstup dat na různá zařízení, souborů, grafických rozhraní, sítě atd.
1. Zapouzdření Cíl látky Tento blok nejdříve přiblíží zásadu zapouzdření a odpoutání kódu a po té na relacích, jako jsou asociace, agregace a kompozice, vysvětlí jak lze objektový zdrojový kód zapouzdřovat
Objekty v PHP 5.x. This is an object-oriented system. If we change anything, the users object.
Objekty v PHP 5.x This is an object-oriented system. If we change anything, the users object. Objektové PHP Objekty se poprvé objevili v PHP ve verzi 4. Nepříliš zdařilý pokus. Programátoři získali nedůvěru
Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39
Programování v C# Hodnotové datové typy, řídící struktury Petr Vaněček 1 / 39 Obsah přednášky Referenční datové typy datové položky metody přístupové metody accessory, indexery Rozhraní Pole 2 / 39 Třídy
Arlow, J., Neustat, I.: UML2 a unifikovaný proces vývoje aplikací. Computer Press, Praha 2007.
Otázka 05 - Y36SIN Zadání Návrh - návrhové třídy a jejich transformace z analytických tříd, použití návrhových vzorů, návrh rozhraní, komponenty a nasazení, odpovídající diagramy v UML. (Y36SIN) Jen na
24. listopadu 2013, Brno Připravil: David Procházka
24. listopadu 2013, Brno Připravil: David Procházka Dědičnost Základy objektového návrhu Časná a pozdní vazba Strana 2 / 22 Obsah přednášky 1 Časná a pozdní vazba 2 Rozhraní pro dědičnost 3 Konstruktory
Metodika. Architecture First. Rudolf Pecinovský rudolf@pecinovsky.cz
Copyright Rudolf Pecinovský, Soubor: 2014_Comm_PrW_Architecture First Methodology.doc, verze 1.00.2413, uloženo po 9.6.2014 14:43 1 z 39 Metodika Architecture First Rudolf Pecinovský rudolf@pecinovsky.cz
1 Nejkratší cesta grafem
Bakalářské zkoušky (příklady otázek) podzim 2014 1 Nejkratší cesta grafem 1. Uvažujte graf s kladným ohodnocením hran (délka). Definujte formálně problém hledání nejkratší cesty mezi dvěma uzly tohoto
Úvod do programování - Java. Cvičení č.4
Úvod do programování - Java Cvičení č.4 1 Sekvence (posloupnost) Sekvence je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení
Programování II. Návrh programu II
Programování II Návrh programu II Osnova přednášky Dědičnost shrnutí. Návrh programu s využitím dědičnosti Dědičnost shrnutí Klíčové otázky CO je dědičnost? PROČ použít dědičnost? KDY použít dědičnost?
Objektově orientované programování v PHP 5. Martin Klíma
Objektově orientované programování v PHP 5 Martin Klíma OOP & PHP 5 V PHP 5 konečně značné rozšíření OOP Blíží se to moderním programovacím jazykům jako Java nebo C# Výhody OOP Zapouzdření (nové modifikátory
11 Diagram tříd, asociace, dědičnost, abstraktní třídy
11 Diagram tříd, asociace, dědičnost, abstraktní třídy Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost diagramům tříd, asociaci,
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
IoC/DI. Tomáš Herceg Microsoft MVP (ASP.NET) www.dotnetcollege.cz
IoC/DI Tomáš Herceg Microsoft MVP (ASP.NET) www.dotnetcollege.cz SOLID 5 pravidel pro testovatelný kód Na netestovatelném kódu se IoC/DI používá špatně SOLID Single Responsibility Principle Každá třída
Principy objektově orientovaného programování
Principy objektově orientovaného programování Třídy a objekty 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 C E T
Programování v C++ 2, 4. cvičení
Programování v C++ 2, 4. cvičení statické atributy a metody, konstruktory 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Přístupová práva
Semin aˇr Java X Radek Koˇc ı Fakulta informaˇcn ıch technologi ı VUT Duben 2011 Radek Koˇc ı Semin aˇr Java N avrhov e vzory, Z asady...
Seminář Java X Radek Kočí Fakulta informačních technologií VUT Duben 2011 Radek Kočí Seminář Java Návrhové vzory, Zásady... 1/ 37 Obsah Znovupoužitelnost Návrhové vzory Zásady programování Radek Kočí Seminář
Objektově orientované programování v jazyce Python
Objektově orientované programování v jazyce Python Základní pojmy objektově orientovaného programování Objekt vychází z reálného světa. Má dva charakteristické rysy. Všechny objekty mají stav Všechny objekty
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ě
Viditelnost (práva přístupu) Tomáš Pitner, upravil Marek Šabo
Viditelnost (práva přístupu) Tomáš Pitner, upravil Marek Šabo Viditelnost Přístup ke třídám i jejim prvkům lze (podobně jako např. v C++) regulovat. Přístupem se rozumí jakékoli použití dané třídy, prvku
Usage of modular scissors in the implementation of FEM
Usage of modular scissors in the implementation of FEM Dalibor Frydrych PANM 2010 6.-11. června 2010 Dolní Maxov 8. června 2010 1 Úvod Zúžený pohled na OOP 2 Základy objektově orientovaného přístupu Objektové
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í
MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ
MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ 1) PROGRAM, ZDROJOVÝ KÓD, PŘEKLAD PROGRAMU 3 2) HISTORIE TVORBY PROGRAMŮ 3 3) SYNTAXE A SÉMANTIKA 3 4) SPECIFIKACE
IRAE 07/08 Přednáška č. 1
Úvod do předmětu OOP Objekt Proč OOP? Literatura, osnova předmětu viz. cvičení Základní prvek OOP sw inženýrství = model reálných objektů (věcí) člověk, auto, okno (ve windows), slovník, = model abstraktní
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]()?
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é
Objekty, třídy, instance
Objekty, třídy, instance Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016 Objektové modelování, xx36omo 09/2016, Lekce 1 https://cw.fel.cvut.cz/wiki/courses/xxb36omo/start
7.5 Diagram tříd pokročilé techniky
7.5 Diagram tříd pokročilé techniky Stereotypy - jeden ze základních prostředků rozšiřitelnosti UML - pro modelovací konstrukce neexistující v UML, ale podobné předdefinované v UML definované uživatelem
NMIN201 Objektově orientované programování 1 / :36:09
NMIN201 Objektově orientované programování 1 / 26 8.10.2013 15:36:09 Objekty Svět se skládá z objektů! konkrétní x abstraktní hmatatelné x nehmatatelné (letadlo) x (chyba v programu) Objekty mohou obsahovat