V předchozím příspěvku jsme hovořili o kombinovaných fragmentech, operandech a podmínkách. Přiznám se, že jsem jednu vlastnost zmíněné podmínky záměrně vynechal. Uschoval jsem si ji pro případ, kdy budeme hovořit o kombinovaném fragmentu typu loop.
Právě v případě tohoto fragmentu můžeme k podmínce přiřadit ještě dvě čísla, které určují minimální a maximální počet průběhů cyklu.
A pravidlo? To se jmenuje minint_maxint a říká, že minimum a maximum lze použít pouze a jenom u kombinovaného fragmentu loop. A abychom byli precizní, můžeme dodat ještě to, že minimální počet musí být větší roven nule (pravidlo minint_non_negative), totéž platí pro maximální počet (pravidlo maxint_positive). A konečně poslední pravidlo nařizuje, aby hodnota minimálního počtu byla menší rovna té maximální (maxint_greater_equal_minint).
Předchozí příklad patří mezi rodičovskou klasiku, kdy potomek dostane nějaký pokyn s douškou, že mu to rodič nebude opakovat stokrát. Jak je to tedy sémanticky provedeno v tomto případě? Kombinovaný fragment nejprve bez ohledu na podmínku vykoná minimum počet iterací (zde tedy nulakrát). A poté provádí iterace až do horní hranice, ovšem pouze v případě, že podmínka nabývá hodnoty false. Jakmile vyhodnocení podmínky bude true, cyklus je ukončen.
Co na to Sparx EA?
Tady je třeba si pobrečet trošku více – Sparx EA neumožňuje legálně dolní a horní hranici zadat. V uvedených příkladech, byť jsou zakreslené v EA, bylo použito podvodu.
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ář