1

各クラスが実装クラスではなく、他のクラスのインターフェースへのリンクを持つように、UML で 2 つのクラス間の集約関係を表すにはどうすればよいですか?

たとえば、iFoo を実装するクラス Foo と、iBar を実装する Bar があります。Foo には iBar 型のメンバー変数が必要であり、Bar には iFoo 型のメンバー変数が必要です。

2 つの実装クラス間で集計を作成すると、メンバーはスーパークラスではなく、実装クラスの型になります。また、インターフェイス間の集約は UML では無効です (あまり意味がありません)。

4

2 に答える 2

1

インターフェイスはインスタンス化できないため、Bar は iFoo 型の属性を持つことができず、Foo は iBar 型の属性を持つことはできません。

あなたは、Bar と Foo の間の関連付けを望まないと言います。したがって、新しいクラス (FooEx) を作成し、そのクラスに iFoo を実装させることができます。次に、Bar は Foo の代わりに FooEx への関連付けを持つことができます。

于 2008-09-19T04:20:10.447 に答える
1

Foo (実装) 集約 iBar (インターフェース) を持たないことはできますか? それがこの関係を説明する適切な方法のように思えます。

だから、このようなもの:

-----------------      -----------------
| <<interface>> |      | <<interface>> |
|     iFoo      |<>  <>|     iBar      |
-----------------  \/  -----------------
        ^          /\          ^
        |         /  \         |
-----------------/    \-----------------
|      Foo      |      |      Bar      |
-----------------      -----------------
于 2008-09-18T16:05:49.510 に答える