uml类图(二):用StarUML构造披萨饼

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wx5040257/article/details/86438317

综述:

StarUML是一种生成类图和其他类型的统一建模语言(UML)图表的工具。StarUML(简称SU)可以创建UML类图,并能够自动生成Java的“stub code”。SU也可以做JAVA逆向工程,以产生相应的UML图表。

在本教程中,我们将使用SU设计一个pizza饼。执行下列步骤,可以创建如下面所示的UML图。SU可以生成反映类结构的代码,而不是任何对象的具体行动。因此,在使用SU创建图表后,你会为此stub code添加剩余的功能性代码,填写每种方法本来应该做的事。

  1. 启动

启动starUML程序。

2. 添加新工程

单击file--->New Project, 如图所示

3. 选择工程

在右边的“Model Explorer”框中选定“Untitled”。

 

4.设置profile

通过“Model/Profile...”菜单去设置工程所需的profile(JAVA Profile 和UML Standard Profile)。这决定了工程所使用的规则和约定。一定要包含"JAVA Porfile"这一项目。

5. 添加模块

通过“Model”主菜单,或右击选定的模型,可以" Add/Design Model "

6. 添加类图

通过“Model”主菜单,或右击选定模型,可以“Add Diagram/Class Diagram”:

 

7. 保存工程

立即就保存工程,这样在出现问题的时候,您就不会丢失信息。

从“File ”菜单,选择“Save” ,并选择一个地方以保存工程。你的StarUML项目现在应该看起来的是这样的:

8. 创造图表

现在,开始真正创造图表,从默认就在屏幕的左边的“Toolbox”选择“类”图标,然后左键单击diagram窗口的某处。这样就使用通用名字创造了一个新的类。双击,将类改名为Circle。

9. 添加属性

右击图中的目标,在弹出菜单中选择“Add”中的“Attribute”(被标示为绿色),为其添加一个属性(或者域),填入期望的名字“_radius”。

  1. 具体的数据类型,在属性面板(右下侧的窗口)。 在窗体右下边的Properties面板中,找到“Type”输入框,输入double作为_radius属性的类型。
  2. 类的内部数据(域/属性)都是私有的,因为他们是严格由类内部使用的。所以,在Properties面板中将_radius设置为“私有”.

10继续进行设计

重复同样的过程,添加所谓的名字叫做Rectangle的类和double型的私有成员_width和_height。

11.创造 IShape interface

  1. 从toolbox中,选择“Interface”,并点击图表的某处。将其改名为IShape。创建以后,选中它。
  2. 在顶部工具栏,选择 “Stereotype Display” 下拉按钮,将值改变为“None”。这将改变以往的圆形形状,使其变为成长方形。
  3. 还是在顶部工具栏,取消选中" Suppress Operations "。这将使我们能够看到接口所拥有的方法。

  1. 向IShape 接口添加返回值为double的getArea方法。
    1. 可以通过右击interface的图标,在弹出菜单中点击红色的“Operation”按钮,然后输入getArea。
    2. 设定返回值类型。在“Model Explorer”中展开IShape节点,右击你刚刚创建的getArea方法,并选择“Add Parameter”。在“Properties”框中,将参数的名子变为空,将“DirectionKind”变为“RETURN”,将“Type”变为dboule。
  2. 将IShape和getArea的IsAbstract属性框打上勾,他们在图标上的名字将变为斜体。这是UML的标准,表示这是接口或者其他纯虚实体。

12 添加类和接口的关系

  1. 可以通过从toolbox中选择表示“Realization”的箭头,并从Circle拖拽向IShape,使Circle实现接口IShape。重复同样的过程,为Rectangle添加实现关系。这是添加了Circle 和 Rectangle对于IShape接口的实现关系。
    1. 如果想使连接线表现为直角的方式,右击连接线,并选择" Format/Line Style/Rectilinear"菜单。你通过这种方式,使箭头重叠在一起,可以使你的图看起来更整洁。

