零件和端口的含义?
Meaning of Part and Port?
我有一个包含内部 C++ 类 和一些 C++ 类 的 .lib 文件是软件库提供的功能的接口。
我应该如何用 UML 来说明这一点?
使用 Enterprise Architect,我尝试输入 'Component'(粘贴到组件图中为简单的 link),然后从模型树中拖放该库的内部 类将该组件矩形作为元素类型复合部件,并将该库的接口 类 作为端口。现在奇怪的是发生了什么模型树包含那种类 的对象实例,称为 UML 类型 'class' 的 Part1 和 Port1,这是无稽之谈,因为软件库不实例化,它只是提供它的 类 通过 .lib 文件,就像一个池。我认为 UML 元素类型 'component' 在这里不是正确的,是吗?
如果我使用 'Package',也会发生同样的情况,虽然库中的 类 不是。
这并不奇怪。您碰巧放下了 class 作为零件(以 EA 术语来说)。
那实际上是 属性。只需打开它的属性:
请参阅第 12 页的 UML 2.5。 147:
9.9.17 Property [Class]
9.9.17.1 Description
A Property is a StructuralFeature. A Property related by ownedAttribute to a Classifier (other than an association) represents an attribute and might also represent an association end. ...
我可能只是将它们作为 link 放在放大的组件中显示为 class,YMMV
A class 作为端口删除将显示为名称所示。所以这里没有混淆。无论如何,我也将它始终如一地删除为 link 以仅显示内容。此外,我可能会用 <<lib>>
等来刻板化组件本身。那是因为你实际上在编译时使用了一个库来提取需要的部分,它本身不能作为组件工作。一个库虽然有一个接口,即提取它内部的已编译 class 模块。
啊,正如@muszeo 所说:使用 ctrl-drag 显示上面的对话框。
根据我对 O/P 的评论,我将执行如下操作。请注意,我可能不会在同一张图表上描述所有这些,例如,我可能会在单独的图表上展示包的 class 内容,这样就不那么混乱了。但是道理是一样的。
更新:在下面的评论之后,我添加了这张图,它说明了另一种表示方式。我想在某些情况下,我已经看到委托也被表示为依赖关系而不是引用关联。但是,嘿嘿。在内部,组件表示为通过 required/provided 接口相互交互(尽管在下面的模型中没有显示,我们只说明了一个内部组件)。
我有一个包含内部 C++ 类 和一些 C++ 类 的 .lib 文件是软件库提供的功能的接口。
我应该如何用 UML 来说明这一点?
使用 Enterprise Architect,我尝试输入 'Component'(粘贴到组件图中为简单的 link),然后从模型树中拖放该库的内部 类将该组件矩形作为元素类型复合部件,并将该库的接口 类 作为端口。现在奇怪的是发生了什么模型树包含那种类 的对象实例,称为 UML 类型 'class' 的 Part1 和 Port1,这是无稽之谈,因为软件库不实例化,它只是提供它的 类 通过 .lib 文件,就像一个池。我认为 UML 元素类型 'component' 在这里不是正确的,是吗? 如果我使用 'Package',也会发生同样的情况,虽然库中的 类 不是。
这并不奇怪。您碰巧放下了 class 作为零件(以 EA 术语来说)。
那实际上是 属性。只需打开它的属性:
请参阅第 12 页的 UML 2.5。 147:
9.9.17 Property [Class]
9.9.17.1 Description
A Property is a StructuralFeature. A Property related by ownedAttribute to a Classifier (other than an association) represents an attribute and might also represent an association end. ...
我可能只是将它们作为 link 放在放大的组件中显示为 class,YMMV
A class 作为端口删除将显示为名称所示。所以这里没有混淆。无论如何,我也将它始终如一地删除为 link 以仅显示内容。此外,我可能会用 <<lib>>
等来刻板化组件本身。那是因为你实际上在编译时使用了一个库来提取需要的部分,它本身不能作为组件工作。一个库虽然有一个接口,即提取它内部的已编译 class 模块。
啊,正如@muszeo 所说:使用 ctrl-drag 显示上面的对话框。
根据我对 O/P 的评论,我将执行如下操作。请注意,我可能不会在同一张图表上描述所有这些,例如,我可能会在单独的图表上展示包的 class 内容,这样就不那么混乱了。但是道理是一样的。
更新:在下面的评论之后,我添加了这张图,它说明了另一种表示方式。我想在某些情况下,我已经看到委托也被表示为依赖关系而不是引用关联。但是,嘿嘿。在内部,组件表示为通过 required/provided 接口相互交互(尽管在下面的模型中没有显示,我们只说明了一个内部组件)。