2009-03-16 6 views
3

OCamlで直接オブジェクトを作成しました。OCaml即時オブジェクトのUML

let x = 
object (self) 
val dataMember = 3 
method aMethod = print_endline "Called a method" 
end;; 

オブジェクトには名前がありません(匿名とみなされますか?)、どのようにUMLで正しく表現できますか?

ありがとうございました。

答えて

3

nonce-nameなどの式値を与えることができます。この文脈での「正しく」は、実際にはっきりしていることを意味します。国際UML標準化団体などから「正しい答え」はありません。

あなたはより具体的な答えをしたい場合は、なぜ「foo_mungler」は、それが匿名でなかった場合、あなたがそれを与えているだろう、わかりやすい名前に置き換えられAnonymous_foo_munglerのようなもの、それを呼び出すことはありませ。

+0

が合意しました。私のUMLの経験は特別なものでしたが、私はあなたの質問に答えるのに役立つものは考えていません。それはプログラムのドキュメント化に関するものであり、プログラム自体には影響しません。おそらくそれが置かれているモジュールと、コメントの中に記述的な名前がありますか? – nlucaroni

4

ここに私が見つけたものがあります。私はちょうど(あなたができれば)下のイメージに従うが、最初にいくつかの議論。 UMLで何かを命名しても、実装で匿名にすることはできません。私はそれを他のクラスの "内側"が困難であると示すことでそれ以上のことをしているので、以下で使用されるパッケージ/コンポーネントインクルードラインです。インスタンス化接続を使用して、探しているものを表示することもできます。また、コンポーネントを含めることもできます。結局のところ、私はなぜ匿名のクラスをモデル化するのかは分かりませんが、構造の一部ではないため、クラスの外では決して参照することはできません(一般的に)。なぜインスタンスとプロパティが匿名の要素を許可するのかあなたがLISPのモデリングを始めたら、この質問は本当に楽しいものになります。

アップツーデートUML 2.0のために:それは図3.22であることと、それは言語の一部ではないとして、著者が間違っている「ステレオタイプ」は言うことを Anonymous class example http://www.informit.com/content/images/chap3_0131428489/elementLinks/03fig22.gif

注意それは正式なモデルの一部ではなく、古い文字列であることを意味するキーワードです。すべてのツールが表記法をサポートしているわけではありませんが、RSA/RSMは私の驚きになります。 UML仕様自体から

Source Page - http://www.informit.com/articles/article.aspx?p=336264&seqNum=3

特性について - プロパティのシンボルは、その名前の文字列に(コロンなし)だけ単一の名前を含んで示されてもよいです。これは、包含クラスの名前空間内にネストされた匿名の名前付きクラスの定義を意味します。パーツはこの匿名クラスをその型として持つ。匿名クラスのすべての出現は、他の出現とは異なります。匿名で定義されたクラスには、パートシンボルで指定されたプロパティがあります。匿名で命名されたクラスの属性と操作を定義するコンパートメントを表示することは許可されています。

インスタンスの場合(名前はインスタンスの場合は任意です) 名前のない分類子の匿名インスタンス指定の標準表記は、下線付きのコロン( ':')です。インスタンス指定がその指定として値指定を持つ場合、値指定は、名前の後に等号( "=")の後に、または名前の下に等号なしで表示されます。インスタンスの指定が、名前を含む包囲形状(四角形など)を使用して表示されている場合、囲み形状内に値の指定が表示されます。