![]() |
Dependencies of the Interaction package |
Čára života (Třída Lifeline)
![]() |
Lifelines |
![]() |
Interactions |
![]() |
Occurences |
Účastníci interakce se zobrazují jako obdélník, ve kterém je název účastníka, s vertikální linkou ve-doucí od dolní hrany obdélníka (linka může být přerušovaná, ale nemusí, ve standardu je přímo uvedeno: „…vertical line (which may be dashed)…“). Obdélník a vertikální linka jsou pak dohromady onou čárou života. Čas běží shora dolů.
Zprávy mezi účastníky interakce jsou zobrazovány pomocí šipek. Typ zprávy určuje notaci šipky (viz popis dále). Pořadí těchto zpráv (obecně pořadí OccurrenceSpecification) podél čáry života určuje pořadí, v jakém se události vyskytují. Vzdálenost mezi nimi je však nepodstatná.
![]() |
Příklad: Sekvenční diagram |
([<connectable-element-name> [‘[‘<selector>‘]‘]][: <class_name>][decomposition])|‘self‘
Přičemž selector je <expression> a dekomposition je ‘ref‘ <interactionident> [‘strict‘].
<class-name> je typ odkazovaný ConnectableElement-em.
Ačkoliv uvedená syntaxe to dovoluje, záhlaví nesmí být prázdné.
Čára života může zobrazit v hlavičce klíčové slovo self. V takovém případě čára života reprezentuje instanci klasifikátoru, kterému interakce náleží.
Čára života reprezentuje tzv. do souvislosti spojitelné elementy (connectable elements, viz metamodel a asociace mezi třídami Lifeline a ConnectableElement). Třída ConnectableElement je součástí zkoušky úrovně Itermediate a Advanced, takže zde nám postačí pouze informace, že třída ConnectableElement popisuje instance umístěné v klasifikátoru, kterému interakce náleží.
Interakce (Třída Interaction)
Interakce je druh chování, které se zaměřuje na výměnu informací mezi ConnectableElement-y. Informace se vyměňují pomocí zpráv.
Sémantika interakce je dána dvěma množinami. První množina obsahuje platné sekvence posílaných a přijímaných událostí. Druhá množina obsahuje neplatné sekvence. Všechny ostatní sekvence nejsou pro interakci důležité.
![]() |
Příklad: Platné a neplatné sekvence |
Každá sekvence se zapisuje pomocí následujícího zápisu:
<e1, e2, … , ex>
Kde každé ei je vyslání či přijmutí události (obecně výskyt události, OccurenceSpecification). Za i v ei se často používá např. vykřičník, apostrof, hvězdička a další znaky. Je to ale jen zápis, nic víc.
Zde dochází k rozporu mezi standardem a knihou [ocup-cg]. V knize se mluví o třídách EventOccurence a ExecutionOccurence a odkazuje se na metamodel Occurrences (v knize text strana 94 a metamodel na straně 103 na obrázku 2.116). Ovšem ani v UML 2.0 ani 2.2 tyto třídy v metamodelu nejsou. Pokud autoři psali knihu na základě návrhu UML verze 2.0 a pak si nevšimli, že došlo k přejmenování, nevím. Rozhodně metamodel obsahuje třídy OccurrenceSpecification a ExecutionSpecification, což jsou zřejmě ty, o kterých autoři mluví. Viz také popis sémantiky třídy Interaction.
Asociace mezi nimi však má roli pouze konců u OccurenceSpecification (finish a start). V knize jsou asociace nesměrové a u třídy ExecutionOccurence je navíc role finishExec a startExec. Protože však již v UML 2.0 nic takového není, na uvedený metamodel bych se vykvajznul a opravdu se věnoval tomu, který je uveden ve standardu.
Pro OCUP Intermediate jistě bude zajímavé se pořádně ponořit do sématiky třídy Interaction s návazností na základy chování a trace model. Pro potřeby Fundamental to již necháme bez dalšího pokecu.
Pro hledání platné sekvence platí pouze dvě jednoduchá pravidla:
- Před přijmutím události musí existovat odpovídající vyslání této události.
- Sekvence podél jedné čáry života je relevantní. Naopak pozice jedné události je vzhledem k jiné události na jiné čáře života bezvýznamná.
- <a!, a‘, b!, c!, c‘, b‘>
- <a!, c,!, a‘, b!, c‘, b‘>
Jelikož je třída Interaction specializací chování (třída Behavior), je možné jej dále specializovat a předefinovat. Specializace znamená přidání dalších sekvencí do zmíněných množin.
Notace
Interakce se zobrazuje jako obdélník. V levém horním rohu je pak obdélníku se skoseným rohem klíčové slovo sd (ačkoliv zde standard mluví o klíčovém slově, v kapitole klíčová slova jej neuvádí) je následované názvem interakce. Poté jsou parametry interakce.
Notace vnitřku se pak odráží od digramu, který chceme zobrazovat: sekvenční diagram, komunikační diagram, diagram interakcí nebo časový diagram. Pozn: sjednotit názvy diagramů.
Lokální atribut (který lze použít např. jako počítadlo průchodů cyklem) se zobrazuje v levém horním rohu diagramu.
![]() |
Příklad: Lokální parametr |
Žádné komentáře:
Okomentovat