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>是一个应用到该操作的约束。参数列表可以被抑制。

模板操作的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)

注意. 参数可以被抑制;它们由绑定来计算。

results matching ""

    No results matching ""