uml - UML2.0 组件图中的委托(delegate)和组装连接器

标签 uml components diagram

我试图了解如何创建一个符合 UML2.0 的组件图,并且我发现不同的来源提出了不同的方式来显示组件的内部结构 - 特别是用于委托(delegate)和组装连接器的线类型。

我检查了 4 个不同的来源:

  • Martin Fowler 的“UML Distilled”一书
  • “敏捷建模”网站上关于组件图的部分,作者:Scott Amber
  • IBM 开发者工作网站上关于组件图的部分 - http://www.ibm.com/developerworks/rational/library/dec04/bell/index.html
  • 关于 uml-diagrams 上的组件图的部分

  • 我发现这四种资源以不同的方式绘制连接器:

    对于“委托(delegate)”连接器:
  • 虚线,空心箭头
  • 实线,空心箭头,“代表”刻板印象
  • 实线,空心箭头,“代表”刻板印象
  • 实线,无箭头

  • 对于“组装”连接器:
  • 实线,无箭头,无注释
  • 虚线,空心箭头
  • 球窝
  • 球窝

  • 为什么四个有信誉的来源以如此不同的方式解释标准图?
    有谁知道这些连接器是否完全标准化?标准对此有何评论?

    谢谢 !

    最佳答案

    简短的回答
    对于委派连接器,以下符号是正确的:

  • 实线连接端口
  • 球形/ socket 符号接口(interface)与端口之间的实线

  • 该规范没有给出关于使用箭头的可能性的明确答案。没有箭头肯定是正确的。使用开放箭头可能是正确的(有关详细信息,请参阅长答案)。
    没有关于“代表”刻板印象,但是刻板印象可以或多或少地在任何地方使用,所以我认为它是可以接受的,但不是强制性的。
    带有空心箭头的虚线显示任何依赖项。当然,委托(delegate)是某种依赖,但符号不会清楚地显示委托(delegate)。它也可以是不同类型的依赖。因此,除非您知道自己在做什么,否则不应使用它。
    对于组装连接器,以下通知是正确的:
  • 类之间的实线
  • 端口之间的实线(如果接口(interface)可见)
  • 球/ socket 接口(interface)符号中接口(interface)之间的实线
  • 简单端口之间的球/ socket 连接器符号
  • 球/ socket 接口(interface)符号中的接口(interface)之间带有空心箭头的虚线(依赖性)

  • 对于实线箭头,与委托(delegate)部分相同的陈述是正确的。
    长答案(解释/链接)
    我相信在这种情况下,最好访问最官方的来源,即 UML 规范。棘手的是,信息散布在许多地方。下面是我发现一些确认上述陈述的列表:
    11.2.4

    A Connector is drawn using similar notation to that for Association (see 11.5.4).

    additionally "When connecting simple Ports, normal Connector notation for assembly or delegation may be shown connected to the ball or socket symbol rather than to the Port symbol itself."


    11.2.5(图 11.4)
    11.2.3.3

    Connectors have a kind, whose value is assembly or delegation. The semantics of delegation connectors are only related to Ports and described under Port (see 11.3). All other Connectors are assembly connectors.


    11.6.5 (图 11.47)(图 11.48)
    至于箭头的使用,规范没有明确说明连接器的箭头使用(并且示例不包含任何箭头)。但是,由于箭头表示关联的可导航结束并且连接器没有这样的概念,我认为连接器不应该有箭头。然而,由于这没有被明确禁止,最终也可以考虑连接器的可导航性,至少理论上箭头的使用应该是可以接受的。

    关于uml - UML2.0 组件图中的委托(delegate)和组装连接器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28869204/

    相关文章:

    c++ - 如何快速了解任何产品的设计和代码流程?

    Java返回组件

    algorithm - 从图形中获取主线

    uml - 如何在 UML 图中表示 STL Map?

    drawing - 草图绘图工具-软件设计图(uml)

    uml - 从类图生成代码 : Composition between two classes does not change anything in generated Java code

    design-patterns - 设计模式和UML

    java - 包含 3 个相关表的 ManyToMany 表

    delphi - clx/vcl 不兼容

    javascript - 父数据未在 vue.js 组件中定义