Pravidlo 4: Násobnost, díl 1.

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).
Správně použitá násobnost

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).

Nesprávně použitá násobnost
Nastavení často používaných násobností

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.

 

Komentář (2)

  • Sam F. Polívka| 31. 3. 2020

    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

    • Slávek Rydval| 31. 3. 2020

      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).

  • Zanechat odpověď

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