内容


使用 Rational Modeling Extension for Microsoft .NET 对 C# 应用程序进行建模,第 1 部分

使用 C# 用户配置档案和类型库建模

Comments

系列内容:

此内容是该系列 # 部分中的第 # 部分: 使用 Rational Modeling Extension for Microsoft .NET 对 C# 应用程序进行建模,第 1 部分

敬请期待该系列的后续内容。

此内容是该系列的一部分:使用 Rational Modeling Extension for Microsoft .NET 对 C# 应用程序进行建模,第 1 部分

敬请期待该系列的后续内容。

IBM Rational Modeling Extension for Microsoft .NET 使 .NET 应用程序开发人员能够使用 Rational 建模工具来设计应用程序。该扩展可以在 IBM® Rational® Software Modeler、IBM® Rational® Systems Developer 和 IBM® Rational Software Architect 中使用,并且它包含对 C# 应用程序建模的支持。本文,系列的第 1 部分,利用该扩展中的 C# 用户配置档案和类型库来介绍了 C# 结构和概念的建模。此处的实例利用该库对以下这些元素建模:

  • 类型
    • 结构(struct)
    • 委托
    • 枚举(enum)
  • 字段
  • 方法

要对 C# 应用程序建模,您需要使用 Rational Modeling Extension for .NET 提供的 C# 用户配置档案和类型库。要这样做,您要遵照这些基本步骤,后面的部分将更详细地阐述这些步骤:

  1. 创建空的 UML 模型。
  2. 导入 C# 基本类型库。
  3. 应用 C# 用户配置档案。

C# 基本类型库提供 C# 语言中的基本数据类型,例如 longbyteshort,等等。C# 用户配置档案包括各种适用于 UML 类、属性、操作等等的原型。通过利用那些原型,您可以设计 C# 结构。用户配置档案中可用的原型的实例是 <<CSharpIndexer>><<CSharpDelegate>>

注意:
一般的 UML 概念,例如泛化、实现,和可见性,有相同的含义,本文中不做阐述。然而 UML 中的 Package 可见性映射为 C# 中的 internal 可见性。

步骤 1. 创建新模型

注意:
此处使用的实例只是为了举例说明概念,而可能不代表任何应用程序的真实设计。

开始设计一个简单的图形库:要这样做,您需要利用 New UML Project 向导(图 1)在新的 UML 工程中创建空的模型。

图 1. New UML Project 向导
New UML Project 向导的屏幕抓取
New UML Project 向导的屏幕抓取

步骤 2. 导入用户配置档案和类型库

  1. 现在,在 Modeling 透视图中,从 Project Explorer 中选择模型。
  2. 单击右键,并在弹出菜单中选择 Import model library(图 2)。
图 2. 导入模型库的弹出菜单
导入模型库的弹出菜单的屏幕抓取
导入模型库的弹出菜单的屏幕抓取
  1. Deployed Library 列表中选择 C# Primitive Types(图 3)。
图 3. 导入 C# 基本类型库
导入 C# 基本类型库的屏幕抓取
导入 C# 基本类型库的屏幕抓取

步骤 3. 应用 C# 用户配置档案

  1. 要应用 C# 用户配置档案,在 Project Explorer 中选择模型。
  2. Properties 视图中,选择 Profiles 选项卡并单击 Add profile
  3. Deployed Profile 列表中选择 C# profile(参见图 4。)。
图 4. 向模型应用 C# 用户配置档案
向模型应用 C# 用户配置档案的屏幕抓取
向模型应用 C# 用户配置档案的屏幕抓取

如何对各种类型建模

您可以使用 Rational 建模扩展对各种类型建模,其中包括类、结构、委托,和枚举。以下的子部分介绍了基本的过程。

对类和接口建模

将 C# sharp 类简单地建模为一个 UML 类。然而,要使用 C# 专用的修饰符,例如 new、protected internal、static,和 unsafe,您需要应用 <<CSharp class>> 原型,并且设置其属性值。图 5 中的实例使用了应用了 <<CSharp Class>>GraphicObject 类,只是为了说明。因为我们不使用任何原型属性,所以我们保持默认值。

