Otázka 6 / 14

Jak navrhnete UML diagram tříd jako business (doménový) model tak, aby byl sémanticky přesný a neimplementační? Vysvětlete práci s asociacemi, mohutnostmi, rolemi, generalizací a s agregací/kompozicí na konkrétním příkladu.

Cíl doménového UML

  • sjednotit významy pojmů (glosář)
  • popsat entity, vztahy a omezení domény, nikoli tabulky

Klíčové konstrukce

  • Třída = doménový pojem (např. Objednávka)
  • Atribut = business vlastnost (datum, částka, stav)
  • Asociace + role = význam vztahu (Zákazník jako „objednatel“)
  • Mohutnost = omezení reality (1..*, 0..1)
  • Asociační třída pro vztah s atributy (PoložkaObjednávky mezi Objednávka a Produkt)
  • Generalizace/specializace: varianty s odlišnými pravidly (PlatbaKartou vs Platba)
  • Agregace vs kompozice:
    • kompozice: část bez celku nedává smysl (PoložkaObjednávky bez Objednávky)
    • agregace: část může existovat i bez celku

Typické zásady (proti implementačnímu skluzu)

  • neřešit databázové klíče jako primární obsah modelu (surrogate keys jsou implementační)
  • neřešit normalizaci, indexy, technické tabulky
  • vyhýbat se atributu „typ…“ jako náhradě za specializaci (antipattern)

Jak model validovat

  • otestovat mohutnosti na scénářích (extrémy)
  • ověřit, že pojmy z událostí/cílových stavů procesů mají protějšek v třídách