0

我想显示当我在其中插入数据列表时我的 UserControl/Control 正在做什么,当用户按下某些键、选择文本等时会发生什么......

我觉得不知何故序列图并不适合显示几个循环并在循环内做一些事情。

我错了还是我该如何处理这种情况?

4

1 回答 1

1

如果您谈论的是循环,那么您将对循环中的所有元素进行一系列操作。

如果循环中的操作相当复杂,我会将循环中完成的操作单独建模为序列图。

我不认为我们可以在这里有经验法则,但是当循环本身的过程很复杂,并且循环相对不那么复杂时,我们可以将它们放在一个序列图中。

如果有循环的过程不是很复杂,但循环很复杂,那么我会为循环的操作绘制一个序列图,并注意整个序列是由一个循环调用的。

如果需要,您还可以同时拥有这两个序列图。

更新:
我们必须在图中添加一些注释,因为在序列图中表示“条件”并不简单。
验证是部分类似于

do validation
if validation succeeds
   proceed to next (business or other) logic
if validation fails
   feedback to user (or some other logic)

+----+          +----+          +----------------+      +----------------+
|User|          | UI |          | Your Validator |      | Business Logic |
+----+          +----+          +----------------+      +----------------+
  |     select     |                   |                        |
  |--------------->|   doValidation    |                        |
  |                |------------------>|----+                   |
  |                |                   |    | Validate          |
  |                |                   |<---+                   |
  |                |                   |                        |
  |                |                   | (validation fails:     |
  |                |  Validation Fail  |  feedback to client)   |
  |                |<------------------|                        |
  |                |                   |                        |
  |                |                   |                        |
  |                |                   | (validation succeeds:  |
  |                |                   |  proceed to            |
  |                |                   |  business logic)       |
  |                |                   |                        |          
  |                |                   |    someLogic           |
  |                |                   |----------------------->|
  |                |                   |                        |

更新 2
为什么在我的案例中使用序列图? 因为您仍然必须显示操作顺序,并且开发人员仍然需要这些信息来编码:-)

使用 UML,您可能已经知道,没有任何东西是强加的。您可以自由地以某种方式表示某事,前提是您的团队也按照您的意图理解它。这些笔记也很有帮助。

我之前应该提到过这一点,有些人使用“选项”片段来表示 if else。这或多或少是一个注释(我是这样看的),但可能更明显。IF我只在 the和ELSEpart 都很复杂 时才使用它们。

    +----+          +----+          +----------------+      +----------------+ 
    |User|          | UI |          | UI - Backend   |      |  Busines Logic |
    +----+          +----+          +----------------+      +----------------+
      |  Add Record    |                   |                        |
      |--------------->|  doinsertOrUpdate |                        |
      |                |------------------>|                        |
      |                |                   |      exists(record)    |
      |                |                   |----------------------->|
      |                |                   |                        |         
  ____|________________|___________________|________________________|__________
  |[Record exists]     |                   |                        |         |
  |   |                |                   |     Get Record         |         |
  |   |                |                   |----------------------->|         |
  |   |                |                   |                        |         |
  |   |                |                   |--------+               |         |
  |   |                |                   |        | Set UI Values |         |
  |   |                |                   |<-------+               |         |
  |   |                |                   |                        |         |
  |   |                |                   |   Update Record        |         |
  |   |                |                   |----------------------->|         |
  |   |                |                   |                        |         |
  |   |                | Send Message      |                        |         |
  |   |                |<------------------|                        |         |
  |   |                |  "Record found,   |                        |         |
  |   |                |   Updated"        |                        |         |
  |___|________________|___________________|________________________|_________|
      |                |                   |                        |
      |                |                   |                        |
______|________________|___________________|________________________|_________
| [Record does not     |                   |                        |         |
| exist]               |                   |                        |         |
|     |                |                   |--------+               |         |
|     |                |                   |        | Generate      |         |
|     |                |                   |        | Seqeuence     |         |
|     |                |                   |<-------+               |         |
|     |                |                   |                        |         |
|     |                |                   |   Create New Record    |         |
|     |                |                   |----------------------->|         |        
|     |                | Send Message      |                        |         |
|     |                |<------------------|                        |         |
|     |                |  "New Record      |                        |         |
|     |                |   Created"        |                        |         |
|_____|________________|___________________|________________________|_________|
      |                |                   |                        |
      |                |                   |                        |
      |                |                   |                        |

有关使用 alt 块的示例,请参阅this 。

于 2010-10-11T10:08:12.283 回答