Pravidlo 13: Signály a receptory
Signály jsou jedním z asynchronních způsobů, jak si objekty mohou vyměňovat informace. Aby takový objekt mohl daný signál přijmout, musí mít odpovídající receptor. Co to však znamená odpovídající receptor?
Modelujte, nekreslete
Signály jsou jedním z asynchronních způsobů, jak si objekty mohou vyměňovat informace. Aby takový objekt mohl daný signál přijmout, musí mít odpovídající receptor. Co to však znamená odpovídající receptor?
Rozhraní je prvek, který deklaruje množinu souvisejících vlastností (atributů a operací) a pravidel. To celé pak má tvořit nějakou ucelenou službu, kterou následně může někdo další, např. třída či komponenta, nabízet okolnímu světu.
Asociace může mít nastavené spousty různých vlastností. Jednou z nich je kompozice, která nám jednak říká, že se jedná o vztah celek-část, a jednak, že celek danou část vlastní. Jinými slovy, pokud je rušena instance celku, jsou díky kompozici automaticky rušeny i tyto části.
Každá operace může mít definovaný libovolný počet podmínek (metatřída Constraint), které musí být splněny před jejím spuštěním (tzv. pre-condition), a libovolné množství podmínek, které musí být splněny po jejím dokončení (tzv. post-condition). Druhé jmenované podmínky platí ve chvíli, kdy běh operace nevyvolá výjimku.
Každá operace může mít posloupnost libovolného počtu parametrů. Tyto parametry jsou čtverého druhu: vstupní, výstupní, vstupně-výstupní a návratový.
Když ve svých návrzích používáte generalizaci, pak tím tvoříte hierarchii. V drtivé většině objektově orientovaných jazycích může jeden prvek přímo specializovat pouze jeden obecnější prvek. V jazycích jako je C++ může jeden prvek specializovat více prvků najednou. A UML vícenásobnou dědičnost opravdu podporuje.
Generalizace je vztah, který říká, že jeden prvek je obecný a druhý jej specializuje, tedy rozšiřuje nebo upravuje jeho schopnosti. Obecným prvkem může být prvek formuláře, specializovaným pak tlačítko, vstupní pole nebo zaškrtávací pole.
V rámci jmenného prostoru (prvek Namespace, zástupcem je např. třída nebo komponenta) je možné se na prvky odkazovat pouze jejich jménem. Např. operace jedné třídy se mohou názvem přímo odkazovat samy na sebe nebo např. na atributy téže třídy. Nebo v jednom balíku se mohou prvky v něm obsažené odkazovat na sebe přímo (např. třídy).
V předchozím díle jsem načal povídání o násobnosti, nyní jej dokončím. Poměrně zásadní pravidlo nazvané value_specification_constant nám říká, že nelze hranice násobnosti měnit např. za běhu aplikace, ale je to neměnná hodnota.
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.