首页 > 解决方案 > UML - 如何建模/或/两者(联合)概念?

问题描述

在我的业务中,我们有一个存储数据的“数据存储”(例如数据库、平面文件等)和一个提供数据的“数据提供者”(例如人类、传感器等)。

在 UML 中对此进行建模对我来说没有问题。但是,有时“实例”既是数据存储又是数据提供者(例如物联网设备)。我该如何建模?

“实例可以是数据存储或数据提供者或两者兼而有之”。

数据存储和数据提供者具有不同的属性,同时(数据存储和数据提供者)的实例应该具有这两个属性。

我在 UML 中寻找多重继承或联合概念,但没有找到正确的概念。谁能给我一个提示如何建模?:-)

编辑:我的主要目标是开发一个概念模型(不是为了实现)。

标签: umlunionmodelinghintconcept

解决方案


要使某个东西同时成为“数据存储”和“数据提供者”,您有两个选择。第一种选择是对实例进行多重分类。第二种选择是实例化一个专门化这两个类的类。对于任何一种选择,“Data Store”和“Data Provider”类都不能不​​相交 [1]。

对于第一个选择,UML 实例规范允许多个分类器,它允许您混合和匹配类。如果您创建一个实例规范并使用“数据存储”和“数据提供者”对其进行分类,您将获得您正在寻找的效果。

对于第二种选择,UML 允许一个类专门化多个其他类,这允许您创建这些其他交集的子类 [2]。如果您创建一个名为“Data Store Provider”的类并使用泛化箭头将其连接到“Data Store”和“Data Provider”,您也可以获得您正在寻找的效果。


[1] 在 UML 中,您使用具有 meta-property 的 Generalization Set 使类不相交isDisjoint=true。不要为这些选择中的任何一个这样做。

[2] 在 UML 中,没有办法表达确切的交集,而且大多数人不明白你为什么要这样做。一个名为 Cameo Concept Modeler 的 MagicDraw 插件扩展了 UML,以便您可以表达这一点,以及 UML 无法表达的其他内容,因此您可以对本体进行建模。


推荐阅读