【问题标题】:How to model attributes dependencies between different classes in UML object diagram?如何在 UML 对象图中对不同类之间的属性依赖关系进行建模?
【发布时间】:2019-02-12 09:07:16
【问题描述】:

在可视化系统的不同部分的范围内,我想准确地显示不同属性之间的依赖关系。

在我的例子中,用例将在用户界面中,用户必须选择国家,并且根据他对产品的选择值必须在相应的下拉列表中更新,例如。

<strong>Country</strong> 类的值:

  • Country1
  • Country2
  • Country2

<strong>Product</strong> 类的值:

  • Product1仅适用于Country1
  • Product2适用于Country1Country2
  • Product3仅适用于Country2
  • Product4仅适用于Country3

我已经阅读了派生属性和约束,因为这可能是我的情况。 还有一些链接可能与同一问题有关: https://softwareengineering.stackexchange.com/questions/386816/how-to-model-attribute-dependency-inside-one-class-in-uml-class-diagram

但目前我没有可行的解决方案。

出于一般目的,我尝试用抽象类图来表示这些关系,但我很难用对象图中这些类的确切值来做到这一点

【问题讨论】:

  • 一般来说,您不会对这些类型的运行时配置值进行建模。您的 UML 模型在设计时是类模型,而不是在运行时的对象模型。但是,您应该对包含不同产品的不同配置的配置类进行建模。
  • 您的类图似乎与您的问题无关。
  • 感谢您的回答 - 我才刚刚开始了解 UML 和所有这些图表。关键是我希望不仅有抽象的可视化,而且如果可能的话,更具体的具有值依赖关系的可视化 - 在这种情况下,除了附加的类图之外,我想我需要创建另一个对象图。
  • 那么你真正的问题是什么?如何在 UML 中为第一个表(国家/产品)建模?
  • 是的——完全正确!如何模拟实际值国家/产品之间的这种依赖关系?

标签: uml class-diagram


【解决方案1】:

您可能会将其建模为关联类:

CountryProduct 需要填写相应的信息(因此它包含用于某个国家/地区的产品的价格)。

您“可以”将其建模为ProductCountry 之间关联的约束。但我敢打赌,企业不会对此感到满意,因为它在编码时将所有内容都具体化了,而企业期望在这里有相当大的灵活性。

【讨论】:

  • 如果我很了解 OP 不会要求了解产品的价格取决于国家/地区,而是如何建模“Product1(仅适用于 Country1)”等。类关系如何那 ?它如何阻止 Product1 在除 Country1 之外的所有国家/地区的可用性?
  • @bruno 好吧,这就是上面的全部内容。只有CountryProduct 中的条目才有有效性集。可以轻松满足产品列表中的要求。 “例外”是您在此处种植的要求,但 OP 没有要求。但是,即使是这样,也可以通过输入所有国家/地区的条目来轻松建模,除了您不想要的国家。
  • “例外”是您在这里种植的要求,但OP没有要求。我不明白,它不是来自我,所有的问题OP的内容就是这样。 Product1 (available ONLY for Country1), Product2 (available for Country1 AND Country2), Product3 (available ONLY for Country2), Product4 (available ONLY for Country3) 有问题还是我真的需要换眼镜? ^^
  • @bruno 在引文中except这个词在哪里?我的眼睛老了,但我的眼镜很好。
  • 例如 available ONLY for Country1 不等于 unavailable to all except Country1 ?我想你说的是我的原句blocks the availability of Product1 in all countries except Country1
【解决方案2】:

只需在ProductCountry 之间使用Association。如果您想获取每个产品-国家/地区对的属性,例如@Thomas 提到的价格,AssociationClass 是自然的选择。

在对象图中,关联(链接)的实例可以显示为线条。您将在 Country1 和 Product1 以及 Country2 和 Product2 和 Product3 之间有行... 这可以用来说明您的系统的结构以及它如何随着时间的推移而演变。要真正定义它,其他图表更适合。

我不明白,对协会的限制有什么帮助。文本约束可能在一些额外的类Selection 上。约束的开始可能是:context Selection: product = product1 implies country in (country1)。这将不允许以后添加新产品。并且由国家和产品之间的链接定义的约束更具可读性。

【讨论】:

    猜你喜欢
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    • 2020-02-16
    • 1970-01-01
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多