Pravidlo 10: Dotazovací operace

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

Tento článek je součástí seriálu 30 pravidel UML. Pokud jste ještě nečetli, podívejte se na výchozí článek. Ostatní články můžete dohledat pomocí štítku 30 pravidel UML.

Chcete vědět více? Objednejte si knihu UML pro analytiky nebo navštivte některé mé školení. Některá z nich jsou online.

Zanechat odpověď

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *