5

球窝符号是合法的 UML 2.0,但我找不到强制 EA 将其绘制在图表上的方法。它拒绝允许套接字和球之间的依赖关系。有没有办法让它发生,如下图所示(小毫秒绘画魔法):

在此处输入图像描述

另外,一个附带的问题,你能让球或窝出现在元素的另一边吗?

4

3 回答 3

5

在 EA 中有两种不同的显示球窝的方式。

使用您使用的那个,您已经将连接器从您的 Consumer 和 Producer 类绘制到 IProducer 接口(分别是依赖项和实现)。然后,您在类上打开了 Dependent 和 Realized 接口的显示。

这样做意味着球和插座是固定的。您不能选择它们(而是选择了类),不能将它们移动到它们的父类中,并且它们不能成为连接器的端点。

另一种方法是使用 Expose Interface。

使用此方法,您无需将任何连接器从您的类绘制到接口。相反,您使用 Expose Interface 在每个类中创建一个嵌入元素,该元素将接口作为其分类器。

这些暴露的接口,本身就是元素,按照你希望的方式运行:你可以在它们各自类的周边移动它们,你可以在它们之间绘制连接器。

在示例中,请注意 IProducer 接口元素没有任何连接器。暴露接口的示例使用

为了公开接口,有两种方法可以解决。您可以在图表工具箱中选择 Expose Interface,但请注意,这仅在 Component 工具箱中可用 - 而不是 Class 工具箱。这就是我在这个例子中对 Producer 所做的。

另一种方法是右键单击类并选择 New Element -> Port。这将创建一个端口,您可以为其指定任何名称。然后右键单击端口并选择 New Element -> Provided / Required Interface。

无论哪种方式都会打开 Exposed Interface 对话框,它允许您通过使用省略号按钮 (...) 并浏览项目树中的接口来选择应该公开的界面元素。

使用端口可能看起来有点麻烦,但严格来说,它是更正确的 UML。另请注意,单个端口可以公开多个接口,包括提供的和必需的接口,允许您对形成某种逻辑单元的接口进行分组。可能是您有多个接口形成一个服务,因此一起使用,但是该类提供并需要多个服务。

当您讨论的不是单个类而是组件时,这(对我而言)更有意义,并且我通常在对类建模时使用实现/依赖关系,在对组件建模时使用端口和暴露的接口。

于 2013-02-11T22:05:24.460 回答
2

在 EA 中,球窝连接可以(仅)在端口之间绘制。使用“装配”连接器类型。

于 2013-10-24T15:13:02.637 回答
1

ball 和 socket 是合法的 UML 2.0 符号是正确的,但它们不是 UML 元素,它们描述了元素关系。所以我想根据您使用的工具,它会(或不会)允许您在它们之间创建依赖关系。根据 UML 规范,应该在至少两个 NamedElements 之间创建 UML 依赖关系。

于 2013-02-08T08:47:27.033 回答