Každá operace může mít definovaný libovolný počet podmínek (metatřída Constraint), které musí být splněny před jejím spuštěním (tzv. pre-condition), a libovolné množství podmínek, které musí být splněny po jejím dokončení (tzv. post-condition). Druhé jmenované podmínky platí ve chvíli, kdy běh operace nevyvolá výjimku.
Operace může mít přiřazenu ještě jednu (tedy již ne libovolné množství) podmínku nazvanou bodyCondition. Zjednodušeně řečeno, tato podmínka vypočítává výsledek operace, ke které je přiřazena (a tedy musí splňovat i post-condition).
A teď pozor. Podmínku bodyCondition lze podle pravidla only_body_for_query přiřadit pouze k operaci, která má nastavenou vlastnost isQuery na true, což je operace, jenž nesmí nic měnit. V praxi to tedy může být tzv. getter nějaké vlastnosti (uživatelé objektově orientovaného programovacího jazyka tento pojem musí znát).

Co na to Sparx EA?
Sparx EA vám nedovolí definovat bodyCondition přímo. V dialogu pro operaci sice máte možnost zadat pre- a post-conditions, ale bodyCondition nikoliv.

Protože ani UML standard nedefinuje, jak přesně tuto podmínku zobrazovat, musíme improvizovat. Chceme-li ji zobrazit, můžeme využít klasického omezení (metatřída Constraint) s nastavením typu bodyCondition a to přiřadit – a teď pozor – ke třídě (viz příklad níže). Je to z toho důvodu, že Sparx EA neumí toto přiřazení k operaci jako takové. Ostatně to je i důvod, proč jsem do těla podmínky napsal název operace.
Douška
Celý seriál 30 pravidel UML byl revidován, upraven a knižně vydán. Pokud jej chcete mít k dispozici v papírové podobě, navštivte stránky nakladatelství Elebedial.

Buďte první kdo přidá komentář