ポート

コンポジット構造図におけるポートは、 分類子インスタンスとその環境の間、 または分類子の振る舞いとその内部パーツの間の、 相互作用ポイントを定義します。

外部環境と内部パーツ間の相互作用は、 すべてポートを介して移動させる必要があるため、 ポートを使用することで、 その環境からオブジェクトの内部パーツを分離することができます。 コネクターは、ポートを分類子のプロパティーに リンクさせて、2 つ以上のインスタンス間の通信を起動します。 分類子用に複数のポートを定義することで、 相互作用の発生元となるポートに応じた、 さまざまな相互作用を表示することができます。

ポートは、ポートの名前が付いた小さい正方形として、ダイアグラム・フレーム内に表示されます。 コンポジット構造図の境界線およびコンポジット構造図の内部パーツに、 ポートを追加することができます。

例えば、次の図では、ダイアグラム・フレームに 3 つのパーツが表示されています。 2 つのパーツは分類子 Wheel で型付けされ、3 つ目のパーツは分類子 Engine で型付けされています。 Delegate connector という直線により、内部パーツ e:Engine が、コンポジット構造図の外側の境界線上にあるポートにリンクされています。 外部ポートは、分類子 Car で型付けされ、Port:Car という名前が付けられています。 コネクターには、外部ポートに向かう開いた矢印が付いています。 front:Wheel[2] と rear:Wheel[2] の 2 つの Wheel パーツは、Assembly connectors という直線で、 Port:Engine という内部ポートに接続されています。

ポートは、両方向への相互作用が可能です。 必須インターフェースおよび提供インターフェースを追加することで、 分類子とその環境間に生じる相互作用の型を指定することができます。

例えば、次の図のダイアグラムには、carSeat:Seat という 1 つのパーツと 2 つのポートを持つ Car 分類子が表示されています。 DriverSeatbelt:Seatbelt というポートがパーツ上に表示されています。また、 短い直線でポートの上部に接続された円があります。 この円は、Car クラスが車を運転するドライバーに提供する SafetyDevice という提供インターフェースを表します。 コンポジット構造図の境界線上にある Engine:PowerGenerator というポートは、 実線で半円に接続されています。 この半円は、車を動かすために Car クラスが必要とする Gasoline という要求インターフェースを表します。

ポートの isService プロパティーを使用して、 コンポジット構造図内のポートの位置を変更することができます。 isService プロパティーが true に設定されている場合は、 そのポートはコンポジット構造図の境界線上に表示され、 そのポートがこの環境に必要であることを示します。 プロパティーを false に設定すると、 ポートは構造コンパートメントの内側に移動し、 ポートが分類子の内部実装のためのみに使用されて、 かつこの環境には必要とされていないことを示します。 isService プロパティーが false に設定されている場合は、 分類子の使用に影響を与えることなく、 ポートの削除または変更を行うことができます。


フィードバック