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 图中正确表示这三者?一切都以使用 TrackService
和 TrackService
的 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 的实例来自哪里。如果调用了其他操作,请将其添加到图中。
关于你的图表:
WorkCoordinator和TrackingService之间的线路的作用是未知的,然后无效。由于 trackingService 属性,您可能还想将其显示为关系,在这种情况下,关系必须完成。
TrackingService 有两个 Track 列表,一个通过属性 trackItems 和另一个通过关系 tracks。这可能不是您想要的,trackItems 必须重命名为 tracks 或相反。
通过属性和关系显示同一事物在 UML 中是合法的,但相当繁重,因为 reader 必须检查它们是同一事物,我鼓励您仅使用其中之一,并在绘制两个 classes 时支持这种关系。
您的聚合说 TrackingService 由 Track 组成,您确定是这种情况并且聚合必须被使用了?
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)吗?