|
nový analytický vzor „Asociační třída na vrcholu stromu” a jeho rozbor
autor: RNDr. Ilja Kraval, prosinec 2010
Object Consulting s.r.o.
Server objektových technologií
Úvod
V knize Analytické modelování pomocí UML v praxi je jako jeden ze základních analytických vztahů podrobně vysvětlen vztah Generalizace i se dvěma vzory použití: Heterogenní seznam a Odkaz na vrchol stromu.
V prvém případě, tedy u vzoru Heterogenní seznam, se jedná o kombinaci dvou vztahů: Vztahu kompozice ku N (Faktura má řádky faktury) a vztahu Generalizace, což můžeme znázornit takto:
Obrázek 1 Vzor Heterogenní seznam v modelu tříd
V instanční rovině by mohl příklad evidence vypadat takto:
Obrázek 2 Instanční příklad nasazení vzoru Heterogenní seznam
Z předchozího obrázku je zřejmé, proč byl pro tento vzor zvolen název Heterogenní seznam: V jednom seznamu (tj. v jedné asociaci typu kompozice ku N) se v instanční rovině vyskytují prvky různých typů.
Podobně druhý uvedený vzor Odkaz na vrchol stromu je kombinací dvou vztahů: Odkaz do seznamu (slangově zvaná „číselníková vazba“) a Generalizace:
Obrázek 3 Vzor odkaz na vrchol stromu
V tomto případě si v modelu tříd prvek X tak říkajíc „ukazuje“ (jakoby do číselníku) na prvek typu A, což v instanční rovině může být buď prvek typu B nebo C (pozn.: třída A na obrázku je abstraktní).
V uvedené knize jsou oba důležité vzory podrobně vysvětleny a v kurzu Profesní růst analytika AM ADVANCED náležitě procvičeny také v příkladech.
Ukazuje se, že existují další podobné vzory v kombinaci Generalizace a některého ze vztahů asociace. Prvním z nich je kombinace asociační třídy nasazená na vrchol generalizace „sama na sebe“. O tom pojednává právě této článek.
Zavedení vzoru „Asociační třída na vrcholu stromu“
Poprvé jsem byl na možnost použití tohoto vzoru upozorněn nepřímo jedním z účastníků školení Profesní růst analytika AM ADVANCED. Při vysvětlování svého řešení u jednoho náročného příkladu se dotyčný účastník začal v diskusi pro mne dost překvapivě odvolávat na vzor Party (vzor Party je návod, jak zavést agendu Subjektů, viz uvedená kniha), přičemž v uvedeném příkladu se vůbec nejednalo o agendu Subjektů. Pak mi to došlo: Účastník školení měl na mysli využití vztahu „Subjekt - Subjekt“, který vzor Party zavádí jako asociační třídu spojující vrchol generalizace sama na sebe takto (uvedeno včetně diskriminátorů):
Obrázek 4 Vztah Subjekt - Subjekt ve vzoru Party
Dotyčný účastník dobře ocenil flexibilitu vztahu Subjekt - Subjekt ve vzoru Party a snažil se jej nasadit do svého řešení, ale protože neměl po ruce odpovídající vzor, nazval jej (trochu nepřesně) jako Party.
Další praxe včetně konzultace ve firmách mi zřetelně ukázala, že zobecnění myšlenky vztahu Subjekt - Subjekt do vzoru asociační třídy na vrcholu stromu je opravdu velmi silné a že se tedy hodí tento vztah zavést jako samostatný vzor rovnocenně vedle již dvou zavedených.
Zobecnění vzoru, který nazveme „Asociační třída na vrcholu stromu“, můžeme tedy zavést takto:
Obrázek 5 Vzor Asociační třída na vrcholu stromu
Význam je jasný: Asociační třída „A versus A“ propojuje přes vrcholovou abstraktní třídu A libovolné instance dědiců mezi sebou (tj. typově možné každý s každým) a číselník „Typ A versus A“ jako typický kódovník (code-list) dává tomuto vztahu navíc ještě interpretaci (například v agendě subjektů by existoval prvek s kódem 1 a textem „člen dozorčí rady“).
Jak jsem zjistil přímo v praxi při školeních a konzultacích nad návrhy systémů ve firmách, tak použití tohoto vzoru je mnohem širší, než by se mohlo na první pohled zdát. V podstatě všude, kde se vyskytuje požadavek „dát do vztahu prvky pocházející ze stromu dědičnosti mezi sebou“, se dá tento vzor nasadit.
Například jako velmi silné se jeví nasazení tohoto vzoru mezi účetními doklady (doklad versus doklad M:N), mezi řádky dokladů (řádky dokladů versus řádky dokladů M:N) anebo mezi dokumenty (dokument versus dokument M:N) apod.
V příštím pokračování článku si u tohoto vzoru vysvětlíme nejenom jeho všechno možné známé použití, ale také jej doplníme o různá vylepšení a samozřejmě upozorníme na možné chyby a záludnosti při jeho použití.
Vydání pokračování tohoto článku je plánováno na pondělí 27.12.2010!
|