ボールとソケットの表記は合法的なUML2.0ですが、EAにそれを図に描画させる方法が見つかりません。ソケットとボールの間の依存関係を許可することを拒否します。下の図のように、それを実現する方法はありますか(小さなmsペイントマジック):
また、副次的な質問ですが、要素の反対側にボールまたはソケットを表示させることはできますか?
ボールとソケットの表記は合法的なUML2.0ですが、EAにそれを図に描画させる方法が見つかりません。ソケットとボールの間の依存関係を許可することを拒否します。下の図のように、それを実現する方法はありますか(小さなmsペイントマジック):
また、副次的な質問ですが、要素の反対側にボールまたはソケットを表示させることはできますか?
EA でボールとソケットを表示するには、2 つの異なる方法があります。
使用したものを使用して、Consumer クラスと Producer クラスから IProducer インターフェイス (それぞれ依存関係と実現) へのコネクタを描画しました。次に、クラスの Dependent インターフェイスと Realized インターフェイスの表示をオンに切り替えました。
このようにすると、ボールとソケットが固定されます。それらを選択することはできません (代わりにクラスが選択されます)、それらを親クラスに対して移動することはできず、コネクタのエンドポイントにすることもできません。
もう 1 つの方法は、Expose Interface を使用することです。
この方法では、クラスからインターフェイスへのコネクタを描画しません。代わりに、Expose Interface を使用して、各クラスに分類子としてインターフェイスを持つ埋め込み要素を作成します。
これらの公開されたインターフェイスは、それ自体が要素であり、希望どおりに動作します。それぞれのクラスの周囲にそれらを移動したり、それらの間にコネクタを描画したりできます。
この例では、IProducer インターフェイス要素へのコネクタがないことに注意してください。
インターフェイスを公開するには、2 つの方法があります。ダイアグラム ツールボックスで [インターフェイスの公開] を選択できますが、これはコンポーネント ツールボックスでのみ使用でき、クラス ツールボックスでは使用できないことに注意してください。それが、この例の Producer で行ったことです。
もう 1 つの方法は、クラスを右クリックして [新しい要素] -> [ポート] を選択することです。これにより、任意の名前を付けることができるポートが作成されます。次に、ポートを右クリックし、[New Element] -> [Provided / Required Interface] を選択します。
どちらの方法でも、[公開されたインターフェイス] ダイアログが表示されます。このダイアログでは、省略記号ボタン (...) を使用して公開するインターフェイス要素を選択し、プロジェクト ツリーでインターフェイスを参照できます。
ポートを使用するのは少し面倒に思えるかもしれませんが、厳密に言えば、より正確な UML です。また、1 つのポートが複数のインターフェース (提供されているものと必須のものの両方) を公開できることにも注意してください。これにより、ある種の論理ユニットを形成するインターフェースをグループ化できます。1 つのサービスを形成する複数のインターフェイスがあり、それらが連携する場合がありますが、そのクラスは複数のサービスを提供し、必要とします。
これは (私にとって) 個々のクラスではなくコンポーネントについて話している場合に、より理にかなっています。私は通常、クラスをモデル化するときに実現/依存関係を使用し、コンポーネントをモデル化するときにポートと公開されたインターフェイスを使用します。
EA では、ボールとソケットの接続をポート間で (のみ) 描画できます。「アッセンブリ」コネクタタイプをご使用ください。
ボールとソケットが UML 2.0 の正当な表記であることは正しいですが、それらは UML 要素ではなく、要素の関係を表しています。したがって、使用するツールに応じて、それらの間に依存関係を作成できる (またはできない) と思います。UML 仕様によると、少なくとも 2 つの NamedElement の間に UML 依存関係を作成する必要があります。