【问题标题】:One-Way Association with Multiplicity UML与多重性 UML 的单向关联
【发布时间】:2018-10-26 19:14:08
【问题描述】:

我正在尝试理解这种特定情况:

 ---------                ---------
|         |0..*      0..*|         |
|CLASS  A |------------->| CLASS B |
|         |              |         |
 ---------                ---------


 ---------                ---------
|         |1..*      0..*|         |
|CLASS  A |------------->| CLASS B |
|         |              |         |
 ---------                ---------

我从第一个例子中了解到的是: A 类的一个对象与 B 类的零个或多个对象有关系。这是有道理的,因为 A 类知道 B 类。但是另一个多重性到底是什么意思? B 类不知道 A 类,所以在那里放一个多重性似乎没有意义。

第二个例子也是如此。

如果有人有好的解释,我将非常感激。

您好, 约翰

【问题讨论】:

    标签: uml associations multiplicity


    【解决方案1】:

    事实上它是有意义的,因为它表达了对您的(数据)模型的约束。

    通过在A 一侧将多重性设置为[1..*],您声明应该始终至少有1 个或多个与B 有关系的A 实例。

    在编写(或生成)业务代码时,通常不会强制执行此约束,但这只是 UML 模型的一个应用程序。

    它还可以用作功能文档,我绝对对双方的多样性感兴趣。

    在设计数据库时,此类信息也很重要。它将确定FK 字段是否可以为空。

    【讨论】:

    • 如果我要为底部示例编写代码,在我的 B 类中是否会有来自 A 类类型的变量?
    • 你不会必须这样做,因为 UML 只说你应该能够轻松地从 A 导航到 B,但它也没有明确禁止它。
    【解决方案2】:

    B 不知道A 的事实不会妨碍多个As 连接到B。例如将B 作为地址。而A 公司知道许多地址。但随后这些公司将地址交给其他公司 - 而B 对此一无所知。

    【讨论】:

      【解决方案3】:

      这意味着一个 B 的实例可以通过你的关联被多个 A 的实例作为目标。

      但通常我不会为 uml 关联上的不可导航角色设置多重性,因为它不用于代码生成(这种多重性信息通常没有实现......)。

      【讨论】:

        猜你喜欢
        • 2012-03-27
        • 2018-10-16
        • 2016-10-09
        • 2013-03-07
        • 1970-01-01
        • 1970-01-01
        • 2021-12-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多