Class 概率图
Class diagram for probability
我开始开发一款软件,其中包括处理概率分布。
我正在尝试使用 class 图表来设计它,并且 运行 成为我在此处提取的设计问题(尚未对其进行编码)。
我有两个 运行dom 变量实例,X 和 Y。它们有一个概率,我将其子class编辑为 P(X) 和 P(Y) 来自可能性。
我应该有一个从变量实例到概率值的 "probability of" 关联吗?或者这是我设计中的冗余?
根据实际代码思考,我认为我只会在 P(X) 值和我的 X 实例之间建立关联...这是否意味着它与超级 class 概率的关联那是多余的?
如果是这样,对于未指定数量的随机变量实例,我将拥有未指定数量的关联...尽管这实际上可能是我的代码的样子。图表中没有这些关联,仅与 superclass "Probability" 关联是否足以描述我的系统?
我在 UML 中表达这一点的原因(回复下面的评论):
我想我可以将我的概率表达为某些对象的函数并将其存储在某种地图中......然后有一些函数可以确保所有概率的总和为 1 等的不变性......然后我可以添加更多的数据,必须重新访问和修改我的整个地图……这会影响联合分布……等等,增加复杂性并使任何类型的程序方法变得非常混乱。并不是说过程方法行不通,而是我真的想要一个清晰的、面向对象的图像来描述我将要构建的软件。 Class 图表似乎是执行此操作的一个很好的工具。我想将每个分布视为一个对象,而不是程序生成的东西。
从“我有 2 个随机变量实例”我了解到 X
和 Y
是对象,random variables
是 类.
如果你想表示对象,你必须使用UML object diagrams. But if you want a class diagram,你应该摆脱对象实例化,只考虑它们的类,即random variable
,probability
,和 probability distribution of variable
(又名 P(x)、P(y),可以用函数表示)。
从你的解释中不清楚 probability
是指概率值还是集合,或者你指的是一些基本概率法则。在第一种情况下,您将使用 probability distribution of variable
与 probability
的关联。在第二个中你可以考虑泛化关系。
概览
您不需要 "Probability Of" 从 "Y" 到 "P(Y)" 或 "X" 到 "P(X)" 的关联。它们是多余的。
您的 "Probability Of" class 或对象代表一个关联。将此 class 的关联留给一个对象。
有时,操作、方法或关联也可以表示或概念化为 Class 或 class 的实例(a.k.a。"Variable") .
冗长无聊的扩展答案
建模对象、classes 和关联,可能有点麻烦。
你有一个变量,在某个时候会有一些值。
对象图 1(不完整)
...............
..+---------+..
..| 5 |..
..+---------+..
...............
由于 UML 是为程序建模而设计的,因此您需要指定其类型,
在这种情况下,您的值不是一个完整的对象,只是一个浮点数。
对象图 2(不完整)
...............
..+---------+..
..| Float |..
..+---------+..
..| 5 |..
..+---------+..
...............
如果它是更复杂的值,您可以使用属性、方法和其他 UML 功能,但目前情况并非如此。
同一个概念或变量可能有其他值,例如:
对象图 3(不完整)
............................
..+---------+..+---------+..
..| Float |..| Float |..
..+---------+..+---------+..
..| 5 |..| 3.1416 |..
..+---------+..+---------+..
............................
..+---------+..+---------+..
..| Float |..| Float |..
..+---------+..+---------+..
..| -55.12 |..| 0 |..
..+---------+..+---------+..
............................
每个值都可能有其他几个代表概率的值。
因此,每个原始值与概率值之间存在关联。
让我们对一些对象示例进行建模。
对象图 4(不完整)
....................................
..+---------+..........+---------+..
..| Float |..........| Float |..
..+---------+..........+---------+..
..| 5 +-------+--+ -444 |..
..+---------+.......|..+---------+..
....................|...............
....................|..+---------+..
....................|..+ Float |..
....................|..+---------+..
....................+--+ 0 |..
....................|..+---------+..
....................|...............
....................|..+---------+..
....................|..| Float |..
....................|..+---------+..
....................+--+ +1 |..
.......................+---------+..
....................................
每个原始值及其概率值可能有更多示例,但是,表示它们可能非常复杂。
让我们将此示例对象图更改为更具概念性的 Class 图。
你有一个 class 图表代表一个变量,或者可以被一个变量实例化。在某个时刻,您将存储该变量的值。
而且,我们称它为“X”。
Class 图 5(不完整)
..................
..+------------+..
..| X: Float |..
..+------------+..
..................
请记住,“X”一次代表或具有一个值,但它可以更改。
现在,“X”可以有多个概率值。
让我们用一个 class 框而不是多个框来表示所有这些。
并且,在不带括号的情况下称它们为“PX”,因为它们不能用作 UML 中的变量或 class 名称。
Class 图 5(不完整)
........................................
..+------------+........+------------+..
..| X: Float |........| PX: Float |..
..+------------+........+------------+..
........................................
由于这对值是相关的,让我们添加一行来表示关联。
Class 图 5(不完整)
........................................
..+------------+........+------------+..
..| X: Float +--------+ PX: Float |..
..+------------+........+------------+..
........................................
但是,对于“X”的每个值都可以是“PX”的多个值,让我们添加一个菱形来表示它。
存在一对一关联的情况,但是,这种情况是一对多关联。
Class 图 6
........................................
..+------------+...../\.+------------+..
..| X: Float +----< >+ PX: Float |..
..+------------+.....\/.+------------+..
........................................
菱形绘制在代表 "many" 值的方框附近。
让我们添加一个可选标签来解释关联的目标。
还有一个指示如何应用此箭头的箭头。
Class 图 7
........................................
..........<<..Probability Of............
..+------------+...../\.+------------+..
..| X: Float +----< >+ PX: Float |..
..+------------+.....\/.+------------+..
........................................
总结
关联可以有几种,你用的是"inheritance"关联,不适合你的情况。
对象图适用于特定示例并且具有值,
并且不经常使用变量。
Class 图表是概念化的,通常有变量或属性,并且仅将值用作初始值或常量。
许多 UML 开发人员跳过对象图,直接使用 Class 图来表示某些场景。尽管如此,对象图仍然很有用。
"Object Diagrams"用圆框表示,Class图用尖角。我无法用 ASCII 示例很好地表示它们。
背景点不会出现在 UML 图表中,我只是用它来突出图表。
我开始开发一款软件,其中包括处理概率分布。
我正在尝试使用 class 图表来设计它,并且 运行 成为我在此处提取的设计问题(尚未对其进行编码)。
我有两个 运行dom 变量实例,X 和 Y。它们有一个概率,我将其子class编辑为 P(X) 和 P(Y) 来自可能性。
我应该有一个从变量实例到概率值的 "probability of" 关联吗?或者这是我设计中的冗余?
根据实际代码思考,我认为我只会在 P(X) 值和我的 X 实例之间建立关联...这是否意味着它与超级 class 概率的关联那是多余的?
如果是这样,对于未指定数量的随机变量实例,我将拥有未指定数量的关联...尽管这实际上可能是我的代码的样子。图表中没有这些关联,仅与 superclass "Probability" 关联是否足以描述我的系统?
我在 UML 中表达这一点的原因(回复下面的评论): 我想我可以将我的概率表达为某些对象的函数并将其存储在某种地图中......然后有一些函数可以确保所有概率的总和为 1 等的不变性......然后我可以添加更多的数据,必须重新访问和修改我的整个地图……这会影响联合分布……等等,增加复杂性并使任何类型的程序方法变得非常混乱。并不是说过程方法行不通,而是我真的想要一个清晰的、面向对象的图像来描述我将要构建的软件。 Class 图表似乎是执行此操作的一个很好的工具。我想将每个分布视为一个对象,而不是程序生成的东西。
从“我有 2 个随机变量实例”我了解到 X
和 Y
是对象,random variables
是 类.
如果你想表示对象,你必须使用UML object diagrams. But if you want a class diagram,你应该摆脱对象实例化,只考虑它们的类,即random variable
,probability
,和 probability distribution of variable
(又名 P(x)、P(y),可以用函数表示)。
从你的解释中不清楚 probability
是指概率值还是集合,或者你指的是一些基本概率法则。在第一种情况下,您将使用 probability distribution of variable
与 probability
的关联。在第二个中你可以考虑泛化关系。
概览
您不需要 "Probability Of" 从 "Y" 到 "P(Y)" 或 "X" 到 "P(X)" 的关联。它们是多余的。
您的 "Probability Of" class 或对象代表一个关联。将此 class 的关联留给一个对象。
有时,操作、方法或关联也可以表示或概念化为 Class 或 class 的实例(a.k.a。"Variable") .
冗长无聊的扩展答案
建模对象、classes 和关联,可能有点麻烦。
你有一个变量,在某个时候会有一些值。
对象图 1(不完整)
...............
..+---------+..
..| 5 |..
..+---------+..
...............
由于 UML 是为程序建模而设计的,因此您需要指定其类型, 在这种情况下,您的值不是一个完整的对象,只是一个浮点数。
对象图 2(不完整)
...............
..+---------+..
..| Float |..
..+---------+..
..| 5 |..
..+---------+..
...............
如果它是更复杂的值,您可以使用属性、方法和其他 UML 功能,但目前情况并非如此。
同一个概念或变量可能有其他值,例如:
对象图 3(不完整)
............................
..+---------+..+---------+..
..| Float |..| Float |..
..+---------+..+---------+..
..| 5 |..| 3.1416 |..
..+---------+..+---------+..
............................
..+---------+..+---------+..
..| Float |..| Float |..
..+---------+..+---------+..
..| -55.12 |..| 0 |..
..+---------+..+---------+..
............................
每个值都可能有其他几个代表概率的值。
因此,每个原始值与概率值之间存在关联。
让我们对一些对象示例进行建模。
对象图 4(不完整)
....................................
..+---------+..........+---------+..
..| Float |..........| Float |..
..+---------+..........+---------+..
..| 5 +-------+--+ -444 |..
..+---------+.......|..+---------+..
....................|...............
....................|..+---------+..
....................|..+ Float |..
....................|..+---------+..
....................+--+ 0 |..
....................|..+---------+..
....................|...............
....................|..+---------+..
....................|..| Float |..
....................|..+---------+..
....................+--+ +1 |..
.......................+---------+..
....................................
每个原始值及其概率值可能有更多示例,但是,表示它们可能非常复杂。
让我们将此示例对象图更改为更具概念性的 Class 图。
你有一个 class 图表代表一个变量,或者可以被一个变量实例化。在某个时刻,您将存储该变量的值。
而且,我们称它为“X”。
Class 图 5(不完整)
..................
..+------------+..
..| X: Float |..
..+------------+..
..................
请记住,“X”一次代表或具有一个值,但它可以更改。
现在,“X”可以有多个概率值。 让我们用一个 class 框而不是多个框来表示所有这些。
并且,在不带括号的情况下称它们为“PX”,因为它们不能用作 UML 中的变量或 class 名称。
Class 图 5(不完整)
........................................
..+------------+........+------------+..
..| X: Float |........| PX: Float |..
..+------------+........+------------+..
........................................
由于这对值是相关的,让我们添加一行来表示关联。
Class 图 5(不完整)
........................................
..+------------+........+------------+..
..| X: Float +--------+ PX: Float |..
..+------------+........+------------+..
........................................
但是,对于“X”的每个值都可以是“PX”的多个值,让我们添加一个菱形来表示它。
存在一对一关联的情况,但是,这种情况是一对多关联。
Class 图 6
........................................
..+------------+...../\.+------------+..
..| X: Float +----< >+ PX: Float |..
..+------------+.....\/.+------------+..
........................................
菱形绘制在代表 "many" 值的方框附近。
让我们添加一个可选标签来解释关联的目标。
还有一个指示如何应用此箭头的箭头。
Class 图 7
........................................
..........<<..Probability Of............
..+------------+...../\.+------------+..
..| X: Float +----< >+ PX: Float |..
..+------------+.....\/.+------------+..
........................................
总结
关联可以有几种,你用的是"inheritance"关联,不适合你的情况。
对象图适用于特定示例并且具有值, 并且不经常使用变量。
Class 图表是概念化的,通常有变量或属性,并且仅将值用作初始值或常量。
许多 UML 开发人员跳过对象图,直接使用 Class 图来表示某些场景。尽管如此,对象图仍然很有用。
"Object Diagrams"用圆框表示,Class图用尖角。我无法用 ASCII 示例很好地表示它们。
背景点不会出现在 UML 图表中,我只是用它来突出图表。