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