注意:
只有当您设置至少一个原型属性值时,使用来自 C# 用户配置档案的原型。

图 5. 对 C# 类建模
对 C# 类建模的屏幕抓取
对 C# 类建模的屏幕抓取

类似地,将 C# 接口 建模为 UML 接口。同样,如果您需要使用专用的修饰符,例如 newprotected internal,和 unsafe,您可以使用 <<CSharp Interface>> 原型。

对结构建模

应用 <<CSharp Struct>> 原型将 C# 结构(struct)建模为 UML 类。C# 专门的修饰符,例如 new、protected internal,和 unsafe<<CSharp Struct>> 中可用的 Boolean 原型属性。图 6 中的实例应用 <<CSharp Struct>> 对 C# point 结构建模。

图 6. 对 C# struct 建模
对 C# struct 建模的屏幕抓取
对 C# struct 建模的屏幕抓取

对委托建模

应用 <<CSharp Delegate>> 将 C# 委托(delegate)建模为 UML 类。同 struct 类型一样,C# 专用的修饰符,例如 new、protected internal,和 unsafe 是可用的 Boolean 字符串属性。原型化为 <<CSharp Delegate>> 的 UML 类应该不包含任何属性。

另外,在这样的 UML 类中,应该有一个单独的 UML 方法与委托类同名。该方法的标记应该与为其相应的 C# 委托而声明的标记相同。对于图 7 中的实例,我们通过将 <<CSharp Delegate>> 原型应用于 UML 类来对名为 <<handleResize>> 的 C# 委托建模。该类有一个名为 <<handleResize>> 的 UML 方法,它有两个 Point 类型的参数,并且返回 C# bool 类型。

图 7. C# 委托:bool handleResize(Point start,Point end)
C# 委托:bool handleResize(Point start,Point end) 的屏幕抓取
C# 委托:bool handleResize(Point start,Point end) 的屏幕抓取

要给示例委托建模:

  1. 首先,创建 UML 类,并将其命名为 handleResize
  2. 现在,向其应用 <<CSharp Delegate>> 原型。
  3. 添加 UML 操作,并将其命名为 handleResize
  4. 现在选择新添加的方法,在 Properties 视图中,打开 Parameters 选项卡,并插入新的参数。
  5. 将该参数命名为 start,并将其方向设置为 In,然后在 Browse type 对话框中,选择 Point struct 作为类型。
  6. 利用相同的过程添加另一个参数,并将其命名为 end
  7. 添加另一个参数,设置其方向为 Return。在导入的 CSharpPrimitiveTypes 库中浏览类型,将其类型设置为 bool
图 8. 从导入的 C# 基本类型库中选择类型
从导入的 C# 基本类型库中选择类型的屏幕抓取
从导入的 C# 基本类型库中选择类型的屏幕抓取

对枚举建模

将 C# 枚举(enum)建模为 UML 枚举。当您需要设置 newprotected internal 修饰符时,可以应用 <<CSharp Enum >> 原型。该原型还允许您指定不同于隐含默认值的枚举基本类型。要这些做,您需要将 <<CSharp Enum >> 中的原型 implementation_type 属性设置为列出的枚举基本类型中的一个,例如 intbyte,或 short。枚举常量可以随意地拥有表示相应的 C# 枚举常量的常量默认整数值。

要对示例枚举建模:

  1. 首先创建 UML 枚举,并将其命名为 Colors
  2. 向其应用 <<CSharp Enum >> 原型,以便您可以指定不同的基本类型,例如 short。如果您不想要设置任何原型属性,那么您不需要应用原型。
  3. 添加枚举常量 RED,并将其值设置为 10
  4. 类似地,添加枚举常量 BLUEGREEN,值分别为 2030
图 9. C# enum:包含 RED、BLUE,和 GREEN 枚举常量的 Color
C# enum:包含 RED、BLUE,和 GREEN 枚举常量的 Color 的屏幕抓取
C# enum:包含 RED、BLUE,和 GREEN 枚举常量的 Color 的屏幕抓取

