2016-10-19 4 views
0

私は3人の違いを理解しています(少なくとも私はそうしていると思います)。私はこのような定義を持つ多くの他の同様の質問があることを知っていますoneこの例で使用されているアソシエーション、アグリゲーション、およびコンポジションは、なぜ使用されていますか?

私はgliffy.comから例を探していましたが、なぜ彼らが使用されたかのようにいくつかの関連性が使用された理由を理解するために大騒ぎしています。私が本当に苦労しているのは、いつアソシエーションを使うのかを理解することです。

質問のいくつかのI持っています:

  1. なぜ顧客の注文と顧客のクレジットカードの顧客住所のような凝集ない組合?
  2. 注文なしでItemOrderが存在しない場合、Order-ItemOrderはなぜ合成されませんか?
  3. なぜItemOrder-Itemは集計ではありませんか?

Online Golf store UML

答えて

-1

単に共有/複合集約を忘れます。それは意味が低く、必要とされているかどうか、またそれが正しいか間違って使われているかどうか、無益な議論につながります。アソシエーションと多重度を使用して(解釈してください)。

集計を意味のある方法で使用できる(ほぼ)唯一の場所は、DB外部キー(強制削除)とメモリー(空き未使用)管理です。

3

これらの質問に答えるには、なぜこのクラス図が描かれているかを知ることが重要です。著者だけが知っている、しかし多分それはgliffyの能力のデモンストレーションですか?そうでなければ、このモデルのクラスは、JavaやC#のようなオブジェクト指向言語で書かれたソースコードのクラスに対応していて、これらのクラス間の関係についての洞察を与えることを目的としています。

  1. カスタマーオーダーとカスタマークレジットカードは、なぜ顧客アドレスのような集約ではなく関連していますか?

    明らかに、著者は、これらの関係を「部分的な」関係とみなしません。たぶんお客様は、ソースコード内の注文書またはクレジットカードへの参照を持っていない可能性があります。たぶん、住所情報は顧客クラスの責任に属しますが、注文およびクレジットカード情報は責任を負いません。

  2. 注文なしでItemOrderが存在しないとした場合、なぜOrder-ItemOrderは合成されないのですか?

    おそらく、作者はUMLのサブセットのみを使用し、慣例によって構成を使用しないことがあります。おそらく、著者は、この図の目的のために集約と構成の違いを伝えることは重要ではないと考えているかもしれません。

  3. なぜItemOrder-Itemが集計ではないのですか?

    明らかに、著者は、この関係を部分的な関係とはみなしません。多分、作者は、ある特定のプログラミング言語構造を表現するために集約タイプの関係を予約しているかもしれません。この場合、ソースコードでは使用されません。たぶん、作者は、あるインタフェースを他のクラスに集約することはできないとの意見があります。

ところで、ItemOrderとShoppingCartの間の集計は明らかに間違っています。私はダイヤモンドが関係の反対側にあるべきだと思う。

関連する問題