2011-03-14 18 views
7

通常、インタフェース間に集約の関連付けを行いますか?UMLクラス図のインタフェース集約

例:ここでは

Example Diagram

、私は1つの集約が冗長であると感じています。インタフェースの間のインタフェースは、クラスのクライアントが使用するものであるため、より重要です。 BMWとLuxuryWheelは常にICarとIWheelを通じて使用されます。ただし、ICarはIwheelを実際には集約しません。これはインターフェイスであり、実際のロジックが含まれていないためです。 BMWは明確にLuxuryWheelを集計しますが、それはほぼ実装の詳細です。

これはどのようにモデル化しますか?アグリゲーション(またはアソシエーション)を抽象的な、つまり実装されるものとしてマークする方法はありますか?あなたはUML specを見れば

答えて

9

、あなたは7.3.24でのことを見つけることができます:

特に

、 インタフェース間の関連が準拠 協会はインタフェースの実装 の間に存在しなければならないことを意味します。

はい、インターフェイス間で集約を描くことができますが、ダイアグラムが期待どおりの意味を持つとは限りません。

+0

7.3.24が該当します。私がそのセクションを読んで(そしてその例を見て)、具体的なクラス間の関連を明示的にモデル化していないように思えます。それらは、インタフェース間の関連付けによって暗示されます。つまり、BMWとLuxuryWheelとの関連性は非常に高いです。 – TheFogger

+0

@TheFogger:うーん、それは質問です...仕様に「存在しなければならない」というのは、モデル内にあるべきであることを意味します。そのため、インターフェイス間に関連性があるため、ICarのインスタンス(BMW)とIWheel(LuxuryWheel)があります。 一方、私はUML仕様の自然言語の記述にはあまり自信がないので、あなたはそれらの灰色の領域の1つに挑戦したと言いたいと思います。たぶんインターフェイスの代わりにAWheelsの集約を持つ抽象クラスACarを使うべきでしょう。それはほとんどの人が快適になることです。 – ShiDoiSi