2016-05-07 4 views
0

私はJava 8 Programmer II認定資格のために勉強しています。私は構成を理解していますが、クラスのクラス変数であるコレクションの要素とそのクラスの間に関係があるかどうかは疑問でした。たとえば、次のコードを考えてみましょう:Collectionオブジェクトとhas-a関係を持つクラスは、Collectionの要素と関係がありますか?

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

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

文字列の文字列要素はクラスAとの関係がありますか?

答えて

1

まず我々は明確にする必要があります参照してください:

public class A { 
    static String aString; 

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

...私はそう思います!そして、それは "has-a" realtionship - A has-a Stringです。

あなたの例では、Stringのコレクションがあります。また、クラスAには-があります。AクラスはStringオブジェクトと多くの関係があると想像できます。クラスAはそれらをコレクションに集約します。これは、よく知られている組成例の例に似ている。「車」は「車輪」を有する。

これは単方向の1対多の関係(この関係の片側のみが他のものを知っているため、一方向性)であると言うこともできます。

1

私ははいと言います。このコレクションは、ここではほとんど重要ではありません。クラスと文字列の間には「has-a」関係の実装の詳細があります。これがインスタンスごとの関係ではなくクラス全体の関係であるということは、あなたが気づいている限り、それはうまくいきます。それがあなたの意図です。

0

Has-aとis-aは直感的な概念です。コンパイラがチェックするルールではありません。それは、他者と効果的にコミュニケーションするために使用される共有語彙であり、意思決定に使用されています。クラスAはこれらの文字列を持っていますか?はい、まあまあ、クラスAにはストリングのコレクションがあるとは言いません。シンプルな類推は、あなたがバッグを運んでいるときに、あなたが本を持っているとすぐには言わず、むしろあなたが本(紐のコレクション)でいっぱいのバッグを運んでいると言う可能性が高いということです。

+0

hmm ..しかし、私は本を持っていると言います。 – Shoikana

+0

を参照してください。文脈によって異なります。私たちのどちらも間違っていません。 – Cybermonk

関連する問題