
4.5 绘制类图
类图在UML的静态机制中是重要的组成部分,在UML众多图中占据了一个相当重要的位置。它不仅可以实现设计人员所关注的重点,而且还可以根据类图产生代码。
4.5.1 创建类图
在Rose中可以创建一个或多个类图,而类的属性和操作都可以体现在类图中。
1.创建单个类
启动Rose,在“浏览器窗口”中右击【Logical View】选项,执行【New】|【Class Diagram】命令,即可创建一个类图。

创建类图后,双击类图名,可以为类图重命名。
2.创建类包
对于需要创建多个类的类图项目来讲,可以运用“包”功能对类进行划分。
在“浏览器窗口”中右击【Logical View】选项,执行【New】|【Package】命令,创建一个命名为“Business”的包。

使用同样的方法,创建另外一个命名为“GUI”的包。

然后,按照上述方法在包中创建一个类,或者直接右击包名称,执行【New】|【Class Diagram】命令,也可以在该包内创建一个新类。

提示
创建类图之后,可以在“浏览器窗口”中右击类图,执行【Delete】命令,删除类图。
4.5.2 操作类图
创建类图之后,便可以为其添加类、属性和操作等一系列的元素了。但在操作类图之前,还需要先来了解一下类图中的一些常用工具。
1.类工具
在“浏览器窗口”中,双击类图的类标,打开“模型图窗口”,此时在该窗口左侧的【工具箱】中将显示有关类图的一些常用工具。

对于类图【工具栏】中的常用工具,具体说明如下表所述。

2.添加类
选择【工具箱】中的【Class】选项,在“模型图窗口”中单击即可绘制出一个类。

绘制类时,类名是自动处于激活状态的,此时可以直接输入类名称。另外,当类名处于未激活状态时,则可以单击类名称进行重命名。
提示
创建类后,可以在“浏览器窗口”中右击类,执行【Delete】命令,删除类。
除此之外,可以右击类,执行【Open Specification…】命令,在弹出的【Class Specification】对话框中,重命名类名称。

3.添加类属性
属性是类的一个特征,用于描述类对象所具有的一系列的特征值。右击类,执行【New Attribute】命令,即可添加一个属性。此时,属性名处于激活状态,可直接输入属性名称。

添加属性之后,还可以为属性指定附加信息,附加信息包括属性值和属性值类型。

属性值的类型包括字符串(sting)、浮点数(floating-point)、整数(integer)和布尔(bool)等类型。若要为属性指明属性值,则需要在属性后面直接加上类型,中间使用冒号隔开。
4.添加类操作
操作的创建方法和属性大体一致,右击类,执行【New Operation】命令,即可添加一个操作。另外,操作也可以像属性那样添加指定值和值类型,其添加方法完全一致。

添加属性和类之后,可通过右击类,执行【Options】|【Show All Attributes】和【Show All Operations】命令,隐藏或显示属性和操作。
4.5.3 类图的规范
创建类图之后,右击类图,执行【Open Standard Specification…】命令,在弹出的对话框中设置类图的规范,包括General、Detail、Operations、Attributes、Relations等。

1.General
在对话框中,激活【General】选项卡,该选项卡主要用于设置类的名称、类型、构造型和输出控制等,其各选项的具体说明如下所述。
□ Name(名称) 用于输入或修改类的名称。
□ Type(类型) 用于设置类的分类。
□ Stereotype(构造型) 用于设置角色,包括Actor(参与者)、Boundary(边界)、Business actor(业务参与者)、Business entity(业务实体)、Business worker(业务工人)、Control(控制)、Domain(域)、Entity(实体)、Interface(接口)、Table(表格)、View(视图)。
□ Export Control(输出控制) 用于选择输出访问操作的控制。
而对于Export Control(输出控制)选项,又包含下列4种类型。
□ Public 在某一系统的内部全体类,均可访问该类。
□ Protected 该类具有保护型的特质,允许其他类在“嵌套或友元以及相同的类内部”开展访问操作。
□ Private 该类仅可在“友元及相同类内部”进行访问操作。
□ Implementation 仅允许在相同包下的其他类进行访问操作。
2.Detail
激活【Detail】选项卡,该选项卡主要用于设置多重性、存储需求和并发性等选项。

该选项卡中,各选项的具体说明如下所述。
□ Multiplicity(多重性) 主要应用于关联、聚合、组合等类图关系中,表示关联对象的具体量度或数量大小的区间,表现形式可以使用数字结合英文与“*”。其中,0..0表示为0种数量,0..1表示为0或1种数量,0..n表示0或多种数量,1..1表示1种数量,1..n表示1种或多种数量,n表示多种数量。
□ Space(存储需求) 表示存储属性,用于输入存储路径之类的内容,该类选项在建模中使用情况较少。
□ Persistence(持续性) 该属性包括Persistent(持久化)和Transient(临时)。
□ Concurrency(并发性) 该属性适用于正在活动中的有关对象,方便明确其他活动中的对象调配使用此操作时所得到的有效行动。
而对于Concurrency(并发性)选项,又包含下列4种类型。
□ Sequential 创建类图时默认生成。在仅仅包含某个控制线程时,类可在正常状态下使用。而当具备2个以上的控制线程时,则类未必能保证正常运行。
□ Guarded 呈现2个以上的控制线程,使类可以保持正常运行,并且差异化的类需要互相合作,以确保彼此间互不干扰。
□ Active 表示类生成了具备自身所需要的必须控制线程。
□ Synchronous 呈现2个以上的控制线程,保证类可以正常运行而无须同其他类产生协作关系,使类自己可解决互相排斥时的问题。
3.Attributes
激活【Attributes】选项卡,该选项卡主要用于设置构造型、名称、来源、类型和初始化等选项。
该选项卡中,各选项的具体说明如下所述。
□ Stereotype 该选项需要手工输入,类似于模板,有助于在元素的规范中添加全新的内容,该选项在类图中不经常使用。
□ Name 用于显示属性的名称。
□ Parent 用于显示类名。
□ Type 表示属性名称的类型。
□ Initial 表示默认的初始化数据。

4.Operations
激活【Operations】选项卡,该选项卡主要用于设置构造型、方法、返回类型和所在的类等选项。

该选项卡中,各选项的具体说明如下所述。
□ Stereotype 该选项需要手工输入,相当于为元素增加新的模板,以扩大元素的内容库,该选项在类图中不经常使用。
□ Operation 用于显示操作方法的名称。
□ Return type 表示“方法返回的类型”。
□ Parent 用于显示类名称。