在我的业务中,我们有一个存储数据(例如数据库、平面文件等)的“数据存储”和一个提供数据(例如人、传感器等)的“数据提供者”。
用 UML 对此建模对我来说没有问题。但是,有时“实例”既是数据存储又是数据提供者(例如物联网设备)。我该如何建模?
“实例可以是数据存储或数据提供者或两者兼而有之”。
数据存储和数据提供者具有不同的属性,一个既是数据存储又是数据提供者的实例应该具有这两种属性。
我在 UML 中寻找多重继承或联合概念,但没有找到正确的概念。谁能给我一个如何建模的提示? :-)
编辑:我的主要目标是开发一个概念模型(不是为了实现)。
最佳答案
要同时创建“数据存储”和“数据提供者”,您有两种选择。第一种选择是对实例进行乘法分类。第二种选择是实例化一个专门化这两个类的类。对于任一选择,“Data Store”和“Data Provider”类都不能不相交 [1]。
对于第一个选择,UML 实例规范允许多个分类器,这允许您混合和匹配类。如果您创建一个实例规范并将其分类为“数据存储”和“数据提供者”,您将获得您正在寻找的效果。
对于第二种选择,UML 允许一个类专门化多个其他类,这允许您创建交集的子类那些其他类 [2]。如果您创建一个名为“Data Store Provider”的类,并使用泛化箭头将其连接到“Data Store”和“Data Provider”,您也可以获得您正在寻找的效果。
[1] 在 UML 中,您使用具有元属性 isDisjoint=true
的泛化集使类不相交。不要对这些选择中的任何一个执行此操作。
[2] 在 UML 中,没有办法表达精确的交集,而且大多数人都不明白为什么要那样做。称为 Cameo Concept Modeler 的 MagicDraw 插件扩展了 UML,因此您可以表达这一点,以及 UML 无法表达的其他内容,因此您可以对本体进行建模。
关于UML - 如何建模一个/或/两个(联合)概念?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59554837/