13 添加类基于接口的行为(这一步可以跳过)

  1. 由于Circle和Rectangle类都实现了IShape接口,就必须有同样的行为(方法)。
    1. 在“Model Explorer”面板中,复制getArea法(按Ctrl-C或者右键点击并选择Copy菜单),并粘贴到Circle和Rectangle类。
    2. 这些实现了的方法在Circle和Rectangle类中都不是抽象的,而是具体的。这是因为他们实际上是执行一些特定行为(例如,为一个圆形和长方形分别计算面积) ,所以不要勾选IsAbstract框。

14 你的图现在应该是这样的:

 

15 添加Pizza类

  1. 向Pizza添加double型的私有域_price。
  2. 添加返回double类型的共有操作getPrice。

16 为Pizza类添加IShape 的引用

  1. 从toolbox中选择" DirectedAssociation "箭头,点击Pizza类,并向IShape拖拽 。
  2. 为_shape创建一个“获得者”方法,名字叫做getShape,返回IShape 。这就是创建一个行为,名字是getShape,返回IShape 。

17 为pizza类添加构造函数

  1. 为Pizza添加构造函数,右击,在弹出的“Add” 菜单中选择“Operation”。从这里,增加一个普通的带有dboule型price参数和IShape类型shape参数的操作
  2. 增加一个输入参数,就像之前增加了一个返回型的输出参数一样,你指定的参数的名称,如价格和形状等,以及适当的数据类型。
  3. 为Circle增加一个带有double型的radius参数的构造函数。
  4. 为Rectangle增加一个带有double型width和height参数的构造函数。

18  你的图现在应该是这样的:

19 添加Test_Pizza类

为了说明UML类图更多的功能,又增加了一个叫做“Test_Pizza”的类,它用作测试目的,并使用到Pizza和IShape类。

  1. 两个类之间的关系有多种形式。举例来说,一个类可以实例化另一个类,而不是将其作为一个成员。又或,一类的方法可能需要另一个类作为输入参数,保留一个引用仅仅是为这个方法的执行。
  2. 通过从toolbox中选择“Dependency”箭头,从一个类拖向他所以来的类,来添加不通类之间的依赖关系。在这个例子中, Test_Pizza 依赖于Pizza,Circle和Rectangle类,因为它实例化了它们。
  3. 从Properties box选择name属性,或者双击图表上的“依赖线”,可以为依赖关系添加标签。特别的是,当一类实例化另一个类,我们会把依赖线叫做“instantiates”。
  4. 你可以选中并拖动依赖线的标签,以达到更美观的效果。
  5. 依赖关系不会影响代码生成。

20 你的图现在应该像本文最开始所示。

21 对你的图随意做些修改。

你还可以拖动你的类图,并且使箭头以不通的方式展示(使箭头显示为直线,选择一个箭头,右击它,弹出菜单中选择“Line Style”,并选择“Rectilinear” )。你一定要体验这个工具,并去了解它。

22 保存项目

在“File”菜单中,选择“Save”。 SU的所有资料只有一个单一的项目文件,所以你目前应该只有一个文件生成。

23 导出

将图表导出为其他格式,例如图片等,是非常有用的。您可以通过选择“File”菜单的“Export Diagram” ,并且选择合适的文件类型来执行改操作。

24 生成Java stub代码:

  1. 点击主菜单的“Tools->Java”菜单,选择“Generate Code”。

  1. 从对话框中选择你的模块(这里可能Model1),点击“Next”。
  2. 为了使你的模块或者图标的所有类都生成stub code,选择“Select All”然后按“Next”。
  3. 选择一个有效的输出目录,“Next”。
  4. 请务必选中“Generate the Documentation by JavaDoc”,“Generate empty JavaDoc”,所有其他复选框不选中,“Next”。
  5. 现在StarUML将从你的图产生代码,点击“Finish”退出对话框。
  6. 现在,您可以编辑生成的代码,以增加应用。

 

猜你喜欢

转载自blog.csdn.net/wx5040257/article/details/86438317