UMLクラス図の矢印の意味を理解しようとする助けが必要です。具体的には、この複合図です。単純な線(クラスから別の線へ)と矢印(継承矢印ではなく、黒い線を指す)の違いは何ですか?
画像についてより詳しく説明するために、画像に番号を付けました。うまくいけば、これが私の文章をより明確にするのに役立ちます。
ここで実際に使用されている行には、関連(1)、構成(4-> 2)、継承(3)の3つのタイプがあります。
Client
とBookComponent
の間など、2つのクラスを結ぶ実線は、単なる関連関係です。これは、クラスが知っている(おそらくメソッドへの引数として受け取るのと同じように)か、または別のクラス(おそらくインスタンス変数として)を持っていることを示すためによく使用されます。装飾がない場合、または両端に矢印がある場合、関係は双方向です。2つのクラスは関係を共有し、互いについて知っています。図の1行目など、場合によっては、関係に方向性があります。 Client
クラスはBookComponent
について知っているが、BookComponent
にはClient
がないか、または知っていないため、その逆は当てはまりません。多重度やクラスの役割など、関連関係に表示できる他の注釈もあることに注意してください。
次の行は、BookComposite
をBookComponent
に接続する行です。これは、Client
とBookComponent
の間の線によく似た関連付けです。ただし、2と4のラベルを付けたポイントの注釈は、関係に関する追加情報を追加します。ポイント1の線、ポイント2の矢印は同じことを意味します。BookComposite
はBookComponent
インスタンスを認識しますが、その逆(方向関係)は認識しません。ポイント4の注釈は、集約関係を示しています。BookComposite
は、BookComponent
のコレクションです。ただし、これは強力な関係ではないため(強い構成関係と同様)、集計はBookComponent
がBookComposite
の外側の場所を示すことができることを示します(BookComposite
がBookComponent
を持つ必要はありません)。
注目すべき点は、方向の関連付けを示すために使用される矢印は、通常、この画像に示すように黒一色の矢印ではないことです。私は通常、画像に表示されているものよりもv
に近い白抜きの矢印として表示されます。
最後に、3というラベルの付いた点は、質問で述べた継承関係です。
UMLモデリングの詳細に興味がある場合は、 ML Distilled を購入することをお勧めします。 Martin Fowlerによる優れた本で、クラス、シーケンス、オブジェクト、パッケージ、デプロイメント、ユースケース、ステートマシン、アクティビティ、コミュニケーション、複合構造、コンポーネント、コラボレーション、相互作用の概要、およびタイミング図をカバーしています。
あなたの写真はいくつかの異なる関係を示しています。
ClientクラスとBookComponentクラスの間の関係は、包含関係です。つまりクライアントにはBookComponentのインスタンスが含まれます。
BookCompositeとBookComponentには2つの関係があります。開いた矢印は汎化関係です(つまり、BookComponentはBookCompositeを一般化します。または、BookCompositeはBookComponentから特殊化/派生します)。テールにダイヤモンドが付いたクローズドアロヘッドは集合体です。つまり、BookCompositeにはBookComponentのコレクションが含まれています。ダイヤモンドが満たされていないという事実も重要です。これは、含まれているBookComponentsのライフサイクルが、含まれているBookCompositeのライフサイクルに関連付けられていないことを意味します。アグリゲーションの代わりに入力された場合はコンポジションであり、BookCompositeが破棄された場合はBookComponentsも同様に破棄されます