11.4.4 表示法

类使用分类符符号来表示。由于类是应用最广的分类符,所以不用使用关键字来指示元类是类。

类有四个必需的格间:属性、操作、receptions(参见9.2.4)和内部结构(参见11.2.4)。类也可以有用于一般性分类符介绍的可选格间(参见9.2.4)。

类的操作格间包含它的ownedOperations的图示,使用9.6.4中规定的表示法。receptions格间使用10.3.4中规定的表示法表示ownedReceptions

一个使用依赖可以把一个实例规约关联到类的一个构造函数上,来描述该构造函数操作所返回的这个单值。操作是客户,所产生的实例是提供者。实例规约可能引用该操作所声明的参数。构造函数是一个操作,它有一个返回结果参数,类型是是所属类的类型,并且它被标准的«Create» Stereotype所标注。作为该使用依赖提供者的实例规约代表了一个构造函数操作的单返回结果参数的缺省值。

属性isActive=true的类可以表示为在两边带有额外竖条的类盒子。

代表了一个元类的类可以被一个在它的名字之上或之前的可选«Metaclass» stereotype(参见第22章中的StandardProfile)所扩展。

11.4.5 示例

图11.16按照9.2.4中的分类符表示法展示了三种类Window的表示。左下的符号展示了属性和操作格间,每个都列举了特征但抑制了细节(例如缺省值、参数和可见性)。右边的符号展示了这些细节,以及可选的格间头。

注意. display()和hide()操作没有规定可见性。

图11.16 Class notation variants

图11.7在类Window的属性和操作格间内显示了可见性分组选项(参见9.2.4)。

图11.17 Class notation: attributes and Operations grouped according to visibility

图11.18展示了一个活动类的实例。

图11.18 Active Class

下面的例子使用了两个类,CarWheel。类Car有四个部分,类型都是Wheel,它们代表了轿车的四个轮子。前轮和后轮分别通过代表前轴和后轴的连接器连接起来。图11.19规定了当一个Car类的实例被创建时,Wheel类的四个实例亦被创建并被轿车实例中的组合所持有。此外,前后两个链接分别在前轮实例和后轮实例间被创建。

图11.19 Connectors and Parts

图11.20规定了一个等价的系统,它使用multiplicities来展示轮子和车轴的指派。这个图规定了会有两个前轮实例和两个后轮实例,以及每个匹配的实例有代表车轴的连接器衍生的链接所连接。

图11.20 Connectors and Parts in a structure diagram using multiplicities

图11.21展示了一个用于Car类(按照图11.19的规定)的一个实例的实例规约(参见9.8)。它描述了Car的内部结构以及所包含的四个Wheel实例如何被初始化。在这个案例中,Wheel的每个实例将会有预定义的规格和所使用的轮胎品牌。左车轮的实例给出了名称,所有的轮子实例都表示出了所扮演的角色。轮子实例的类型被抑制。

图11.21 An Instance of the Car Class

图11.22展示了Window类的一个构造函数,说明了标准的«Create» Stereotype是如何应用到makeWindow操作来标识它为一个构造函数的。

图11.22 InstanceSpecification indicating a constructor

图11.23展示了Car类的一个构造函数。这个构造函数采用了一个字符串类型的参数brand。它描述了Car的内部结构和所包含的Wheel的四个实例是如何被初始化的。在这个案例中,Wheel的每个实例将会有预定义的规格和所使用的轮胎品牌。左车轮的实例给出了名称,所有的轮子实例都表示出了所扮演的角色。轮子实例的类型被抑制。

图11.23 A constructor for the Car Class

在图11.24中,显示的表示了被扩展的类Interface实际上是一个元类(来自一个参考元模型)。

图11.23 Showing that the extended Class is a metaclass

results matching ""

    No results matching ""