Násobnost (prvek Multiplicity) je takovým zvláštním jevem. Je využívaná opravdu často, přitom jsem ji dosud neviděl použít špatně. A to je co říct, protože si s ní můžeme nepěkně vyhrát.
Jistě víte, že násobnost nám určuje minimální a maximální povolený počet hodnot např. v atributu.
Z tohoto důvodu jsou některá pravidla naprosto jasná:
- Horní hranice musí být větší nebo rovna menší (upper_ge_lower).
- Dolní hranice musí být větší nebo rovna nule (lower_ge_0).
- Dolní i horní hranice je celé číslo (lower_is_integer a upper_is_unlimitedNatural).

Zabředneme-li do UML poněkud více, zjistíme, že dolní a horní hranice je ve skutečnosti specifikace hodnoty (prvek ValueSpecification). Díky tomu můžeme hodnotu specifikovat nejen konkrétním číslem, jak téměř vždy činíme, ale i výrazem, a ne nutně matematickým. Tento výraz musí být
vyhodnotitelný jako celé číslo. Následující násobnosti jsou tedy podle UML zcela v pořádku:
- 1+4..11-2
- round(sin(0))..round(cos(0))
- jedna..pět
Ovšem zde odkazuji na slova zapsaná kurzívou v prvním odstavci. Tohle je opravdu jen na hraní, v praxi bychom měli zůstal u použití střízlivější formy.
Co na to Sparx EA?
Bohužel nic. V něm klidně můžete zapsat násobnost -8..-3,14 a nepřijde mu to divné. Na druhou stranu vám umožňuje definovat si nejčastěji používané násobnosti a ty pak při zadávání používat (viz záložka Configure, tlačítko UML types a v daném dialogu položka Cardinality Values).


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.

Navíc Enterprise Architect používá v okně chybné označení Cardinality namísto Multiplicity.
viz [UML 2.5.1] – page 33, 7.5.3.2 Multiplicities
„The multiplicity is a constraint on the cardinality, which shall not be less than the lower bound and not greater than the upper bound specified for the Multiplicity …“
Přitom při zadávání na koncích asociace, nebo v atributech termín Multiplicity používají.
Upozorňoval jsem je na to už 2 roky zpět, sdělili mi, že to měnit nemají v úmyslu.
Děkuji za vynikající seriál.
Sam F. Polívka
Ano, je to jedna z mnoha nekonzistencí nástroje. Je smutné, že to nechtějí upravit, přitom v testu úrovně Intermediate na znalosti UML se na rozdíl mezi kardinalitou a násobností ptají (zjednodušeně řečeno, násobnost je množina povolených kardinalit).