【问题标题】:UML ternary associationUML 三元关联
【发布时间】:2017-10-24 18:19:58
【问题描述】:

我目前在理解 UML 中的三元关联时遇到了一些麻烦。我得到二进制的,但我不确定多重性如何在三元上起作用。我正在做我从大学得到的练习,现在的练习是这样的:

一个部门可以销售多种产品,但仅限于一个市场。在市场上,一种产品只能由一个部门销售。

我已经阅读了不同的资料,关于我应该如何思考这两个类中的一对,我并没有试图弄清楚它的多重性,但我的大脑就是不明白。帮我溢出克诺比,你是我唯一的希望。

【问题讨论】:

    标签: associations uml ternary


    【解决方案1】:

    三元关联的多重性规范似乎有些含糊不清。另见this paper

    但我是这样理解的:

    多重性说明对于任何给定的链接实例元组,一个实例在此关联中可能出现多少次。

    例如,考虑以下(传统)家庭
    我会理解为

    在任何给定的家庭中,都必须有一位父亲、一位母亲和零个或多个孩子。

    如果我们将其应用于您的情况,那么我会得出这样的结论:


    我理解为

    对于任何给定的产品,必须恰好有一个市场、一个部门和一种或多种产品

    这似乎或多或少地满足了您的所有限制

    • 一个产品只能由一个部门提供给一个市场
    • 一个部门可以提供多种产品,但一种产品只能提供给一个市场

    虽然我不认为它是防水的,但正如论文已经指出的那样,UML 没有足够的工具来制作防水设计,仅在末端有多重。因此,为了更好地衡量,您的约束也应该建模为 UML 约束。

    免责声明:三元关联非常适合学术讨论,但并未真正用于 (IT) 行业,可能是因为它们很难理解。

    【讨论】:

    • 伟大的@Bellekens,我认为最后,在代码中,只实现了二进制关联......
    • @granier 不一定。我认为“代码”中的实现比 UML 中的使用更常见。考虑一个具有字段 Market、Department、list 的结构,或者一个带有 FK 到 Product、Market 和 Department 的“链接”表。
    • @Bellekens 是的,您将有一个结构/对象管理具有“业务规则”的其他事物列表,这更接近于关联类或管理二进制关联列表的对象...
    • @Geert Bellekens:n 元关联的多重性的定义没有歧义,但它们更难理解。请注意,上面示例中的关联名称“Family”不是一个好的选择,因为三元关联和任何实例化它的三元组都不代表一个家庭。
    • @GeertBellekens,对于softwareengineering.stackexchange.com/questions/391341/… 的问题,我已经查阅了UML 2.5 规范,我认为现在n 元关联已经得到很好的说明。如果你有时间,请阅读我在那边的回答。我认为 Gerd Wagner 下面的回答是正确的。
    【解决方案2】:

    这个不特定的三元关联只是告诉你在哪里有关系

    • Market 控制 Department-Product,
    • Department 控制 Market-Product
    • Product 控制Department-Market

    没有说明单个类如何控制其他两个类。

    UML 规范没有详细定义三元运算符。因此,使用该元素似乎风险自负。你可以责怪 OMG 使用但没有定义它超过

    任何关联都可以绘制为菱形(大于一条线上的终止符),每个关联成员用一条实线端将菱形连接到作为端类型的分类器。两端以上的 Association 只能这样绘制。

    以及 p 上图片中的一个示例。 202.

    简单的关联类

    告诉您Product 介于DepartmentMarket 之间,其中多重性1 告诉您只有一个Market 对应Department。这更像是您的要求。

    注意对需求进行区分没有多大意义,例如“有没有MarketProduct”。这些是在模型中修复之前需要与领域专家讨论的细节。

    【讨论】:

    • 您的模型将允许一个部门在多个市场上提供其产品,并且不允许一个部门在同一市场上提供多个产品,这与要求相反。
    • @GerdWagner 你是对的。那幅草图更像是从臀部拍摄的一般镜头。我会改正的。
    【解决方案3】:

    Geert Bellekens 答案中的模型是正确的,但他的解释令人困惑。三元关联“Offering”及其多重性(基数约束)无法用语句解释

    对于任何给定的产品,必须恰好有一个市场、一个部门和一种或多种产品

    而是通过说明

  • 部门和产品的组合恰好与一个市场相关联
  • 市场和产品的组合只与一个部门相关联
  • 【讨论】:

      【解决方案4】:

      三元和更高级别的关联应建模符合 ISO 标准,其中拥有端在符号中颠倒。 所以对于二元关联,使用拥有端的正常含义。

      如果遇到三元或更高的关联,智能工具应该切换解析模式。

      已经证明你可以将一个 N 元关联拆分成很多二元关联,因此我们通常避免使用这些 N 元。

      【讨论】:

        猜你喜欢
        • 2019-04-15
        • 1970-01-01
        • 1970-01-01
        • 2011-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-23
        相关资源
        最近更新 更多