UML 中的服务 Class 表示

Service Class representation in UML

我有三个class一个叫

WorkCoordinator 并且它根据传递给它的事件调用不同的服务 classes,所以如果事件是 trackIssue 则有一个 TrackService class 处理一些专门用于跟踪的操作,还有一个 Track 对象。所以你可以有以下

WorkCoordinator -- (track issue) --> TrackService (has a list of Track objects)

您将如何在 UML 图中正确表示这三者?一切都以使用 TrackServiceTrackService 的 workcoordinator 开始的地方可能有一个像 add(Track track) 这样的函数,你可以在其中传递一个 Track 对象以添加到其中的数组列表中说:

private ArrayList<Track> tracks;

调用 add 时,轨道会添加到轨道中。

感谢任何见解,我在想这样的事情,但可能完全错了。

I have three classes one is called

与操作相反,class 不能调用,但可以使用

WorkCoordinator -- (track issue) --> TrackService

当事件字符串是 trackIssue 时,class WorkCoordinator 使用 class TrackingService,但如何?因为在你的图表中 class TrackingService 只有操作 add 这意味着操作被调用,即使我对此有些怀疑,更多的事实是我们不知道参数中给出的 Track 的实例来自哪里。如果调用了其他操作,请将其添加到图中。

关于你的图表:

  • WorkCoordinatorTrackingService之间的线路的作用是未知的,然后无效。由于 trackingService 属性,您可能还想将其显示为关系,在这种情况下,关系必须完成。

  • TrackingService 有两个 Track 列表,一个通过属性 trackItems 和另一个通过关系 tracks。这可能不是您想要的,trackItems 必须重命名为 tracks 或相反。

  • 通过属性和关系显示同一事物在 UML 中是合法的,但相当繁重,因为 reader 必须检查它们是同一事物,我鼓励您仅使用其中之一,并在绘制两个 classes 时支持这种关系。

  • 您的聚合说 TrackingServiceTrack 组成,您确定是这种情况并且聚合必须被使用了?

How would you correctly represent these three in a UML diagram ?

class 图根本没有表明当处理的事件是 trackIssue 操作 add (或一个other) 应用于 trackingService(使用正确的参数)。当然,您可以添加注释来说明这一点,但该注释是自由文本,只有人类才能理解。

要在图表中显示,您可以使用顺序图或 activity 图,具体取决于您要显示的内容。

显示process执行过程中发生的事情的序列图可以是(假设创建了一个新的Track实例在 add) 的参数中:

event应该是process的参数,用来命名TrackingService[=102=的实例] 我使用 trackingService 作为属性的名称, item 代表 Track 的创建实例在消息中使用它 add.

这一切看起来很模糊,但这很正常,因为交互不是行为,序列图关注生命线之间的消息交换。

如果你想完全模拟操作过程的行为而没有歧义你可以使用activity,图表可以是:


补充说明:

  • 一个事件一般比trackIssue这样的名字多很多,所以process的参数不是一个字符串或该字符串是复杂形式。

  • Track getter/setter id但不是 name,似乎很奇怪。您确定 id 不仅在创建实例时设置(使用 name)吗?