对字段建模

将 C# field 建模为 UML 属性,从而作为 UML 属性或联系端。此外,当您需要设置 newprotected internalunsafevolatile,和 const 修饰符时,可以应用 <<CSharp Field >> 原型。其他的修饰符,例如 staticreadonly 是在 UML 属性的一般的属性区中是可用的。

<<CSharp Field >> 原型将 C# constant 建模为 UML 属性,并将 Boolean 原型属性常量设置为 true

对于此实例,在 Point 结构中将示例字段和常量建模:

  1. 创建 UML 属性 X,在 C# 基本类型库中,像前面介绍的那样,将其类型设置为 int
  2. 类似地,创建另一个 UML 属性 Y,将其类型设置为 int。这形成了两个 UML 属性 XY,及 C# 字段。
  3. 要创建 C# 常量,就添加 int 类型的 UML 属性 ORIGIN_X,应用 <<CSharp Field >> 原型,并设置原型属性为 constant=true
  4. 设置默认值为 0
  5. 添加另一个 int 类型的 ORIGIN_Y 常量,默认值为 0,应用同样的原型,并将属性设置为 constant=true。现在,ORIGIN_X 和 ORIGIN_Y 代表 C# 常量。(参见图 10。)
图 10. 拥有字段 X 和 Y,及常量 ORIGIN_X 和 ORIGIN_Y 的 struct Point
拥有字段 X 和 Y,及常量 ORIGIN_X 和 ORIGIN_Y 的 struct Point 的屏幕抓取
拥有字段 X 和 Y,及常量 ORIGIN_X 和 ORIGIN_Y 的 struct Point 的屏幕抓取

对方法建模

用可选的 <<CSharp Method>> 原型将 C# method 建模为 UML 方法。如果您想要设置修饰符时,例如 newoverrideexternvirtualprotected internal,和 unsafe,您需要应用原型。您可以设置 UML 方法的一般属性区中的其他的修饰符,例如 abstractstatic。如果您需要在方法上设置 sealed 修饰符,那么选择(启用)方法的 Leaf 属性。

void method 建模为无返回类型的。按以下方法设置方法引起的异常:

  1. 右键单击 UML 方法,然后打开 UML Properties 菜单。
  2. 选择 Raised Exceptions 区,插入各种异常。

对于此实例,为名为 display 的简单的 C# 方法建模,其返回类型为 bool,包含 GraphicException。该方法的参数类型为 DrawingSurface

  1. 创建两个 UML 类,DrawingSurfaceGraphicException,分别用做示例方法的参数类型和异常类型。
  2. Point 类中创建名为 displaypublic UML 方法,在 C# 基本类型库中,像前面介绍的那样,将返回类型设置为 bool
  3. 向方法添加名为 surface 的参数,并将类型设置为 DrawingSurface
  4. Project Explorer 中,右键单击 UML 方法,并选择 UML Properties 菜单。
  5. RaisedException 部分中,单击 Insert,插入新的异常类型。
  6. 选择 GraphicException 类作为要添加的异常(参见图 11 和图 12。)
图 11. C# 方法 display(),返回类型为 bool,且参数类型为 DrawingSurface
返回类型为 bool 的 C# 方法 display 的屏幕抓取
返回类型为 bool 的 C# 方法 display 的屏幕抓取
图 12. 向方法 display() 中添加异常类型
向方法 display() 中添加异常类型的屏幕抓取
向方法 display() 中添加异常类型的屏幕抓取

下一部分

本文介绍了如何使用 Rational Modeling Extension for Microsoft .NET 中的 C# 用户配置档案和类型库。当完成这些练习之后,您应该能够创建包含 C# 类、struct、委托、接口、枚举、字段,和方法的简单模型。本系列的 第 2 部分 将介绍 C# 指示器、属性、构造方法、析构方法,和操作符的建模。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational
ArticleID=284493
ArticleTitle=使用 Rational Modeling Extension for Microsoft .NET 对 C# 应用程序进行建模,第 1 部分: 使用 C# 用户配置档案和类型库建模
publish-date=01282008