UML - 如何建模 either/or/both(联合)概念?
UML - How to model either/or/both (union) concept?
在我的业务中,我们有一个 "Data Store" 存储数据(例如数据库、平面文件等)和一个 "Data Provider" 提供数据(例如人、传感器等)。
用 UML 对此建模对我来说没有问题。但是,有时 "instances" 既是数据存储又是数据提供者(例如物联网设备)。我该如何建模?
"An instance can be a data store or a data provider or both".
数据存储和数据提供者具有不同的属性,一个既是数据存储又是数据提供者的实例应该具有这两种属性。
我在 UML 中寻找多重继承或联合概念,但没有找到正确的概念。谁能给我一个如何建模的提示? :-)
编辑:我的主要目标是开发一个概念模型(不是为了实现)。
我可能需要多考虑一下,但想到的一种方法是使用实现不同接口的不同(可选)端口:
要同时制作 "Data Store" 和 "Data Provider",您有两种选择。第一个选择是乘以 classify 一个实例。第二种选择是实例化一个专门化两个 class 的 class。对于任一选择,"Data Store" 和 "Data Provider" class 不能不相交 [1].
对于第一个选择,UML 实例规范允许多个 classifier,这允许您混合和匹配 classes。如果您创建实例规范并 class 使用 "Data Store" 和 "Data Provider" 对其进行验证,您将获得所需的效果。
对于第二个选择,UML 允许 class 专门化 多个其他 classes,这允许您创建 其他 classes [2] 的 交叉点 的子 class。如果您创建一个名为 "Data Store Provider" 的 class 并使用泛化箭头将其连接到 "Data Store" 和 "Data Provider",您也可以获得您正在寻找的效果。
[1] 在 UML 中,您使用具有元 属性 isDisjoint=true
的泛化集使 classes 不相交。不要对这两个选项中的任何一个执行此操作。
[2] 在 UML 中,没有办法表达 精确的 交集,而且大多数人不明白为什么要这样做。称为 Cameo Concept Modeler 的 MagicDraw 插件扩展了 UML,以便您可以表达这一点,以及 UML 无法表达的其他内容,因此您可以对本体进行建模。
在我的业务中,我们有一个 "Data Store" 存储数据(例如数据库、平面文件等)和一个 "Data Provider" 提供数据(例如人、传感器等)。
用 UML 对此建模对我来说没有问题。但是,有时 "instances" 既是数据存储又是数据提供者(例如物联网设备)。我该如何建模?
"An instance can be a data store or a data provider or both".
数据存储和数据提供者具有不同的属性,一个既是数据存储又是数据提供者的实例应该具有这两种属性。
我在 UML 中寻找多重继承或联合概念,但没有找到正确的概念。谁能给我一个如何建模的提示? :-)
编辑:我的主要目标是开发一个概念模型(不是为了实现)。
我可能需要多考虑一下,但想到的一种方法是使用实现不同接口的不同(可选)端口:
要同时制作 "Data Store" 和 "Data Provider",您有两种选择。第一个选择是乘以 classify 一个实例。第二种选择是实例化一个专门化两个 class 的 class。对于任一选择,"Data Store" 和 "Data Provider" class 不能不相交 [1].
对于第一个选择,UML 实例规范允许多个 classifier,这允许您混合和匹配 classes。如果您创建实例规范并 class 使用 "Data Store" 和 "Data Provider" 对其进行验证,您将获得所需的效果。
对于第二个选择,UML 允许 class 专门化 多个其他 classes,这允许您创建 其他 classes [2] 的 交叉点 的子 class。如果您创建一个名为 "Data Store Provider" 的 class 并使用泛化箭头将其连接到 "Data Store" 和 "Data Provider",您也可以获得您正在寻找的效果。
[1] 在 UML 中,您使用具有元 属性 isDisjoint=true
的泛化集使 classes 不相交。不要对这两个选项中的任何一个执行此操作。
[2] 在 UML 中,没有办法表达 精确的 交集,而且大多数人不明白为什么要这样做。称为 Cameo Concept Modeler 的 MagicDraw 插件扩展了 UML,以便您可以表达这一点,以及 UML 无法表达的其他内容,因此您可以对本体进行建模。