ログイン
検索
メインメニュー
フォーラム一覧   -   トピック一覧
   UML全般
     オブジェクトをダイナミックにサブクラス化する場合の記法
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
wasiro
投稿日時: 2008-5-12 14:35
新米
登録日: 2008-5-12
居住地:
投稿: 1
オブジェクトをダイナミックにサブクラス化する場合の記法
Windowsのプログラムにある、CWnd::SubclassWindowのように、オブジェクトをダイナミックにサブクラス化する場合の、シーケンス図やクラス図での記法についてどう書いていいか悩んでいます。皆様どのように書いていますか?
この場合、これ以後のオブジェクトへのメッセージは基本クラス側にマップされたオブジェクト(window)が受けることになるので、シーケンス図でうまく書く方法がないだろうかと悩んでおります。
joba
投稿日時: 2008-5-15 16:42
開発者
登録日: 2006-4-27
居住地: Fukui
投稿: 597
Re: オブジェクトをダイナミックにサブクラス化する場合の記法
wasiroさん、こんにちは。

ずばり、な回答ではなくて申し訳ありませんが、表記上は、クラスの静的構造の通りに記述して、ノートなどで補足的に表現するのが良さそうに思います。

動的継承を一般的にこう表記する、という例は今のところ見たことがありませんが、ECMAScriptなどのプロトタイプベースのオブジェクト指向言語では多用する手法ですし、もしかしたら存在しているのかもしれません。

どなたかご存知の方がいらっしゃいましたら、書き込んでいただけると幸いです。
naka_aki
投稿日時: 2008-5-15 19:53
常連
登録日: 2006-7-4
居住地:
投稿: 42
Re: オブジェクトをダイナミックにサブクラス化する場合の記法
UMLもしょせんはOOのやりかたのうちの1つの流派を支援してるだけ、だと思います。

UMLは成立年代に影響されすぎちゃったんじゃないかと邪推してます。
Java…いやC++か…の影が強すぎると思う。
UML作った人たちは、ECMAScriptみたいな動的言語でまともなプログラムをする日が来るなんて考えてなかったんじゃないかな?

世間的には、オブジェクト指向「スクリプト」言語と銘打ったRubyがブレイクしたことで、状況が色々変わっちゃったんじゃないかなあ。



>SubclassWindow

ご存知というわけじゃなく、一案としてなんですが、
(ruby的な書式でいうと)
obj1.subclass!

obj2 = obj1.subclass
で代用するって手はどうでしょう?

自分の分身(ただし性質はチョット変更してる)を作って、そいつに以降の仕事をやらせる、と捉える。プロキシとかデコレータとかそれこそプロトタイプとかのような考え方です。

(もちろん、別インスタンスにする(と見なす)と凄く不味くなってしまうケースでは、使えない手ですが。)

そうすれば、例えばシーケンス図だと、obj1.subclassからobj2がcreateされたように描けます。

subclass化をキャンセルする(できるんでしたよねたしか)操作は、 obj2の破棄で代用というか表現できます。Lifecycle的にはobj1の寿命がobj2の寿命をすっぽり包んでる感じになりそうです。


----------------
A.nakamuraです。

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を