elektronická verzia publikácie - FIIT STU - Slovenská technická ...
elektronická verzia publikácie - FIIT STU - Slovenská technická ...
elektronická verzia publikácie - FIIT STU - Slovenská technická ...
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 />
}