04.11.2014 Views

elektronická verzia publikácie - FIIT STU - Slovenská technická ...

elektronická verzia publikácie - FIIT STU - Slovenská technická ...

elektronická verzia publikácie - FIIT STU - Slovenská technická ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Návrhové vzory 15<br />

F’/R’<br />

B<br />

Obrázok 1-6. Súiastka B poskytujúca funknos F’ prostredníctvom rozhrania R’.<br />

Prirodzeným riešením tohto problému je vytvorenie súiastky O poskytujúcej funknos F<br />

prostredníctvom rozhrania R, ktorá bude využíva funknos F’ poskytovanú súiastkou<br />

B prostredníctvom rozhrania R’. O sa nazýva obaovaom. Situácia je znázornená na obrázku<br />

1-7.<br />

A F/R O<br />

F’/R’<br />

B<br />

Obrázok 1-7. Použitie obaovaa O na zaistenie spolupráce nekompatibilných súiastok A, B.<br />

Obaova sa používa v dvoch typických situáciách:<br />

1. Súiastky A a B už existujú a potrebujeme, aby spolupracovali, priom ich nemôžem<br />

(resp. to nie je vhodné) meni.<br />

2. Súiastku A vytvárame. Súiastka B už existuje, avšak jej rozhranie R’ nám nevyhovuje.<br />

Dôvodom môže by napríklad nízka úrove abstrakcie, na ktorej R’ pracuje<br />

alebo technologická odlišnos R’ od A.<br />

1.3.2 Vzor Obaova v rôznych kontextoch<br />

Pozrime sa teraz na to, ako sa myšlienka vzoru Obaova vyskytuje vo vybraných publikáciách<br />

venovaných softvérovým vzorom.<br />

V (Gamma, 1995) je opísané použitie tohto vzoru v kontexte objektovo orientovanej<br />

paradigme vývoja softvéru. Na ilustráciu uveme príklad prevzatý z tejto publikácie,<br />

mierne upravený: Predstavme si, že vytvárame grafický editor. Jeho kúovou abstrakciou<br />

je grafický objekt, pre ktorý definujeme rozhranie GrafickyObjekt. Toto rozhranie je<br />

implementované rôznymi triedami: Ciara, Polygon, Kruznica a alšími, slúžiacimi<br />

na vykreslenie a editáciu iar, mnohouholníkov, kružníc a iných objektov. alším grafickým<br />

objektom, ktorý chceme ma možnos editova, je text.<br />

Funknos týkajúca sa editácie textu je typicky implementovaná priamo v používanej<br />

grafickej knižnici – v našom prípade nech na tento úel slúži trieda TextView. Ideálne by<br />

bolo, keby sme existujúcu triedu TextView mohli v grafickom editore priamo použi,<br />

avšak z pochopitených dôvodov toto nie je možné. Totižto napriek tomu, že poskytuje<br />

potrebnú funknos, má iné rozhranie – napríklad na zistenie hranice poskytuje metódu<br />

GetExtent(), kým GrafickyObjekt na tento úel predpisuje metódu Hranica()<br />

(obrázok 1-8). Aby sme TextView mohli použi, vytvoríme adaptér: triedu Text poskytujúcu<br />

rozhranie GrafickyObjekt, využívajúcu pritom triedu TextView.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!