六、 UML about Bowling

现在都准备好了,我们可以开始画diagram了。我们画什么diagram呢?你最近有去打过保龄球吗?我非常享受我们公司前几天举办的保龄球赛,我猜很多人都打过保龄球,所以我们就用保龄球来作为这个UML的主题吧。让我们来画一个保龄球的计分系统的UML。
      

   这里有一些要求:

  l         一旦比赛开始就显示保龄球分数的跟踪记录;

  l         选手每次扔出保龄球后就更新分数;

  l         选手在比赛时能改变分数;

  l         当有人发起攻击时显示一个动画;

我们的目的是体验使用UML建模工具去画UML,diagram画的是否完美并不重要。那么就让我们开始吧。

七、 Draw a UseCase diagram

现在让我们开始画图吧。我们以一个用例图作为开始,我们画一个下图这样的diagram。
          

打开一个用例图将会伴随打开一些默认的project文件。在结构树视图的Usecase Diagram上点右键,选择[Open Diagram],或者双击在Diagram编辑器中打开。
          

在Diagram编辑器中,这里有一个工具按钮面板可以编辑diagram。
      

如果你想知道每个按钮的作用,你可以把鼠标放在这个按钮上,悬浮的提示信息将会显示对这个按钮的描述。在Diagram编辑器中,你可以用这些按钮切换画图的模式,比如:当你想在Diagram编辑器中移动一个元素,打开[select mode]你就可以选择你想移动的元素执行移动操作了;如果你想连续的创建某个确定的元素,你可以切换模式到[Lock Selected Mode]等等。
 

Button

Description

Select Mode. 当这个模式打开时,你就可以对某个元素执行选择、编辑、移动和改变大小的操作了。

Lock Selected Mode. 使你能够连续的创建所选择的元素。比如:你在打开Lock Selected Mode时创建一个Actor,一旦你在Diagram编辑器中添加了一个Actor,你就可以连续的创建更多的Actor。

Set Relation End to the center of the item. It places the ends of lines. (e.g. Associations, Generalizations, or Dependencies) at the center of Model Elements.

在工具面板上选择Actor,然后在Diagram编辑器中的任何地方点击后将创建一个Actor,输入“Player”作为这个Actor的name。现在让我们像创建Actor一样再创建三个用例。你可以拖拽他们移动元素所在的位置,当你想重命名他们的时候,双击这个元素的名称即可。

 

   现在我们来画Actor和三个用例之间的连线。每条线都有它们自己的意义,我们在这里需要一条称作Association的线。在工具面板上选择Association按钮去创建一个Association,你有两次点击操作,分别是点击开始目标和结束目标。首先,点击“Player”这个Actor,然后在“Start the Game”这个用例上点击,现在一条association线就画在了“Player”和“Start the Game”之间了,然后再按这种方式创建两条association线。现在再添加一个长方形,并写上“Bowling Score System”就完成了这个diagram了!

小提示:取消association操作

当你在画association线时点击在了错误的目标上,按下[ESC]或者右键就可以重做,该方法适用于两个元素之间的任何连线,比如:Generalizations、Generalizations和Dependencies。

你可能注意到当你在Diagram编辑器创建用例和Actor时也添加在了结构树视图中,同样在Diagram编辑器或者结构树视图中选择元素时,它们的property也显示在了左下角的Property视图中,你可以在这几个地方修改数据:Diagram编辑器,结构树视图,Property视图,选择 使用对你来说最方便的一个。

让我们使用Property视图来更改用例图的名称,在结构树视图中选择“UseCase Diagram”,它的property将会显示在Property视图中,将它的名称改为“Bowling UseCase Diagram”再按下[Enter]就完成了。

小提示:删除元素

要删除Actor或者用例,从它们的弹出菜单中选择[Delete from Model]或者[Delete from Diagram],提供两种方式删除元素是因为像Actor和用例这样的元素可以和其它的diagram共享,也可被用于其它的diagram。

[Delete from Diagram]
Ctrl+D

仅从当前的diagram中删除元素,在model中依然保留。

