2017-11-26 2 views
4

このUML diagramに基づいてJavaクラスを作成する必要があります。 問題は、赤い形の中に何が関係しているのか分かりません。 私はA, B, C, Dクラスの間の他のすべての関係をしましたが、私はそれを理解できません。UML図からJavaクラスを作成

誰でも私にヒントを教えてもらえますか?

これまでのところ私が持っている:

class A extends B 

class D extends C 

class C 
List<B> bElement; 

class D 
List<A> aElement; 

感謝を。

enter image description here

+0

有効なUMLであれば本当ですか? – Vanguard

+0

UMLツールで作成されたようです。こちらの画像は少し変わっています。だから、私は正しいと思います。 –

答えて

4

これは低いアソシエーションは、上部一つから継承することを意味します。下層が上層から継承するのと同じように。

コネクタ継承の概念は最近のUMLリリースでのみ導入されています(2.0以降の@ Henrietteの答えによる)。いずれにしても、両方の一般化と一緒に継承されているので、下位結合も一般化も実際には必要ではありません。

個人的に私はこのコンセプトには適していませんが、それを使用する人は知っています(彼らはオントロジで非常に高い抽象度で作業します)。

P.S.スペックの概念については、pを除いてあまり読むことはありません。 692:アソシエーション線間

汎化矢印はmodelElementsとして(線として示さAssociationClassesを含む)関連付けUMLEdgesあるmodelElementsとして一般化、及びソースとターゲットとUMLEdgesとして交換されます。

+0

これは、それが "美しさ"のためだけに使用されていることを意味しますか?この関係を翻訳するためにJavaクラスに追加するものは何もありませんか? –

+0

この場合はおそらく「レッスンの一部」であり、実装については無視することができます。言われたように、私はまだこのコンセプトの意味のある応用を模索しています。 –

+0

ありがとうございます。 –

3

協会の継承は、UMLは、おそらくほとんどの場合、オブジェクト指向分析設計に使用されているが、それは汎用モデリング言語ことを目指して2005年にUML 2.0で導入されました。そのため、プログラミング言語では必ずしもサポートされていない、多重継承、属性の特殊化/洗練化、関連付け継承などの機能が含まれています。しかし、OWL 2のようなオントロジ言語では、これらの概念は自然に表現することができます。

いくつかの他の目的のために、私はw -r.tを書きました。アソシエーション継承およびそれに相当するUML表現を提供しています。アソシエーションに関して

Association inheritance equivalent representations

とUMLの仕様、すなわちassociation specializationsubsettingredefinition 3つの密接に関連する概念を定義する属性。アソシエーションの特殊化は完全アソシエーションのレベルで適用され、サブセット化および再定義 はアソシエーションの終端および属性のレベルで適用されます。

関連性の専門用語の意味は、クラスの意味に似ています。つまり、アソシエーションA2は図(a)のアソシエーションA1の特殊化です。したがって、クラスC3C4のインスタンス間のすべてのリンクは、クラスC1C2のインスタンス間のリンクである必要があります。ただし、クラスC1C2のインスタンス間のすべてのリンクは、クラスC3C4のインスタンス間のリンクである必要はありません。図(A)におけるC1/C2を専門によりC3/C4

C1C2間のすべての関連付けがC3C4によって継承されることになります。さらに、C3C4の間のすべての継承された関連付けは、必ずC1C2の間の関連のサブセットになります。しかし、 図(a)はそれ以上です:がC3C4に継承されているだけでなく、新しいアソシエーションA2も導入されています。 A2は新しい協会であるため、関連性の専門化なしでは、A1A2に関連する方法について何かを推論することはできません。したがって、図(a)では、継承継承の目的は、新しいアソシエーションA2を導入し、それが既存のアソシエーションA1にどのように関係するかを述べることです。

図(b)では、c4 {subsets c2}と記載されています。これは、アソシエーションの終了によって表されるインスタンスの集合が、アライメントの末尾c2によって表されるインスタンスの集合のサブセットであることを意味します。アソシエーショナルエンドc3およびc1についても同様です。サブセット化 は、サブセット化はセットメンバーシップのみを考慮し、関連性の専門化はリンクメンバシップを決定する特性を特化する点で、関連性の専門化とは区別されます。

機能の定義を変更するには、再定義を使用します。例示的な関連付けとして、c4は、図(c)のc2を再定義します。再定義は、完全な関連ではなく、関連の終わりのために定義されている点で、関連専門から区別されます。

元の質問は継承階層で使用されていた関連継承に関連していましたが、継承階層がない場合でも継承継承も使用できることに注意してください。図(d)では、男性が離婚したすべての女性は、結婚した女性のサブセットです。図において

enter image description here

(A)及び(d)アソシエーションモデルの第一級オブジェクトです。したがって、それぞれの関連クラス間の継承関係を持つ関連クラス(A1/A2およびMarriedTo/DivorceFrom)で表すことができますが、関連付けを使用することで、関連クラス間の専門化よりも関連を専門化する意思表示がより簡潔になる場合があります。

要約:関連付けの特殊化は、その末尾の1つのサブセット化に相当し、再定義はサブセット化のサブコンセプトとして扱うことができます。

+0

私はサブセット/ redefを使うことができますが、なぜか(a)なぜ必要なのかは分かりません。このように一般化するとC3/4はC1/2からの継承を継承しませんか?それとも、私はコネクターの体重を違うものにして、2クラスの市民にしていますか? –

+0

@ThomasKilianあなたのコメントありがとうございます。 1対2級市民としてコネクターに公正なポイントをつけます。私はあなたのコメントを考慮に入れて私の答えを更新しました。 –

+0

詳細な説明はありがとうございます。私は今、少しはっきりと見ることができます。より多くの質問がありますが、それらはこのコメントセクションを爆発させ、私は最終的に新しい質問として代わりにそれらを求めます。私は可能な場合は、あなたの答えを複数回upvoteしたい:-) –

関連する問題