UML序列图调用属性

时间:2009-02-10 13:56:25

标签: uml properties diagram sequence

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

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

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

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

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

3 个答案:

答案 0 :(得分:5)

要记住的一件重要事情是,UML不是正式的符号,所以你可以做任何你认为有意义的事情。如果某些事情不明确(或者您必须过多地考虑如何表示它),您应该添加一个注释。

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

答案 1 :(得分:1)

在记录我的设计时遇到了类似的问题。我刚刚在方法调用下添加了文本'property'(在箭头下)。 (我没有找到'正确'的UML方式。)虽然这不是标准的UML,据我所知,这确实得到了重点。当然,这对你来说可能效果不错,在这种情况下,使用标准UML会更好。

答案 2 :(得分:0)

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

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

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

他还建议在名字后面保留刻板印象。