Microsoft PowerPoint - OOP_prednaska_10.pptx

Podobné dokumenty
enum

DediĊnosť

Microsoft Word - RolyRiadeniaZmien_V1.doc

PowerPoint Presentation

Tue Oct 3 22:05:51 CEST Začiatky s jazykom C 2.1 Štruktúra programu Štruktúra programu by sa dala jednoducho popísať nasledovnými časťami, kto

Snímka 1

PowerPoint Presentation

Princípy tvorby softvéru Modelovanie domény

Microsoft PowerPoint - Prog_p08.ppt

Microsoft Word - 06b976f06a0Matice - Uzivatelska Dokumentacia

NSK Karta PDF

Úroveň strojového kódu procesor Intel Pentium Pamäťový operand Adresovanie pamäte Priama nepriama a indexovaná adresa Práca s jednorozmerným poľom Pra

Čo sú pojmové mapy 1 Charakterizácia pojmových máp pojmové mapy sú diagramy, ktoré vyjadrujú podstatné vzťahy medzi pojmami vo forme tvrdení. Tvrdenia

Snímka 1

Product Familiy Leaflet: MASTER PL-S 2 kolíkové

SPRINT 2

03_ControlFlow.dvi

SK01-KA O1 Analýza potrieb Zhrnutie BCIME tím Vyhlásenie: "Podpora Európskej komisie pre výrobu tejto publikácie nepredstavuje súhlas

PowerPoint Presentation

gis5 prifuk

Zastupujeme ľudí s mentálnym postihnutím a ich príbuzných ĽUDIA S MENTÁLNYM POSTIHNUTÍM A ICH PRÍBUZNÍ: VYUŽIME EURÓPSKE VOĽBY 2019 NA MAXIMUM Inclusi

Matej Kendera - PDF, word, lucene, java

Identity Lifecycle Management

Platný od: OPIS ŠTUDIJNÉHO ODBORU

Prehľad oprávnených realizátorov Národný projekt: Podpora rozvoja kreatívneho priemyslu na Slovensku (NPPRKP) Kód projektu v ITMS 2014+: J874 Dá

Algoritmizácia a programovanie - Príkazy

Trendy vývoja informatiky na ÚAMT

Prehľad oprávnených realizátorov Národný projekt: Podpora rozvoja kreatívneho priemyslu na Slovensku (NPPRKP) Kód projektu v ITMS 2014+: J874 Dá

História

Snímka 1

Prehľad oprávnených realizátorov Národný projekt: Podpora rozvoja kreatívneho priemyslu na Slovensku (NPPRKP) Kód projektu v ITMS 2014+: J874 Dá

NARIADENIE EURÓPSKEHO PARLAMENTU A RADY (EÚ) 2019/ zo 17. apríla 2019, - ktorým sa mení nariadenie (EÚ) č. 952/ 2013 s cieľom

NSK Karta PDF

MergedFile

SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE FAKULTA INFORMATIKY A INFORMAČNÝCH TECHNOLÓGIÍ Metodika archivácie verzií HW Tímový projekt Stratos FIIT M

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY Informačný systém pre materské školy Bakalárska práca 2019 Monika Vlčková

PowerPoint Presentation

Manažment v Tvorbe Softvéru 2018/2019

O babirusách

NSK Karta PDF

Mechanizmus skupiny EIB na vybavovanie sťažností

Ponuka Štart

Návrh odkanalizovania lokality Košice – Krásna pri postupnom budovaní rodinných domov

NÁVRH UČEBNÝCH OSNOV PRE 1

Prehľad oprávnených realizátorov Národný projekt: Podpora rozvoja kreatívneho priemyslu na Slovensku (NPPRKP) Kód projektu v ITMS 2014+: J874 Dá

Ness Technologies, Inc. Česká republika

Název prezentace může být na dva řádky (písmo Calibri, vel. 40, tučné)

NSK Karta PDF

Microsoft PowerPoint - Interbull-genomika

Zásady akreditačnej komisie na posudzovanie spôsobilosti fakúlt uskutočňovať habilitačné konanie a konanie na vymenovanie profesorov

Prehľad oprávnených realizátorov Národný projekt: Podpora rozvoja kreatívneho priemyslu na Slovensku (NPPRKP) Kód projektu v ITMS 2014+: J874 Dá

MergedFile

SKPOS

Style Sample for C&N Word Style Sheet

#project #process #change PRACUJTE FLEXIBILNE A INOVATÍVNE! AGILE MANAGEMENT

Teória pravdepodobnosti Zákony velkých císel

AM_Ple_NonLegReport

Relačné a logické bázy dát

Slovenská technická univerzita v Bratislave Fakulta informatiky a informačných technológií Iľkovičova 2, , Bratislava 4 Metodika verziovania Tím

