掲示板一覧   -   トピック一覧
   Enterprise Architect 全般
     C++ の template メンバ関数の表現法について


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

C++ の template メンバ関数の表現法について

多分に C++ とUML の相性(?)の問題な気はするのですが、
関数の template は UML 的には普通どうやって表現するもの
なのでしょうか。

template<typename T>
class foo
{
private:
  T  t_;
public:
  // 暗黙の型変換(Y->T)が前提
  template<typename Y>  foo(Y t):t_(t){}
  ....
};


例えばこんなクラスがあったとき、T の方はパラメータライズドで
いいとして、メンバ(に限らず)関数の template (この例では Y )の
方を、UMLで表現する方法がわからないのですが、2.0だと適切な表現が
あったりするのでしょうか。

ちなみに、(当然のことながら) EA にソースを読ませると単に型名が
"Y" の引数になり、特に template うんぬんは表現されません。
# 現状は、ノートで補足したりしてます。

# 独自タグなり作って、EA4.1のソース生成/読出テンプレートを
# 駆使すると、(表示はともかく)生成と読み出しについて
# 完全なマッピングも出来るんでしょうか....。


それ以前に、UML 使う前提で template なんか駆使するなという
ことかな....とは薄々感じるのですが、これがあってこその C++なので。

C++ 使いの方はどうされているのか、よろしければ教えていただけない
でしょうか。
未登録ゲスト
投稿日時: 2004-7-30 17:30

Re: C++ の template メンバ関数の表現法について

テンプレートメンバ関数(parameterized operation)に関してはSuperstructureの17.5.12にあると思いますが.
#EAでどうやるかってことかな?
#だとしたら,分かりませんが…


仕様上の表記としては今回の例の場合,以下のようになるかと思います:

public foo <T> << T->Y >>(t:T)

ちなみに複数の場合は:

public bar <T1, T2> << T1->Y1, T2->Y2 >>(t1:T1,t2:T2):Boolean
未登録ゲスト
投稿日時: 2004-8-1 22:05

Re: C++ の template メンバ関数の表現法について

レスが遅れてすみません。

17.5.12 がこれだったのですか。完全に勘違い...というか、
ちゃんと理解できてませんでした。ありがとうございます。

C++ template のマッピングに関する情報は手元に少ない
(というかほとんど仕様書くらいしかない)のですが、
「仕様準拠の表記」と「ソースとの同期」をツールで
実現したいとは思うものの、parametarized 自体、
実際にどの程度使われていて、どの程度がそれに対応している
ものなのか...。


# EA については、とりあえず自前のテンプレートライブラリを
# CTF でなんとかしようと C++ 用の CTF をいじってちょこちょこ
# 確認などしてますが、まだまともに同期できるような設定には
# 至っていません。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