![]() |
Operations diagram of the Kernel package |
Operace (třída Operation) je chovací vlastnost klasifikátoru, která je určena jménem, typem, parametry a omezeními pro volaní této operace.
Operace může mít podmínky, které musí být splněny před voláním (precondition), během běhu (body condition) a po ukončení volání (postcondition). Body condition lze definovat pouze pro operace typu dotaz (isQuery = true). postcondition a bodyCondition nemusí být splněny v případě, že operace vyvolá výjimku. bodyCondition vymezuje vracený výsledek. Rozdíl mezi bodyCondition a postcondition je v tom, že bodyCondition může být přepsána (override) při redefinici, kdežto postcondition mohou být pouze přidávány.
Atribut isQuery určuje, zda jde pouze o dotaz (true) či zda operace mění stav instance (false).
Operace smí mít pouze jeden návratový parametr.
Operace může mít návratový typ (asociace s třídou Type). Jedná se o odvozenou asociaci (očekávám, že je odvozena od parametru se směrem return).
Notace
[viditelnost] název (seznam_parametrů) [:návratový_typ] [násobnost] [řetězec_vlastností]
- Viditelnost je dána výčtovým typem VisibilityKind.
- Násobnost je násobnost návratového typu.
- Řetězec vlastností je seznam vlastností (property) oddělených čárkou. Vlastnost může být jedna z následujících:
- redefines <název_operátoru> – říká, že operace předefinuje operátor zadaného jména.
- query – říká, že operátor nemění stav systému.
- ordered – říká, že hodnota návratového typu je seřazena.
- unique – říká, že hodnoty vrácené v návratovém parametru jsou jedinečné.
- <omezení_operátoru> – omezení vztažené k operátoru.
- Seznam parametrů – jednotlivé parametry jsou oddělené čárkou.
Parametr pak má tvar:
[směr] název: typ [násobnost] [=výchozí hodnota][{řetězec vlastností}]
- Směr je dán výčtovým typem ParameterDirectionKind. Pokud není specifikováno, výchozí hodnota je in.
- Řetězec vlastností určuje další vlastnosti parametru.
Příklady
getWidth (return w: integer) {query}
+insertInvoiceItem (aInvoiceItem: InvoiceItem)
#deleteAllItems ()
-sumItems: integer
Žádné komentáře:
Okomentovat