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

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.

About Slávek Rydval 134 Článků
Slávek Rydval začínal jako programátor, ale postupem času se dostal k návrhu softwaru, posléze k integrační architektuře a v současní době pracuje jednak jako architekt řešení a jednak jako školitel UML (základů i příprav k certifikační zkoušce OCUP 2) a nástroje Sparx Enterprise Architect. S UML přišel do styku již na univerzitě, ale opravdu intenzivně se mu věnuje posledních deset let. Na programování však nezanevřel a občas pár řádek kódu napíše.

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

Napište komentář

Vaše e-mailová adresa nebude zveřejněna.


*