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.

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

Štrukturálny kontrakt<br />

V rámci Štrukturálneho kontraktu vzoru je definovaná štruktúra vzoru a operácie umož-<br />

ujúce vykonáva inštanciáciu a evolúciu inštancie vzoru a integráciu viacerých inštancií<br />

vzorov. Opis štruktúry komponentu pozostáva z týchto astí :<br />

Konštanty – predstavujú množinu tried C, množinu atribútov tried AV, množinu metód M,<br />

množinu typov T a množinu prístupových práv AR.<br />

Predikáty<br />

− Predikáty rolí RP (Role predicates) tvoria množinu informácií o roliach.<br />

− Predikáty vzahov CP (Connection predicates) tvoria množinu definícií vzahov medzi<br />

jednotlivými rolami a spôsob ich prepojenia.<br />

− Predikáty akcií AP (Action predicates) tvoria množinu obsahujúcu opisy akcií, ktoré<br />

môže vykonáva rola návrhového vzoru.<br />

− Množinové predikáty SP (Set predicates) tvoria množinu prezentujúcu informácie<br />

o ubovonom pote inštancií role.<br />

− Kvantifikané predikáty QP (Quantification predicates) tvoria množinu definujúcu<br />

spôsob kvantifikácie množiny elementov.<br />

Príklad Štrukturálneho kontraktu vzoru Observer:<br />

C = {Subject, Observer, ConcreteObserver, ConcreteSubject}<br />

AV = {subject, observers, subjectState, observerState}<br />

M = {attach, detach, getState, update, notify, append, remove}<br />

T = {void, DataType}<br />

AR = {public, protected, private}<br />

RP = {<br />

abstractclass(Subject),<br />

abstractclass(Observer),<br />

class(ConcreteObserver),<br />

class(ConcreteSubject),<br />

variable(Subject, private, observers, Observer),<br />

variable( ConcreteObserver, private, subject, Subject),<br />

variable(ConcreteSubject, private, subjectState, DataType),<br />

variable(ConcreteObserver, private, observerState, DataType),<br />

method(Subject, public, attach, void),<br />

method(Subject, public, detach, void),<br />

method(Subject, public, notify, void),<br />

method(ConcreteSubject, public, GetState, DataType),<br />

method(Observer, public, update, void),<br />

method(ConcreteObserver, public, update, void)<br />

}<br />

CP = {<br />

inherit(Observer, ConcreteObserver),<br />

inherit(Subject, ConcreteSubject)<br />

}<br />

AP = {<br />

invoke(Subject, attach, observers, append),<br />

invoke(Subject, detach, observers, remove),<br />

invoke(Subject, notify, Observer, update),<br />

invoke(ConcreteObserver, update, subject, GetState),<br />

return(ConcreteSubject, GetState, subjectState)<br />

}

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

Saved successfully!

Ooh no, something went wrong!