与 Collection 对象具有关系的 class 是否与 Collection 的元素有关系?
Does a class with has-a relationship with a Collection object have a relationship with the Collection's elements?
我正在学习 Java 8 Programmer II 认证,我正在研究 classes 可以拥有的关系。我了解组合,但我想知道集合的元素之间是否存在关系,即 class 的 class 变量和 class。例如,考虑以下代码:
public class A {
static ArrayList<String> strings = new ArrayList<String>();
public A() {
strings.add("foo");
}
}
我们说字符串的String元素和classA有关系吗?
我会说是的。集合在这里几乎无关紧要,更多的只是 class 和字符串之间的 "has-a" 关系的实现细节,而不是其他任何东西。至于这是 class 范围内的关系而不是每个实例的关系这一事实,只要您知道并且这是您的意图就可以了。
是的,这是一个"aggregation" or a composition depending on the lifetime of related objects. See also https://softwareengineering.stackexchange.com/questions/61376/aggregation-vs-composition
首先我们应该弄清楚 class 是否 A
和 String
如果 class A
有简单的 String
字段像这样:
public class A {
static String aString;
public A() {
aString = "foo";
}
}
……我也这么认为!那将是 "has-a" 关系 - A
有一个 String
。
在您的示例中有一个 String
的集合。我们也可以说 class A
has-a (lot of ;) String
s... 你可以想象 class A
有很多与 String
个对象的关系; class A
将它们聚合在集合中。这类似于众所周知的组合示例 "car 'has' wheels".
你也可以说这是单向的一对多关系(单向的因为只有一方知道另一方)。
Has-a 和 is-a 是直观的概念。它们不是编译器会检查的规则。它是一个共享词汇表,用于有效地与他人交流并用于做出设计决策。那么 class A "has" 那些字符串呢?是的,但您很少会说 Class A 有一个字符串集合。一个简单的类比是当你背着一个包时,你不会立即说你在背着书,而你很可能会说你背着一个装满书的袋子(字符串集合)。
我正在学习 Java 8 Programmer II 认证,我正在研究 classes 可以拥有的关系。我了解组合,但我想知道集合的元素之间是否存在关系,即 class 的 class 变量和 class。例如,考虑以下代码:
public class A {
static ArrayList<String> strings = new ArrayList<String>();
public A() {
strings.add("foo");
}
}
我们说字符串的String元素和classA有关系吗?
我会说是的。集合在这里几乎无关紧要,更多的只是 class 和字符串之间的 "has-a" 关系的实现细节,而不是其他任何东西。至于这是 class 范围内的关系而不是每个实例的关系这一事实,只要您知道并且这是您的意图就可以了。
是的,这是一个"aggregation" or a composition depending on the lifetime of related objects. See also https://softwareengineering.stackexchange.com/questions/61376/aggregation-vs-composition
首先我们应该弄清楚 class 是否 A
和 String
如果 class A
有简单的 String
字段像这样:
public class A {
static String aString;
public A() {
aString = "foo";
}
}
……我也这么认为!那将是 "has-a" 关系 - A
有一个 String
。
在您的示例中有一个 String
的集合。我们也可以说 class A
has-a (lot of ;) String
s... 你可以想象 class A
有很多与 String
个对象的关系; class A
将它们聚合在集合中。这类似于众所周知的组合示例 "car 'has' wheels".
你也可以说这是单向的一对多关系(单向的因为只有一方知道另一方)。
Has-a 和 is-a 是直观的概念。它们不是编译器会检查的规则。它是一个共享词汇表,用于有效地与他人交流并用于做出设计决策。那么 class A "has" 那些字符串呢?是的,但您很少会说 Class A 有一个字符串集合。一个简单的类比是当你背着一个包时,你不会立即说你在背着书,而你很可能会说你背着一个装满书的袋子(字符串集合)。