2016-05-07 17 views
0

我正在学习Java 8 Programmer II认证,我正在考虑关系类可以有的。我理解作文,但是我想知道是否在作为类和类的类变量的集合的元素之间考虑了关系。例如,考虑以下代码:具有与Collection对象的关系的类是否与Collection的元素有关系?

public class A { 
    static ArrayList<String> strings = new ArrayList<String>(); 

    public A() { 
     strings.add("foo"); 
    } 
} 

我们是否说字符串的String元素与类A有关系?

回答

1

首先我们要明确,如果类AString将是关系如果类A本来简单String场像这样:

public class A { 
    static String aString; 

    public A() { 
     aString = "foo"; 
    } 
} 

...我是这么认为的!这将是“有 - 一个”realdonship - A has-a String

在你的例子中有一个String s的集合。我们也可以说类A有-a(很多;)String s ...您可以想象,类AString对象有很多关系;类A将它们集合在一起。这类似于众所周知的组合物实例“汽车”具有“轮子”

你也可以说这是单向的一对多关系(单向的,因为只有这个关系的一方知道另一方)。

1

我会说是的。这个集合在这里几乎是无关紧要的,更多的仅仅是类和字符串之间的“具有”关系的实现细节。至于这是一个全班级的关系而不是每个实例的关系,好吧,只要你知道,这就是你的意图。

0

has-a和is-a是直观的概念。它们不是编译器会检查的规则。这是一个共享词汇,用于与其他人有效沟通并用于制定设计决策。那么A类“有”那些字符串?是的,但你很少会说,相反你会说A类有一个字符串集合。一个简单的比喻是,当你背着一个包时,你不会立刻说你正在携带书,而是你最有可能说你背着一个装满书的包(字符串集合)。

+0

嗯..但我想我会说,我正在携带书.. – Shoikana

+0

请参阅。取决于上下文。我们两个都不会是错的。 – Cybermonk

相关问题