2016-11-03 5 views
0

データからグラフを作成するアプリケーションのUMLクラス図を設計しています。
私は、データを読み込んでグラフを作成するアプリケーションドライバクラス自体を持っています。 私は "頂点"クラスの配列を含む様々な属性を持つ "グラフ"クラスを持っています。
上記のように、ノードに関連する属性を持つ「Vertex」クラスもあります。グラフアプリケーションUMLクラス図

私は上記の表現の最善の方法を考え出しています。
"Graph"クラスが "Vertex"クラスの集合体であると言うのは正しいでしょうか?
ドライバクラスはグラフを作成することをどのように表示する必要がありますか?
ありがとうございます。

+0

クラス図を自分で作成することをおすすめします。また、単一のプロジェクトでは、1つの図タイプと1つの図タイプではめったにできません。 – Ister

答えて

2

下記の図を参照してください。各頂点がただ1つのグラフの一部であると仮定して、私は、強い形態の集約である構成を使用しました。

enter image description here

+0

ありがとう!私のダイアグラムは、代わりにコンポジションがあることを除けば、それに非常に似ています。私はちょうど1つのフォローアップの質問を持っています - 集計はなぜより適切ですか?頂点はグラフなしでは存在できないからですか? 私のソフトウェアは、ドライバクラス内にノードを作成し、Graphインスタンス上のメソッド(addVertex(Vertex:theVertex)など)を呼び出して頂点を追加します。 – GreenApples53

+1

共有/複合集約についてはあまり気にしないでください。これは、集約要素に応じて要素の存続期間と関係しています。その使用法は実際にモデルを理解するのに役立つよりも混乱を招いています。個人的に私は、このダイヤモンドの唯一の実際の使用は、外部キー制約とメモリ管理であると考えています。 –

+0

個人的には、全パート関係を示すためにオープンダイヤモンド(「共有集約」)、塗りつぶされたダイヤモンド(「合成」)のみを使用するのではなく、インスタンスが破棄されます(db条件ではカスケード削除)。グラフが存在する限り、グラフの頂点が存在する場合のみ、コンポジションを使用します。それ以外の場合は、プレーンアソシエーションを使用します。少なくとも、それは私のアドバイスです。 –