掲示板一覧   -   トピック一覧
   Enterprise Architect 全般
     C# の System.Collection.CollectionBase を使ったコレクションの表現


スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
未登録ゲスト
投稿日時: 2004-12-9 18:32

C# の System.Collection.CollectionBase を使ったコレクションの表現

C# の CollectionBase を使ったコレクションを、EA 上で表現したいと思い、ソースを読み込ませてみました。
TestCollection は、Test オブジェクトを保持します。

public class TestCollection:System.Collection.CollectionBase {
  public int Add(Test obj) {
    return List.Add(obj);
  }
}

public class Test {
  public string Value;
}


これを読み込ませると、確かにこの通りのクラス図ができあがるのですが、EA のクラスのプロパティにある、[関連のためのコレクションクラス] といった部分には反映されません。

結果的にこのようなソースを生成するには、EA ではどのようにクラス図を作成すればよいのでしょう。

よろしくお願いします。
tkouno
投稿日時: 2004-12-10 14:05
EA Administrator
投稿: 3939

Re: C# の System.Collection.CollectionBase を使ったコレクションの表現

コメントすべき点として2点ありますので、順に回答いたします。

まず、Enterprise Architectには生成されるソースコードの
中身の処理については、基本的に出力していません。
(単純なsetter/getterの場合には出力されるかと思います)

そのため、上記のコードで言えば、
return List.Add(obj);
については出力される機能がありません。

(実際、上記のソースコードからこのreturn文以外の箇所は
Enterprise Architectで生成できることを確認しました)


次に、Enterprise Architectは特定のフレームワークなどの
情報は、一切保持していません。今回は.NET Frameworkを
利用しているかと思いますが、

引用:

TestCollection は、Test オブジェクトを保持します。


という情報は、上記のソースにはどこにも記述されていません。
.NET Frameworkの仕様では、System.Collection.CollectionBaseは
コレクションであり、上記の処理からは、「開発者なら」Testオブジェクトを
保持することはわかるかもしれませんが、
Enterprise Architectはこれを理解することはできません。

そうしたフレームワークやライブラリに依存した意味解釈を行う
ことはできない点については今後も変わりません。
(この掲示板の別スレッドでStrutsの話がありますので
あわせてご覧いただけると助かります)

ご希望に沿うことができず申し訳ございませんが、
ご理解いただけると助かります。





未登録ゲスト
投稿日時: 2004-12-13 11:17

Re: C# の System.Collection.CollectionBase を使ったコレクションの表現

色々試してみて、EA での "コレクション" の意味がだいたい分かりました。

確かに、クラス図から .NET における厳密に型指定されたコレクションのスケルトンコードを出力するのは難しそうですね。

ありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