3

在我的应用程序中,我有一个 Document 类和一个 DocumentFact 类。DocumentFact 类包含将从数据库中获取多个文档的方法。这些文档存储在数据表或数据集中。两者(数据表,数据集)都是 documentfact 类的私有成员。它们可以通过属性访问。

现在我的问题是:在序列图中,是否允许调用这样的属性:

Actor      Web interface    DocumentFact          Database
  |          |                 |                      |
  |input     |                 |                      |
  |------->  |  GetDocuments   |                      |
  |          |---------------->|                      |
  |          |                 | ExecuteSelectQuery() |
  |          |                 | -------------------->|
  |          |                 |                      |
  |          |                 |      Bool            |
  |          |                 | <--------------------|
  |          |                 |                      |
  |          |                 |   GetDataSet()       |
  |          |                 | -------------------->|
  |          |                 |                      |
  |          |                 |    DataSet           |
  |          |                 |<---------------------|
  |          |                 |                      |

其中 GetDataSet 是一个属性。它是否正确?如果不是,那么正确的方法是什么?

注意:这只是我的序列图的一部分,其余的不相关。

4

3 回答 3

5

要记住的重要一点是,UML 不是一种正式的表示法,因此您可以做任何您认为可以理解的事情。如果有不清楚的地方(或者你必须考虑太多关于如何表示它),你可能应该添加一个注释。

我发现在序列图中非常有用的一件事是对消息(或消息组)进行编号并有一个正在运行的对话框(格式化为编号列表)解释正在发生的事情(......以及你为什么这样做那样)。您必须记住,图表不是独立存在的,而是应该集成到更大的文档中,因此,如何具体表示属性并不是什么大问题。只需选择一个表示并解释 GetDataSet 是 Database 的一个属性(或其他:)。

于 2009-02-10T14:12:08.527 回答
1

在记录我的设计时,我遇到了类似的问题。我刚刚在方法调用下添加了文本“属性”(在箭头下)。(我没有找到“正确”的 UML 方法。)虽然这不是标准的 UML,但据我所知,这确实说明了重点。当然,这可能不适合您,在这种情况下,您最好使用标准 UML。

于 2009-02-10T14:04:34.943 回答
0

您可以显示具有原型的属性。例如,如果DataSet是属性,并且您正在调用 getter,则使用<<get>>构造型。所以它看起来像

     DataSet <<get>>
--------------------->

我不确定它是否在 UML 规范中。但这是根据 Scott Ambler 在他出色的 The Elements of UML 2.0 Style中的建议。

他还建议保留名称后的刻板印象。

于 2013-05-02T15:14:28.647 回答