K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]

新規投稿 | 開設者ホームページへ戻る | ヘルプ

[170] Re:データ構造の重要性
投稿者:(ぱ)
2007/02/20 02:13:25

>1)インターフェース継承による多重継承によりWINDOWを表す方法 >2)集約によりWINDOWをもつ方法 >の2つでは、若干違いがあると思います。 >クラスのクライアント側から見た場合、2)の場合、あくまでも外面は >TREE_NODEであり、WINDOWではない訳です。 ちょっと今まで出た案を整理しますね。 案1)多重継承。WINDOWがSCREEN_OBJECTとTREE_NODEを多重継承する。 案2)インタフェースと委譲を使う。WINDOWはSCREEN_OBJECTを継承し、  TREE_NODEインタフェースを実装する。  TREE_NODEの実装はTREE_NODE_IMPLクラスにあって、WINDOWは  TREE_NODE_IMPLへの参照を保持し、add_child()などのメソッドを  そっちに委譲する。 案3)コレクションクラスTREEを作り、そのTREE_NODEがWINDOWへの  参照を保持するようにする。 案3)は、私がうっかりこれでいいかと思っちゃった案ですが、WINDOWの場合は ダメです。たとえばWINDOWのrepaint()メソッドが呼び出されたとき、 WINDOWは自分の子を再帰的にrepaint()しなければなりません。 つまり、「外から見て木構造に見える」のではダメで、 WINDOW自身が自分の子を知っていないといけないわけで、 TREE_NODEからWINDOWに参照を持つような構造では困ります。 案2)ですが、この方法で、外から見れば多重継承と実質同じことができますが、 考えてみれば、外から見て、WINDOWがTREE_NODEに見えて嬉しいことは なさそうなので、わざわざinterfaceを使う必要はなさそうです。 つまり委譲だけでよいと。で、何に委譲するかですが、TREE_NODE_IMPLなんぞ 作らなくても、ArrayListで良いような… こう考えると、このケースでも多重継承は不要ですねえ。 >ところで、知っていたら教えてほしいのですが、PerlとCのリンク方法で >詳しいページとか書籍とかあったら教えてほしいです。 >つまりCのメモリ上にPerlで処理したデータを取得したいのです >(外部ファイルとか、ソケットなどを使わずに)。 Perlは詳しくないですが、PerlからCを呼ぶことぐらいはできるはずなので、 ラクダ本第2版を今見てみました。perlxstutというキーワードが出てきたので Googleして見つかったのがこちらです。 http://www.kt.rim.or.jp/~kbk/perl5.005/perlxstut.html
[この投稿を含むスレッドを表示] [この投稿を削除]