2016-10-01 5 views
1

私は車のエンジンJavaコンポジション - プリミティブ型変数にも有効ですか?

組成物クラスは、そのフィールドの参照型変数として有することを意味有する例えばので、「A-Aを有する」

ある組成定義について読んでいました別のクラスの

何私を混乱させると私は見つけることができません、私たちは例えば銀行口座のクラスを持っており、我々はこれを使用する場合:

プライベートダブルバランス= 0.0;

アカウントに残高があると言うことができますか?それは、基本的な型変数も "合成"の定義に含めることができるということですか?

ありがとうございました。

+0

あなたのためのヒント:銀行口座残高などの金銭的価値については、倍精度または浮動小数点型の代わりにBigDecimalオブジェクトを使用します。 –

答えて

0

アソシエーション、アグリゲーション、コンポジション、抽象化、一般化、実現化、依存関係はクラス間の関係です。プリミティブ変数にはこれらの用語を使用しません。

構成は、オブジェクトの間に「has-a」関係があります。です。銀行口座の残高は残高ですが、残高は目的ではありません。したがって、の構成の定義には含まれません。

+0

銀行口座の例に従ってもう少し詳しく説明してください。 :) –

+0

はい私は私の質問は、(私が少なくとも見つけることができる)構成のほとんどの定義は、基本的な型変数については何も言わないので、 "幾分"オリジナルだと思った。私は、構成が何を意味するのか、かなり単純な概念であることをほとんど理解していると思います。しかし、質問が私のやり方で提起されれば、クラスがそのフィールドの1つとしてプリミティブ型を持つとき、なぜ、同じ文章との関係を説明できるのでしょうか?私たちはまた、 "int code"を持つことができ、アカウントにコードがあると言うこともできます(たとえ文字列を使用していても、おそらく私が意味するものを得ます) –

+0

定義のコンポジションはオブジェクト間に "has-オブジェクト)。コンピュータサイエンスのオブジェクトの定義については、https://en.wikipedia.org/wiki/Object_(computer_science)を参照してください。したがって、実際には、どのような型の変数もオブジェクトとして考えることができます。 –

0

コンポジションは概念であり、言語固有の規則に縛られるべきではないと私は感じています。

あなたの例では、Accountクラスは残高と "has-a"関係を持っています。しかし、プリミティブ型doubleはバランスを表現するのに十分なので、あなたの例ではprimitive doubleを使用しています。しかし、それは "has-a"関係を変えない。概念的には、変数が基本型であるかどうかにかかわらず、それは合成の一部でなければならない。

wikipedia entry of compositionには、プリミティブがコンポジションの一部とみなされるCのコンポジションの例があります。

一般的なUMLダイアグラムでは、balanceを別のブロックに表示する代わりにAccountクラスのプロパティとして表示することができますが、残高は複合構造 - Accountの一部です。

関連する問題