概率的类图

时间:2016-03-22 10:35:25

标签: uml class-diagram

我开始使用一个软件来处理概率分布。

我试图使用类图设计它,并遇到了我在这里提取的设计问题(暂时没有编写)。

Class diagram for probability

我有两个随机变量实例,X和Y.它们具有概率,我已经将概率分类为P(X)和P(Y)。

我是否应该"概率为"从变量实例到概率值的关联?或者这是我设计中的冗余?

根据实际代码思考,我认为我只有P(X)值和我的X实例之间的关联...这是否意味着它与超类概率的关联是多余的? / p>

如果是这样的话,对于未指定数量的随机变量实例,我会有一个未指定数量的关联......虽然这可能实际上是我的代码的样子。在图中没有这些关联,只与超类有关联"概率"足以描述我的系统?

我在UML中表达这一点的原因(回复下面的评论): 我想我可以将我的概率表达为仅仅是某些对象上的函数并将其存储在某种映射中...然后有一些函数可以确保所有概率的总和达到1等的不变性...然后我可以添加更多的数据,不得不重新审视和修改我的整个地图......这将影响联合分布...等等,增加复杂性,使任何类型的程序方法都非常混乱。并不是说程序方法不会起作用,但我真的想要一个清晰的,面向对象的我将构建的软件图片。类图似乎是一个非常好的工具来做到这一点。我想把每个分布看作一个对象,而不是程序生成的东西。

2 个答案:

答案 0 :(得分:1)

从" 我有2个随机变量实例"我了解XY是对象,random variables是类。

如果要表示对象,则必须使用UML object diagrams。但是如果你想要class diagram,你应该摆脱对象实例化,只考虑他们的类,即random variableprobabilityprobability distribution of variable(又名P(x) ,P(y),可以用函数表示)。

从您的解释中不清楚probability是指概率值还是设定,或者您是指一些基本概率法则。在第一种情况下,您使用probability distribution of variableprobability的关联。在第二个中你可以考虑泛化关系。

答案 1 :(得分:1)

<强>概述

您不需要从“Y”到“P(Y)”或“X”到“P(X)”的“概率”关联。它们是多余的。

您的“概率”类或对象代表关联。将此类的关联保留为对象。

有时,操作,方法或关联也可以表示或概念化为类或类的实例(a.k.a。“变量”)。

长期无聊的答案

建模对象,类和关联可能有点麻烦。

你有一个变量,它会在某个时候有一些价值。

对象图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    |..
.......................+---------+..
....................................

每个原始值及其概率值可能会有更多示例,但是,表示它们可能会非常复杂。

让我们将这个示例对象图更改为更概念化的类图。

您有一个代表变量的类diagran,或者可以通过变量实例化。在某些时刻,您将存储该变量的值。

而且,我们称之为'X'。

类图5(不完整)

..................
..+------------+..
..|  X: Float  |..
..+------------+..
..................

请记住,'X'一次表示或具有单个值,但它可以更改。

现在,'X'可能有几个概率值。 让我们用一个类框代表所有这些,而不是很多。

并且,在没有括号的情况下将它们称为'PX',因为它们不能在UML中用作变量或类名。

类图5(不完整)

........................................
..+------------+........+------------+..
..|  X: Float  |........| PX: Float  |..
..+------------+........+------------+..
........................................

因为这对值是相关的,所以让我们添加一行来表示关联。

类图5(不完整)

........................................
..+------------+........+------------+..
..|  X: Float  +--------+ PX: Float  |..
..+------------+........+------------+..
........................................

但是,对于'X'的每个值可以是'PX'的几个值,让我们添加一个菱形来表示它。

存在一对一关联的情况,但是,这种情况是一对多关联。

类图6

........................................
..+------------+...../\.+------------+..
..|  X: Float  +----<  >+ PX: Float  |..
..+------------+.....\/.+------------+..
........................................

钻石在框附近绘制,表示“很多”值。

让我们添加一个可选标签来解释关联的目标。

并指出如何应用此箭头的箭头。

类图7

........................................
..........<<..Probability Of............
..+------------+...../\.+------------+..
..|  X: Float  +----<  >+ PX: Float  |..
..+------------+.....\/.+------------+..
........................................

<强>摘要

可以有几种关联,你使用“继承”关联,这不适用于你的情况。

对象图适用于特定示例并具有值, 并且不会频繁使用变量。

类图是概念化,通常包含变量或属性,并且仅将值用于初始值或常量。

许多UML开发人员,跳过Object Diagrams,并使用Class Diagrams直接表示某些场景。 Altougth,Object Diagrams,仍然有用。

“对象图”用圆框表示,Class Diagrams用尖角表示。我无法用ASCII示例代表他们。

背景点不会出现在UML图中,我只是使用它来突出显示图表。

相关问题