行为分类符

BehavioredClassifier(行为分类符)是一种分类符,它可能有ownedBehaviors,其中最多一个可以被规定为是该行为分类符的行为。反过来,行为分类符是它所拥有的ownedBehavior的上下文(context)。它们的规约可以引用上下文行为分类符以及其它对该上下文行为分类符可见的元素的特征。

并不直接是某个行为分类符的一个ownedBehavior的行为仍然可能有一个上下文。为了鉴别一个不直接是一个ownedBehavior的行为的上下文,从该行为的所属关系链找到第一个到达的行为分类符(如果有的话)。如果有这样一个行为分类符,那么它就是上下文,除非它自身有一个非空的上下文,此时这个上下文也是最初分类符的上下文。举个例子,由一个行为分类符所拥有的状态机中的entry行为的上下文是拥有该状态机的分类符,而不是这个状态机。

被一个类以nestedClassifier(参见11.4)而非ownedBehavior所直接拥有的行为并不把该类作为它的上下文。类的nestedClassifiers只是简单的内嵌到类中并将其作为一个命名空间。作为一个nestedClassifier,行为可以看到命名空间类中定义的元素和其它对该类可见的元素;根据行为自身声明的可见性,它有可能在类外可见。但是它作为一个独立行为的语义不会因为内嵌在类中而受到影响。

如果行为有上下文,那么该行为的一个执行总是与该上下文行为分类符的一个实例(上下文对象)相关联。没有上下文行为分类符的行为仍然可能以独立的方式被调用。此时,行为执行充当它自己的上下文对象。当上下文行为分类符不能被实例化的时候,行为执行也充当它自己的上下文对象,也就是说,它可能是一个isIndirectlyInstantiated=true的构件(参见11.6)或者是一个协作(参见11.7)。因此,行为执行总是有一个上下文对象,不管该行为是否有一个显式的、可实例化的行为分类符。

行为分类符可能有一个可区分的ownedBehavior称为它的classifierBehavior(分类符行为)。分类符行为描述了分类符实例在它的生命周期过程中可能经历的行为。行为分类符的分类符行为在所属行为分类符的一个实例被创建的时候认为被调用,同时产生的执行把新实例作为它的上下文对象。当该实例被销毁时它终结。

分类符行为的精确语义依赖于拥有它的行为分类符的种类。举个例子,协作(参见11.7)的分类符行为代表了所有部分自然而然出现的行为,而类的分类符行为指示类的实例的行为,与它的任意部分的行为是分离的。然而,一个被动类(isActive=false)不应该有一个分类符行为

results matching ""

    No results matching ""