13.2.3 语义

行为

行为是一个随时间动态出现的事件规约(可以参见13.3中UML中对事件的显式建模)。该规约可能对在什么情况下会出现什么事件进行规定,或者对自然而然的行为进行描述,或者对可能的事件序列进行说明。每个行为至少定义一个事件,它的调用事件。可以通过实现为方法(method)或行为分类符的分类符行为(classifierBehavior)的行为特征来对行为进行直接调用。

每一次调用所产生的实际事件出现序列(与行为规约一致)称作该行为的一个执行轨迹(execution trace)。执行轨迹总是以行为的调用开始,然后可能无期限的持续(如果行为不终止的话),或者它可能由于一个终止事件的出现而结束,此时行为的执行被称作执行完毕。行为可能正常结束;或者它抛出一个异常而结束,此时,如果行为是同步调用的,异常被扩散到调用者(参见15.5.3对异常的讨论)。执行轨迹中的事件出现包括由该行为造成的出现,例如属性值变化、对象的创建和销毁,以及其它行为的调用,还包括行为中那些触发响应的出现,例如对监测值的改变或者一个信号实例的receipt。

UML中的行为是类,这意味着它们可以被实例化为对象。行为的实例对象被称为是行为执行。调用一个行为相应的会实例化该行为,并且对于每一个行为执行都有一个特定的执行规矩。

由于行为是类,它可能被特化,而且它也可能拥有自己的结构化特征和行为特征。这些特征可以在该行为的规约中被引用。行为的一个执行可能会访问这些特征,例如读取和修改行为的属性。行为的公开特征还可以在行为之外被引用,如果类特征一样。

一个行为可以被多次调用。一个可重入(reentrant)行为(即isReentrant属性为真)可以在之前的调用还没有结束之前被再次调用(这是缺省的)。另一方面,一个非可重入行为(即isReentrant属性为假)不应该在它之前的一个调用还没结束之前被再次调用。一个可重入行为可能同时有多个正在进行的执行,但一个非可重入的行为在任意时刻之多有一个还没有完成的执行。如果一个调用行为试图调用一个已经有一个未完成的执行的非可重入行为,那么这个调用者会被阻塞直到既有的执行结束(或者如果执行永远不结束,那么就会无期限等待)。

行为可以被同步或异步调用。同步调用意味着调用行为持有一个被调用行为执行的引用并等待该执行的结束。另一方面,异步执行意味着被调用行为与调用行为并发执行。

行为的前置条件precondition)定义了行为被调用时应该满足的条件。在行为的详细规约中可以假设这些前置条件(成立)。调用一个前置条件不满足的行为的语义是有意未定义的。

行为的后置条件postcondition)是行为成功结束(假定前置条件满足的话)后应该满足的条件。在行为的详细规约中后置条件应该被满足。

results matching ""

    No results matching ""