1

20 Minarovic.ppt

Prezentácia programu PowerPoint

AM_Ple_LegReport

SAEAUT SNMP OPC Server

Dodatok č. 2 K ORGANIZAČNÉMU PORIADKU, Uradu Slovenskej akadémie vied 2014 /

Stravné - přecenění

Platný od: OPIS ŠTUDIJNÉHO ODBORU ANTROPOLÓGIA

Matematický model činnosti sekvenčného obvodu 7 MATEMATICKÝ MODEL ČINNOSTI SEKVENČNÉHO OBVODU Konečný automat predstavuje matematický model sekvenčnéh

bakalarska prezentacia.key

(Microsoft Word Zadanie na s\372\235a\236 KROS DESIGN AWARD .doc)

Stravné - přecenění

Kybernetické operácie na pozadí ozbrojených konfliktov

OOANS04Refact

GEODETICKÝ A KARTOGRAFICKÝ ÚSTAV BRATISLAVA Chlumeckého 4, Bratislava II Obsah 1. Export údajov ZBGIS do CAD formá

OPIdS - finančné riadenie

Vzorové riešenia úlohy 4.1 Bodovanie Úvod do TI 2010 Dôvod prečo veľa z Vás malo málo bodov bolo to, že ste sa nepokúsili svoje tvrdenia dokázať, prič

PRAVIDLÁ OCHRANY OSOBNÝCH ÚDAJOV Tieto Pravidlá ochrany Osobných údajov boli pripravené s ohľadom na nové Nariadenie Európskeho parlamentu a Rady (EU)

Balíčkovanie FreeSWITCH-u pre Debian Autor: Zdenko Holeša, InžProjekt 1, KIS FRI ŽU Predkompilované balíčky Predkompilované balíčky existujú pre Debia

Microsoft PowerPoint - SLIDES_02DTD.ppt

Prezentácia programu PowerPoint

EURÓPSKA KOMISIA V Bruseli C(2017) 1143 final DELEGOVANÉ NARIADENIE KOMISIE (EÚ) / z o klasifikácii parametra horizontálneho s

Rozdeľovanie IT zákaziek UX Peter Kulich

IQ Easy firmy Simco-ION Nová generácia výrobkov pre ovládanie statickej elektriny SÚHRN: Firma Simco-ION predstavuje novú generáciu výrobkov pre elimi

Mikuvo11 Žilinská univerzita v Žiline Univerzitná 8215/1, Žilina Výskumný ústav vysokohorskej biológie Podporujeme výskumné aktivity na Slovens

Microsoft Word - Fabik - esej2011_18-is-xfabik.doc

NSK Karta PDF

Katarina Kellenbergerova - Panel 5

Sablona prispevky MSI

NARIADENIE EURÓPSKEJ CENTRÁLNEJ BANKY (EÚ) č. 673/„ z 2. júna o zriadení mediačného výboru a jeho rokovacom poriadku -

Platný od: OPIS ŠTUDIJNÉHO ODBORU FILOZOFIA

Bez názvu - 1

DANKO monitorovanie1.qxd

EURÓPSKA KOMISIA V Bruseli C(2018) 6560 final ANNEX 1 PRÍLOHA k vyoknávaciemu rozhodnutiu Komisie, ktorým sa stanovuje metodika monitorov

Komplexný informa ný a monitorovací systém Monitorovanie biotopov a druhov európskeho významu Používate ská dokumentácia KIMS modul Mobilná aplikácia

Microsoft Word - Hitka - esej2011_06-is-xhitka.doc

Microsoft Word - Argumentation_presentation.doc

Prepis:

Creational Design Patterns Lecture #10 doc. Ing. Martin Tomášek, PhD. Department of Computers and Informatics Faculty of Electrical Engineering and Informatics Technical University of Košice 2018/2019

Vytváracie návrhové vzory Zaoberajú sa inicializovaním a konfiguráciou tried a objektov Dnes si ukážeme Factory Method Abstract Factory Singleton Builder Prototype Lecture #10: Creational Design Patterns 3 Vytváracie návrhové vzory Vytváracie vzory predstavujú abstrakciu procesu vytvárania inštancií objektov. Skrývajú proces vytvárania objektov a pomáhajú budovať systémy nezávislé od spôsobu vytvárania a skladania objektov Vytváracie vzory tried sa zameriavajú na použitie dedenia pri rozhodovaní o vytváraní objektov Factory Method, Prototype Vytváracie vzory objektov sa zameriavajú na delegovanie procesu vytvárania objektov na iné objekty Abstract Factory, Builder Lecture #10: Creational Design Patterns 4

