快速业务通道

Java建模: UML工作簿, 第2部分――序列图中的条件逻辑 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
  // Check to ensure the deposit is positive      if (deposit.compareTo(new BigDecimal(0.0)) > 0) {         account.credit(deposit);      }      else {         throw new ImproperDepositException();      } }

在分析阶段,您不是很关心细节,因此图只需要表明存款为正数。在常规序列图中,条件作为带有消息名的保护机制出现,位于水平调用箭头上方。这些保护条件用方括号括起,放在消息名的左侧,如图 3 所示。

图 3. 在分析期间添加的条件

上述方法和序列图之间的关系在图 4 中显现得更为清楚,我们在图 4 中看到了在设计阶段可能用到的更明确的图。当然没有显示全部方法:缺少了 else 子句。不过,图中消息箭头的语义规定只能在条件有效时发送消息。

图 4. 更明确的条件

可以通过在 Teller 类和 ImproperDepositException 之间添加另一个调用箭头来为 else 子句建模。在这个调用上会有一个与 if 相反的条件;在本例中,即存款必须小于等于 0。您不妨自己尝试为这个语句建模。

Java建模: UML工作簿, 第2部分――序列图中的条件逻辑(3)

时间:2011-01-25 IBM Granville Miller

绘制 for 循环图

如上例所示,常规序列图 -- 以及实际上所有 UML 图 -- 几乎映射了 Java 语言的语法。所以,大多数 Java 开发者对这些图都有一个直观的理解,并且可以很快地学会如何使用它们。为进一步探讨常规序列图和 Java 语言之间的一致性,我们将绘制 for 循环图,如清单 2 所示。

清单 2. for 循环

for ( int i =0; i < 4; i++) {      squareRoom.examineCorner(i); }

在序列图中,迭代是通过水平箭头上消息名之前的星号 (*) 来表示的。如果迭代的次数已知并且固定 -- 这种情况非常少见 -- 这个数字出现在星号后面的方括号中。因为大多数 for 循环处理的复杂逻辑不允许静态地确定迭代次数,因此您不会经常使用这种格式的括号表示。图 5 显示了上述 for 循环的序列图。

图 5. for 循环序列图

绘制 while 循环图

因为 while 循环将循环与条件结合起来,因此它是个非常容易接受的示例。我们将对清单 3 中显示的 while 循环绘制图。

清单 3. while 循环

while ( value.notFound() ) {      value = database.search( key ); }

我们的 while 循环图既包含条件,又包含表明迭代的星号,但您会发现,没有迭代的次数。 while 循环很少包含迭代次数 -- 除非它是一个伪装的 for 循环。图 6 显示了 while 循环图。

图 6. while 循环序列图

结束语

一般来说, 必须和 可能行为是 UML 和软件开发的基本概念。用例捕捉 必须行为;方案捕捉 可能行为。类图捕捉 必须行为;实例图捕捉 可能行为。我主要讨论这一概念是因为我发现许多人没能掌握序列图的根本灵活性,而分化成直觉和形态使用这两个极端。

在阅读这些文章时,您应该把精力集中在发展模型语义的直观理解上。随着看到越来越多的序列图并开始创建自己的序列图,您会发现许多序列图依赖于条件逻辑和图表上下文来说明图所表示的是 必须还是 可能的系统视图。随着我们深入到更加复杂的图表绘制技术,及早学习如何识别和使用这种差别将对您今后有所帮助。

除了探讨序列图绘制中 必须和 可能行为的重要性以外,我还向您介绍了如何在图中表示条件和迭代。既然您已经知道如何绘制 for 和 while 循环图,我建议您在其它 Java 构造(例如 do-while 循环)上实践一下建模表示。随着您自己练习绘制这些简单构造图,自然会逐渐加深对序列图绘制的理解。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号