2012-03-26 1 views
2

どのようなプログラミング言語でもこのようなことがありますか?UMLではインスタンスが複数の分類子を実現できるとはどういう意味ですか?

これはどこで使用できますか?例えば

enter image description here

音符somethingStrangeは(その下線)、そのインスタンスのクラスではなく、これはオブジェクト図であること

仕様(セクション7.3.22)と言います。

インスタンス指定は、その分類子と同じ表記法を使用して表されますが、分類子名の代わりに、インスタンス名(存在する場合)、コロン( ':')およびクラスifier名または名前。

複数の分類を示すための規則は、カンマで自分の名前を分離することです。 「複数の分類」で立ち往生

ので、イム。

+0

これはUML表記ではありません –

+1

私は画像を添付できませんが、これは良く見えますか? http://dl.dropbox.com/u/45912725/cat-o-panzer.png – reimai

+1

私はあなたに写真を添付し​​ました –

答えて

0

外延的ではなく、内包タイピングを持つ任意の言語は、このような構築が可能になります。

たとえば、RDFでは、2つのソースが完全に競合するWebリソースに関するクレームを作成することができます。または、「ダックタイプ」の言語では、オブジェクトは2つの無関係なタイプのすべての特性を持つことができます。

エクステンション言語では、プロングがある場合はフォーク、ハンドルがある場合はスプーン、ボウルがスプーンの場合、プロングとボウルの両方がある場合はフォークとスプーンの両方になります。

UMLがより一般的に適用されるC++/Java/C#のような言語とクラス指向のインテリジェント言語との違いは、スプーンクラスとフォークの両方を定義するためにスポーククラスを必要としないことです分類子に属するものは、分類子の要件を満たすかどうかによって定義されます。

0

それはDependencyされます。 依存関係は、ある時点でそれを使用するため、あるクラスが別のクラスに依存していることを示す弱い形の関係です。 1つのクラスは、後者が前者のメソッドのパラメータ変数またはローカル変数であるかどうかに依存します。これは、前者の属性が後者のインスタンスである関連付けとは異なります。

言い換えれば、あなたのsomethingStanceクラスは、その下の両方CatPanzer

を使用します、あなたが参照している場合は、複数の継承だ、それは

Public class SomethingStrange{ 
    public Cat CatDependency{get;set;} 
    public Panzer PanzerDependency{get;set;} 

} 
+0

まあ、実現は依存の形ですが、なぜInstanceSpecificationが能力を持っているのか理解できません1つ以上の分類器を表現する。 Spec: "複数の分類子が指定されている場合、そのインスタンスはすべて に分類されます。 コード生成時に何が起こるでしょうか? – reimai

+0

一般化ではなく、ここでは多重継承については言及していません。 SomeThingClassはおそらく、ある時点でCatまたはPanzer、またはその両方を使用します SomethingStangerClassはCatまたはPanzerのサブタイプではありません –

+0

私はまず、ダイアグラムが正しいかどうかを調べる必要があると思います。 – ShiDoiSi

0

ように見えるかもしれない方法のほんの一例ですnothing wrong with that、(あなたが一般化のための強固なエッジを使用する必要があることを除いて)のクラス;)も

インターフェースも分類器であることに注意してください、そうあなたの質問のテキストは洗練されている必要があります。結局、複数のインターフェースを一般化することに間違いはありません。

+0

あなたはそれがそうでなければ固体の縁を持つべきであると言っていましたが、そうでなければ "関係" –

+0

@MassimilianoPelusoは分類器の間にあり、破線の白い三角はインタフェースの実現です。 –

0

UMLオブジェクトが同時に(それらは無関係であっても)、いくつかの異なるクラスのインスタンスであることを可能にし。これが通常の規約ではなく、プログラミング言語でサポートされていないという事実は別の問題です。 UMLは、特定のテクノロジでのみそのサブセットを実装できる場合でも、できるだけ幅広く試行します。