Vytváracie návrhové vzory Všetky OO jazyky majú jazykovú konštrukciu pre vytváranie objektov, napr. new Vytváracie vzory umožňujú napísať metódy pre vytváranie objektov bez priameho použitia new To umožňuje písať metódy, ktoré vytvárajú rôzne objekty a môžu byť rozširované pre vytváranie ďalších nových objektov bez nutnosti modifikácie existujúceho kódu Lecture #10: Creational Design Patterns 5 Factory Method Zámer použitia Definuje rozhranie pre vytváranie objektov, ale umožňuje podtriedam rozhodovať o tom, objekty ktorých tried budú vytvárané Motivácia Metóda createdocument() predstavuje vzor Factory Method Lecture #10: Creational Design Patterns 6

Factory Method Použitie V prípade, že trieda nemôže predpokladať akej triedy budú vytvárané objekty Trieda očakáva, že jej podtriedy špecifikujú vytvárané objekty Štruktúra Lecture #10: Creational Design Patterns 7 Factory Method Zúčastnené prvky Product definuje rozhranie pre typ objektov, ktoré sa budú vytvárať ConcreteProduct implementuje Product rozhranie Creator deklaruje vytváraciu metódu, ktorá vracia objekt typu Product ConcreteCreator prepisuje vytváraciu metódu a vracia inštanciu ConcretePorduct Spolupráca prvkov Creator sa spolieha na svoje podtriedy, ktoré implementujú vytváraciu metódu, že vrátia príslušnú inštanciu ConreteProduct Lecture #10: Creational Design Patterns 8

Factory Method Trieda Creator je vytváraná bez znalosti aká aktuálna trieda ConcreteProduct bude inštanciovaná. To ktorá trieda ConcreteProduct bude inštanciovaná je jednoznačne dané príslušnou ConcreteCreator podtriedou použitou v aplikácii Neznamená to však, že podtrieda sa rozhodne počas vykonávania, ktorý konkrétny typ sa použije! Lecture #10: Creational Design Patterns 9 Factory Method Výhody Kód je omnoho flexibilnejší a znovu použiteľný vďaka odstráneniu inštanciovania aplikačne špecifických objektov Kód pracuje iba s rozhraním Product a tým môže používať akékoľvek triedy ConcreteProduct, ktoré implementujú toto rozhranie Implementácia Creator môže byť abstraktná aj konkrétna trieda Ak má vytváracia metóda vytvárať viac typov objektov, môže mať napr. vstupný parameter a rozhodovať pomocou if-else konštrukcie Lecture #10: Creational Design Patterns 10

Abstract Factory Zámer použitia Poskytuje rozhranie pre vytváranie skupín príbuzných alebo závislých objektov bez špecifikácie ich konkrétnych tried Vytváranie objektov je delegované na iné objekty pomocou kompozície a používa vzor Factory Method pre vytváranie konkrétnych typov objektov Lecture #10: Creational Design Patterns 11 Abstract Factory Motivácia Lecture #10: Creational Design Patterns 12

Abstract Factory Použitie Systém má byť nezávislý na tom ako sú vytvárané jeho prvky Trieda nemôže predpokladať akej triedy budú vytvárané objekty Systém musí používať iba jednu skupinu príbuzných prvkov Prvky z jednej skupiny príbuzných prvkov musia byť používané súčasne Lecture #10: Creational Design Patterns 13 Abstract Factory Štruktúra Lecture #10: Creational Design Patterns 14

Abstract Factory Zúčastnené prvky AbstractFactory deklaruje rozhranie pre operácie, ktoré vytvárajú objekty abstraktných produktov ConcreteFactory implementujú operácie pre vytváranie konkrétnych objektov AbstractProduct deklaruje rozhranie pre typ objektov produktov ConreteProduct definuje objekt produktu, ktorý má byť vytváraný konkrétnou vytváracou triedou, implementuje rozhranie AbstractProduct Client používa iba rozhrania deklarované ako abstraktné (AbstractFactory, AbstractProduct) Lecture #10: Creational Design Patterns 15 Abstract Factory Spolupráca prvkov Je vytvorená iba jediná inštancia ConcreteFactory (viď vzor Singleton), táto vytvára objekty produktov podľa konkrétnej implementácie. Pre vytváranie iných typov produktov je potrebná inštancia inej ConcreteFactory Trieda AbstractFactory necháva implementáciu vytvárania objektov na svojich podtriedach Lecture #10: Creational Design Patterns 16

