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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

138 Štúdie vybraných tém programových a informaných systémov<br />

Obrázok 5-9. SPS model vzoru Visitor (vavo) a k nemu prislúchajúca inštancia (vpravo) [11].<br />

Tento prístup však kladie väší dôraz na prácu s rolami, priom podrobnejšie definuje<br />

vlastnosti ich použitia a súasne využíva mieru abstrakcie, ktorú tento pojem umožuje.<br />

Pri práci s rolami uplatuje nasledovné pravidlá:<br />

1. Rola predstavuje bu štrukturálnu entitu (zodpovedá jej napr. trieda, objekt) alebo<br />

entitu správania (zodpovedá jej napr. metóda). Leitmotif vzoru je opísaný ako množina<br />

spolupracujúcich rolí oboch typov.<br />

2. Každej roli môže zodpoveda niekoko konkrétnych hráov reprezentujúcich inštanciu<br />

role. Niektoré sú definované tak, aby im zodpovedal iba jeden hrá, iné sú urené<br />

tak, aby im zodpovedalo viac (0 - N) hráov. Hovoríme o poetnosti role.<br />

3. Role môžu ma viac dimenzií: napríklad vo vzore Abstarct factory každý hrá role<br />

ConcreteProduct zodpovedá uritému typu produktu (AbstractProduct) a súasne<br />

rodine produktu (= produkty vytvárané rovnakým hráom ConcreteFactory). V tomto<br />

prípade je rola ConcreteProduct definovaná ako dvojrozmerná, pretože poet hrá-<br />

ov role je viazaný na poty hráov dvoch nezávislých rolí.<br />

4. Vzahy medzi rolami sa nie sú mapované jedna k jednej k výsledným hráom:<br />

a. Jedna relácia na úrovni modelu rolí môže by mapovaná do viacerých vzahov<br />

na úrovni návrhu. Napríklad vo vzore Abstract factory je každý hrá role ConcreteFactory<br />

zodpovedný za inštanciáciu hráov role ConcreteProduct. To, akým<br />

spôsobom sa to deje, nie je definované: môže to by lokálne na báze Factory method<br />

(klasicky) alebo delegovaním pomocou vzoru Prototype (vzniká vzor Plugable<br />

Factory [35]).

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

Saved successfully!

Ooh no, something went wrong!