
10.3 工具箱
为便于给类图添加项,Toolbox中包含了Class Designer选项卡。要创建一个项,可以从Toolbox中将该项拖放到设计界面上或者简单地双击它。图10-3所示的Toolbox显示了Class Designer选项卡。Toolbox中的元素分为实体和连接器两种类型。请注意Comment项,它在Class Designer内添加,但不会出现在任何代码中,因为它只是用作类图的文档。

图10-3
10.3.1 实体
在类图中可添加的实体与.NET Framework中的类型一一对应。在设计界面中添加一个新的实体时,需要指定名称。此外,还需要指定是在新文件还是现存的文件中添加。
右击实体并选择Remove from Diagram菜单项,就可以从类图中删除实体。但这种处理不会删除源代码,它只是从类图中删除实体。如果想删除相关的源代码,可以选择Delete Code菜单项。
要查看与实体相关的代码,可以双击该实体或者从右击弹出的上下文菜单中选择View Code菜单项。
下面列出Toolbox中的每一个实体。
●Class(类):通过右击弹出的上下文菜单或者Class Details窗口,可以在类中添加字段、属性、方法、事件和常量。尽管类支持嵌套类型,但无法使用设计器界面添加它们。类也可以实现接口。在图10-2中,Order类实现了IDataErrorInfo接口。
●Enum(枚举):枚举只可以包含一个成员列表,其中每个成员都可以赋值。每个成员都有一个总结评论属性,但它们只显示为成员的XML注释。
●Interface(接口):接口定义了一个类必须实现的属性、方法和事件。接口也可以包含嵌套类型,但是设计器不支持添加嵌套类型。
●Abstract Class(抽象类):抽象类的行为与类一样,不同之处是它们在设计界面上显示为斜体,并标记为Abstract(C#)或MustInherit(VB)。
●Struct(结构):除了注释以外,结构是唯一在设计器上显示为长方形的实体。结构与类相似,也支持字段、属性、方法、事件和常量。它也可以包含嵌套类型。但是与类不一样,结构不包含析构函数。
●Delegate(委托):尽管委托在类图上显示为一个实体,但它不能包含嵌套类型。它只能包含定义委托签名的参数。
10.3.2 连接器
实体之间可以建立两种类型的关系。在类图上这些关系是用连接器来表示的。下面介绍这两种连接器。
●Inheritance(继承):Inheritance连接器用于表示类之间的继承关系。
●Association(关联):如果一个类引用了另一个类,在这两个类之间就存在关联。这是通过Association连接器表达的。
如果关系是基于一个集合,如Order对象列表,就可以用一个集合关联来表达。图10-2所示的集合关联Orders连接了Customer和Order类。
类关联可以定义为一个类的字段或者属性,或者类之间的关联。在字段、属性或者关联上右击所弹出的上下文菜单,可以对这两种连接进行切换。
为把属性表示为集合关联,需要右击类中的属性,选择Show as Collection Association命令。这会隐藏类中的属性,并把它显示为类图中相关类的连接器。
在Toolbox中选择所需的关系,即可在类图中创建继承或关联关系。然后,单击两个类中的一个(对于继承,单击派生类;对于关联,单击将包含关联属性的类),然后按下鼠标左键并将鼠标移动到第二个类上,最后释放鼠标左键。