UML 中的服务类表示

问题描述

我有三个类,一个叫做

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

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

您将如何在 UML 图中正确表示这三个?一切都从使用 TrackServiceTrackService 的工作协调器开始,它可能具有类似 add(Track track) 的函数,您可以在其中传递一个 Track 对象以添加到其中的数组列表中说:

private ArrayList<Track> tracks;

当 add 被调用时,一个轨道被添加到轨道中。

感谢任何见解,我正在考虑这样的事情,但可能完全错误

enter image description here

解决方法

我有三个类,一个叫做

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

WorkCoordinator -- (track issue) --> TrackService

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

关于你的图表:

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

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

  • 通过属性和关系来表示相同的东西在 UML 中是合法的,但相当繁重,因为读者必须检查它们是否是相同的东西,我鼓励你只使用它们中的一个,并支持绘制两个类时的关系。

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

您将如何在 UML 图中正确表示这三个?

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

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

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

enter image description here

event 应该是 process 的参数,用来命名 TrackingService 的实例我使用了 trackingService是属性的名称,item 表示创建的 Track 实例以在消息 add 中使用它。

所有这些看起来都很模糊,但这很正常,因为交互不是行为,而序列图侧重于生命线之间的消息交换。

如果您想对操作过程的行为进行完全建模而没有歧义,您可以使用活动,并且图表可以是:

enter image description here


补充说明:

  • 一个事件通常不仅仅是一个像trackIssue这样的名字,所以process的参数不是一个字符串,或者那个字符串是一个复杂的形式。

  • Trackgetter/setter 作为 id 而不是 name,看起来很奇怪.您确定 id 不仅在创建实例时设置(带有 name)?

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...