2016-10-01 25 views
1

我正在读关于所述组合物的定义,这是Java组成 - 也适用于原始类型变量?

“具有-A”,因此,例如汽车具有发动机

一种组合物,是指一类具有作为引用类型变量其字段中的一个另一类。

什么让我困惑,我无法找到,如果我们有,例如银行账户类,我们用这样的:

私人双平衡= 0.0;

我们可以说一个帐户有一个权利的余地?这是否意味着原始类型变量也可以包含在“组合”的定义中?

感谢您的帮助。

+0

为您提示:对于任何货币值(如银行账户余额等),请使用BigDecimal对象而不是双重或浮动原始类型。 –

回答

0

Association,Aggregation,Composition,Abstraction,Generalization,Realization,Dependency是类之间的关系。我们不会将这些术语用于基元变量。

构图是对象之间的“has-a”关系。银行账户类有余额但余额不是一个对象。因此,我们不会在组合的定义中包含此内容。

+0

请根据银行账户示例详细说明一下。 :) –

+0

是的,我认为我的问题是“有点”原创的,因为作文的大多数定义(我至少可以找到)对原始类型变量没有任何说明。我认为我在很大程度上理解什么是构成意味着相当简单的概念,但如果问题是以我的方式提出的,那么当一个类有一个原始类型作为其领域之一时,我们称之为关系?我们为什么可以用同一个句子描述这种关系?我们也可以有一个“int code”,并说一个帐户有一个代码(即使你可能会使用一个字符串,但你明白我的意思) –

+0

根据定义,组合是对象之间的“has-a”关系(不是Java对象)。请参阅计算机科学中对象的定义:https://en.wikipedia.org/wiki/Object_(computer_science)。所以事实上任何类型的变量都可以被视为对象。 –

0

构图是一个概念,我觉得它不应该受限于语言特定的规则。

在您的示例帐户类与平衡有“有一个”关系。然而,由于原始类型double足以表示平衡,所以在您的示例中使用了双精度。但这并没有改变“有一个”的关系。所以在概念上,不管变量是否为原始类型,它都应该是构成的一部分。

wikipedia entry of composition中,您可以看到C中Composition的示例,其中primitive被视为组合的一部分。

我同意,在一个典型的UML图中,我们可能会将余额显示为Account类的属性,而不是在单独的块中显示它,但余额仍然是复合结构 - Account的一部分。