Pravidlo 9: Operace a návratový typ

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

  • Vstupním parametrem předáváme hodnoty do operace. Případná změna takové hodnoty není navenek vidět.
  • Výstupní parametr slouží k tomu, aby operace hodnotu získala a předala ji volajícímu.
  • Vstupně-výstupní parametr vezme na vstupu hodnotu, předá ji operaci, ta ji může změnit a tato změna je vidět navenek (samozřejmě po dokončení takové operace).

Dosud je vše jednoduché. Ale k čemu je zde návratový parametr? Návratový parametr určuje typ výsledku operace. Jinými slovy určuje typ návratové hodnoty předávané přímo operací.

Pokud bychom chtěli sečíst dvě čísla, máme tedy dvě možnosti, jak operace deklarovat:

První operace vrací výsledek ve výstupním parametru Součet, druhá operace vrací výsledek v návratové hodnotě.

A nyní konečně k pravidlu, o kterém tento článek má být. UML definuje pravidlo at_most_one_return, které operaci zakazuje mít více než jeden návratový parametr. Pokud jste kdy programovali, tak vám to jistě bude dávat smysl (a proto se podívejte na konec článku, kde je podnět k zamyšlení).

Co na to Sparx EA?

Sparx toto pravidlo dovolí porušit. Musíte se ale už trošku snažit (ale opravdu jen trošku).

Při editaci operace umožňuje EA vybrat max. jeden výstupní parametr.

Pokud však editujete jednotlivé parametry, u libovolného z nich můžete nastavit směr (Direction) na return.

Sparx EA má v případě operací i další neduhy. Jednak nedodržuje notaci danou UML (pro výstupní parametr používá hvězdičku namísto klíčového slova out) a jednak neprovedete-li jistá nastavení, tak výchozím typem pro výstupní parametr je void (což je z jazyků rodiny C používáno pro žádný návratový typ).

A jestliže jste dočetli až sem, mám pro vás něco k zamyšlení. Jazyk C# od verze 7 podporuje tzv. n-tice (anglicky tuples):

(string Alpha, string Beta) namedLetters = („a“, „b“);

Console.WriteLine($“{namedLetters.Alpha}, {namedLetters.Beta}“);

Jak byste to namodelovali správně v UML?

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.

Zanechat odpověď

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