在 UML 序列图上的对象内调用私有方法
Invoking a private method, within the object on a UML sequence diagram
所以我这里有一个 class 图:
这是我的时序图
我在 Newton class 的对象中调用一个方法,在这个方法中我必须调用一个私有方法 fact(),returns 我是给定数字的阶乘。
这是 newton() 方法的主体
float Newton::newton(int n, int k) {
return fact(n)/(fact(k) * fact(n-k));
}
如您所见,fact() 被调用了三次。所以我的问题是:我是否必须承认(在我的序列图中), fact() 在这里被使用了三次,如果是的话 - 如何?或者我的时序图是正确的?
这取决于图表的目的:
是否要记录具体的实现?在这种情况下,您可以显示对 fact()
.
的调用
准确性是必要的:序列图中的箭头不是依赖项(即“我将在 newton()
内需要此功能”)而是一条消息(即“我将此功能称为一那些论点的时间”)。因此,正如评论中提到的 Bruno,您应该显示三个不同的调用(即 3 次调用,如您的 message 5
)。
是要记录您的设计吗?在这种情况下,重点更多地放在对象之间的交互上。您不需要像 fact()
那样显示私有实现细节,除非私有方法对于理解设计至关重要。外界不需要知道。
如果您是第一种情况,请注意 fact()
可以递归或迭代实现。又是一个实现细节。在这两种情况下,I'd not show what's behind(这是您尝试用 message 6
做的吗?):在递归实现的情况下,对于代码中易于理解的内容,它会使图表变得非常复杂,而它不会为交互场景带来额外的信息。
所以我这里有一个 class 图:
这是我的时序图
我在 Newton class 的对象中调用一个方法,在这个方法中我必须调用一个私有方法 fact(),returns 我是给定数字的阶乘。 这是 newton() 方法的主体
float Newton::newton(int n, int k) {
return fact(n)/(fact(k) * fact(n-k));
}
如您所见,fact() 被调用了三次。所以我的问题是:我是否必须承认(在我的序列图中), fact() 在这里被使用了三次,如果是的话 - 如何?或者我的时序图是正确的?
这取决于图表的目的:
是否要记录具体的实现?在这种情况下,您可以显示对
的调用fact()
.准确性是必要的:序列图中的箭头不是依赖项(即“我将在
newton()
内需要此功能”)而是一条消息(即“我将此功能称为一那些论点的时间”)。因此,正如评论中提到的 Bruno,您应该显示三个不同的调用(即 3 次调用,如您的message 5
)。是要记录您的设计吗?在这种情况下,重点更多地放在对象之间的交互上。您不需要像
fact()
那样显示私有实现细节,除非私有方法对于理解设计至关重要。外界不需要知道。
如果您是第一种情况,请注意 fact()
可以递归或迭代实现。又是一个实现细节。在这两种情况下,I'd not show what's behind(这是您尝试用 message 6
做的吗?):在递归实现的情况下,对于代码中易于理解的内容,它会使图表变得非常复杂,而它不会为交互场景带来额外的信息。