Abstract Factory Výhody Izoluje klienta od konkrétnej implementácie tried Umožňuje jednoduchú výmenu skupiny produktov, keďže konkrétna vytváracia trieda implementuje vytváranie celej skupiny produktov Vynucuje používanie len jednej skupiny objektov produktov Implementácia Typická implementácia vyžaduje iba jedinú inštanciu vytváracej triedy V tomto prípade sa používa vzor Singleton V prípade, že konkrétna vytváracia trieda musí vytvárať nové druhy produktov (nezahrnuté v abstraktnej deklarácii), často sa implementuje iba jediná vytváracia metóda s parametrom druh produktu Lecture #10: Creational Design Patterns 17 Singleton Zámer použitia Umožňuje vytvorenie iba jedinej inštancie z danej triedy a poskytuje takto globálny prístup k tomuto objektu Motivácia Niekedy chceme iba jedinú inštanciu danej triedy Napr. chcem iba jeden objekt spravujúci objekty okien v systéme, alebo iba jeden vytvárací objekt Chceme aby sme sa k tomuto objektu ľahko dostali Chceme mať zaručené, že nemôžeme vytvoriť viac inštancií danej triedy Lecture #10: Creational Design Patterns 18

Singleton Štruktúra Výhody Kontrolovateľný prístup k jednoznačnému objektu Nedovoľuje vytvorenie rôznych ďalších inštancií Lecture #10: Creational Design Patterns 19 Builder Zámer použitia Oddeľuje konštrukciu (postup vytvárania) zložitého objektu od jeho reprezentácie (jeho štruktúry) Motivácia Prípady, kde potrebujeme vyskladať objekt zložený z iných objektov Chceme pred klientom skryť samotnú implementáciu vyskladania objektu Chceme klientovi poskytnúť variabilitu skladania štruktúrovaných objektov Lecture #10: Creational Design Patterns 20

Builder Použitie Oddeliť problém výstavby objektu (z čoho sa má skladať) od konštrukcie (ako sa má skladať) a reprezentácie skladaného objektu (čo sa má skladať) Klient má prístup ku konštrukcii objektu na základe rozhrania, ktoré môže byť implementované rôznymi objektmi Lecture #10: Creational Design Patterns 21 Builder Štruktúra Director -thebuilder Builder +Build() 1 1 +BuildPartA() +BuildPartB() for each object in structure switch by something from object { A :...thebuilder.buildparta(); B :... thebuilder.buildpartb();... } ConcreteBuilder +BuildPartA() +BuildPartB() +GetProduct() Product Lecture #10: Creational Design Patterns 22

Builder Zúčastnené prvky Builder abstraktné rozhranie pre tvorbu častí výsledného objektu ConcreteBuilder implementuje Builder a konštruuje konkrétny objekt typu Product (vykonáva celú konštrukciu) Director konštruuje štruktúrovaný objekt použitím objektu s rozhraním Builder (t.j. ConcreteBuilder), pričom nepozná konštruovaný objekt (riadi celú konštrukciu) Product reprezentuje konštruovaný zložený objekt Lecture #10: Creational Design Patterns 23 Builder Spolupráca prvkov theclient thedirector theconcretebuilder new ConcreteBuilder() new Director (theconcretebuilder ) Build() BuildPartA() BuildPartB() GetProduct() Lecture #10: Creational Design Patterns 24

Prototype Zámer použitia Zavedenie skupiny objektov vznikajúcich klonovaním prototypových inštancií pomocou jednotného rozhrania Motivácia Pri vytváraní objektov máme často problém výberu triedy výsledného produktu Riešenie pomocou Factory vzorov vyžaduje často prepis celej vytváracej metódy (hoci po zdedení) Vytváranie nových objektov ako kópií iných objektov, bez toho aby sme vedeli o aký skutočný typ ide Lecture #10: Creational Design Patterns 25 Prototype Použitie Štruktúra produktov má spoločné rozhranie, ktoré podporuje klonovanie objektov Klient obsahuje zoznam prototypových objektov, z ktorých sú klonované nové objekty Klient pristupuje pri vytváraní objektu cez toto spoločné rozhranie, pričom nezáleží o aký konkrétny typ vytváraného objektu ide Lecture #10: Creational Design Patterns 26

Prototype Štruktúra Client prototype Prototype +Operation() 1 1 +Clone()... mojep = prototype.clone();... ConcretePrototype1 ConcretePrototype2 +C lone() +Clone() return copy of this return copy of this Lecture #10: Creational Design Patterns 27 Prototype Zúčastnené prvky Prototype abstraktné rozhranie pre vytváraný objekt, implementuje abstraktnú metódu klonovania objektu ConcretePrototype implementuje Prototype a vytvára kópiu inštancie tejto konkrétnej triedy Client používa Prototype na vytváranie objektov pomocou metódy Clone(), nemusí poznať aké ConcretePrototype je použité (nazývaný tiež Prototype Manager a často implementovaný pomocou Factory vzorov) Lecture #10: Creational Design Patterns 28