7.5.2 Properties: 操作

操作可以有参数。例如,一个Person对象有一个通过日期函数表示的收入。对于一个Person aPerson和一个日期aDate,这个操作可以按照如下来访问:

aPerson.income(aDate)

这个操作调用的结果是该操作的返回类型,本例中是整型。如果该操作有输出参数,那么该操作的结果是一个包含所有输出参数和返回值的元组。举个例子,如果 income 操作具有一个输出参数 bonus,那么上述操作调用的结果的类型是 Tuple( bonus: Integer; result: Integer)。你可以使用输出参数的名称和关键字result来访问这些值。例如:

aPerson.income(aDate).bonus = 300 and
aPerson.income(aDate).result = 5000

注意输出参数需要包含在操作调用中,所有输入参数的值都需要提供。

定义操作

操作自身可以由一个后置条件约束来定义。这样的约束的泛型是«postcondition»。操作返回的对象可以使用result来引用。它使用如下的形式:

context Person::income(d: Date): Integer
    post: result = age * 1000

定义的右手边可以引用正在被定义的操作(即这个定义可以是递归的),只要这个递归不是无限的。在一个前置或后置条件中,建模者可以使用操作的参数。当操作没有输出参数时,result的类型就是操作的返回类型,上面的示例中是整型。当操作有输出参数时,返回类型是一个元组,上面已经说过了。具有输出参数 bonus 的 income 操作的后者条件可以采用如下形式:

context Person::income(d: Date, bonus: Integer): Integer
    post: result = Tuple {bonus = ..., result = ...}

要引用一个没有参数的操作或方法,具有空参数列表的括号是必须的:

context Company inv:
    self.stockPrice() > 0

results matching ""

    No results matching ""