[Delete from Model]
Delete

从所有的diagram中完全删除。


小提示:缩放和滚动

我将会给你介绍JUDE中用于查看操作的特性。如果我们只是画较小比例的用例图,那么在视图中不需要用这个特性。当在处理较大比例的diagram时,特别是你需要在diagram的某些部分进行修改,JUDE的这个特性可以非常容易的进行该操作。希望显示的区域可以在JUDE的Diagram编辑器中用右键拖拽,使你可以对角的移动它们,在主菜单中选择[View]或者使用工具条可以进行放大或缩小,也可以使用Map视图指定显示你想看到的区域。

小提示:撤销和重做

JUDE的撤销和重做的特性可以让你重复执行100次!如果你到现在为止都没有用过撤销,去尝试一下看看它是怎么工作的!在你画图的时候不用担心画错了,这是件多么舒心的事!

八、Draw an Activity Diagram

现在让我们着重在“Display the Score”用例,在活动图中画出它的流程。首先,你需要在你的project文件中添加一个活动图,选择“Display the Score”用例,然后在弹出菜单中选择[Create Diagram] - [Add Activity Diagram],一个新的活动图将会被添加,并且在Diagram编辑器中打开。
     

把活动图命名为“Behavior of displaying Scores”。活动图在工具条中有下面这些按钮:
      

现在让我们来画一个下面这样的活动图。
         

活动图和流程图非常相似,它描述了事件如何流动和连接到下个动作。在这个活动图中,描述了在选手扔出保龄球后执行的事件,以及计算将要显示的分数。从这个活动图中,你将会得知在选手全中后会显示一个动画。

让我们开始创建除箭头外的所有元素,你可以像之前创建Actor和用例一样去创建它们,从工具面板选择元素,然后在Diagram编辑器中点击创建它们。你可以在Diagram编辑器或者Property视图中将EntryAction设置为ActionState。

调整大小

“Calculate numbers of knocked out pins”在ActionState中以一行显示的话过长,所以让我们调整一下这个ActionState的大小,让它的名称换行显示。调整元素的大小只需要选择元素的一个角进行拖拽。
      

现在让我们添加元素之间的箭头以显示这些动作之间的流程,这个箭头称作Transition。要画一条Transition,你可以像在用例图中画Association一样点击两个目标进行连接,但是你需要小心创建时点击的顺序,我马上会告诉你如何连续的创建T ansition。

小提示:连续的创建

l         方法1:在工具面板上打开[Selected Mode];

l         当创建元素的时候按住[Shift];

你能连续创建它们了吗,这对你来说非常有用,也非常容易。[Strike]是Transition的guard的值,点击Transition箭头,然后在Property 视图的Guard列中输入“Strike”。
    

下面我将会介绍如何画出清晰的diagram的三个技巧。

小提示:多选

这里有三种方式在Diagram编辑器中进行多选。

l         方法1:在多个元素上拖拽出一个长方形的选择域,长方形中的所有元素都将被选中;

l         方法2:在diagram的弹出菜单中选择[Select All];

l         方法3:在选择多个元素时按住[Shif];

小提示:线性对齐

在JUDE中元素可以纵向和横向对齐,使用[Align vertical center]让左边的元素垂直对齐(除了“Show an animation”),让diagram看起来整齐一点,可以用鼠标拖出一个长方形包围所有目标元素以选中它们,然后从主菜单选择[Alignment] - [Align Vertically] - [Align Vertical Center]或者选择主菜单下的工具条中的按钮。

小提示:线条样式

在JUDE中有两种类型的线条。

Normal Line Style (Default):

用直线或多角折线连接diagram 中的元素

Right Angle Line Style:

使用直角线连接diagram中的元素

线条样式默认设置为[Normal Line Stile],然而[Right Angle Line Style]有时看起来比较好,那么我们为什么在这个活动图中不用[Right Angle Line Style]呢,选择所有的线条,然后在它的弹出菜单中选择[Line Style] - [Normal]或者在工具条中选择按钮。