9.6.4 表示法
如果在图中表示,操作以如下文本串的格式显示:
[<visibility>] <name> ‘(’ [<parameter-list> ‘)’ [‘:’ [<return-type>] [‘[’ <multiplicity-range> ‘]’] [‘{’ <oper-property> [‘,’ <oper-property>]* ‘}’]]
其中:
- <bisibility>是操作的可见性(参见7.4)。<visibility> ::= ‘+’ | ‘-’ | ‘#’ | ‘~’
- <name>是操作的名称。
- <parameter-list>是遵循如下格式的操作参数列表:
- <parameter-list> ::= <parameter> [‘,’ <parameter>]* 其中<parameter>在9.4.4中定义。
- <return-type>返回结果参数的类型(如果操作定义了一个的话)。
- <multiplicity-range>是返回类型的multiplicity(参见7.5)。
- <oper-property>指示操作的属性。
- <oper-property> ::= ‘redefines’ <oper-name> | ‘query’ | ‘ordered’ | ‘unordered’ | ‘unique’ | ‘nonunique’ | ‘seq’ | ‘sequence’ | <oper-constraint> 其中:
- ‘redefines’ <oper-name>意味着该操作重定义了由<oper-name>指定的一个被继承的操作,其中<oper-name>可能是限定的。
- ‘query’意味着操作不改变系统的状态。
- ‘ordered’适用于返回参数是多值且有序的。
- ‘unordered’适用于返回参数是多值但无序。
- ‘unique’适用于返回参数是多值但没有重复。
- ‘nonunique’适用于返回参数多值可能有重复。
- ‘seq’或‘sequence’适用于多值返回参数且它的值构成一个有序包,即isUnique=false且isOrdered=true。
- <oper-constraint>是一个应用到该操作的约束。参数列表可以被抑制。
- <oper-property> ::= ‘redefines’ <oper-name> | ‘query’ | ‘ordered’ | ‘unordered’ | ‘unique’ | ‘nonunique’ | ‘seq’ | ‘sequence’ | <oper-constraint> 其中:
模板操作的TemplateParameters位于操作名和操作参数之间的一个列表中。
[<visibility>] <name> ‘<’ <template-parameter-list> ‘>’ ‘(’ [<parameter-list>] ‘)’ [‘:’ [<return-type>] [‘[’ <multiplicity> ‘]’] [‘{’ <oper-property> [‘,’ <oper-property>]* ‘}’]]
已绑定模板操作的TemplateParamter绑定在操作的名称和操作参数之间的列表中。
[<visibility>] <name> ‘<<’ <binding-expression-list> ‘>>’ ‘(’ [<parameter-list>] ‘)’ [‘:’ [<return-type>] [‘[’ <multiplicity> ‘]’] [‘{’ <oper-property> [‘,’ <oper-property>]* ‘}’]]
其中 <_binding-expression-list> ::= <_binding-expression> [‘,’ <_binding-expression>]*,<_binding-expression>定义在7.3.4。
在形式TemplateParameter和TemplateParameter绑定表示法中,操作表示为:<_operation-name> ‘(’ <_parameter-list> ‘)’。
OperationTemplateParameter扩展了TemplateParameter的概念,融进了用于操作的参数:
<operation-template-parameter> ::= <parameter> [‘: Operation’] [‘=’ <default>]
<parameter> ::= <operation-name> ‘(’<parameter-list> ‘)’
<default> ::= <operation-name ‘(’<parameter-list> ‘)’
类图中操作上的异常和流参数的表示在属性字符串上有关键字“exception”或“stream”。
9.6.5 示例
普通操作:
display ()
-hide ()
+createWindow (location: Coordinates, container: Container [0..1]): Window
+toString (): String
一个模板操作:
f <T:Class>(x : T)
上述模板操作的一个绑定:
f << T -> Window >>(x : Window)
注意. 参数可以被抑制;它们由绑定来计算。