Pravidlo 28: Kombinovaný fragment loop

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

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 emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *