K.Maebashi's BBS

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

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

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

[439] 「オブジェクト指向再入門」読んでよかった。
投稿者:pf
2007/02/20 02:13:25

「オブジェクト指向再入門」。なるほどー。そうですか。面白かった。ためになった。 疑問点と質問(受け付けてくれるのかな?)です。 疑問点: "オセロを例に考える" の文末。 >※2 もし、board.cの中で「たくさんの盤面」を配列で管理しているのなら、 >board_create()の戻り値はintかもしれません。 しかし、戻り値をintにしてしまう >と、いざ盤面の数に制限をなくそうとして malloc()による動的確保に切り替えたと >き困ります。 逆に、最初から「Boardへのポインタ」にしておけば、 配列で実装し >ている場合にも困りません。&board[index]を返せばよいからです。 ここで、&board[index] の index には何を使うのでしょうか。 整数(int)を使うと、引用文二行目の int と同じ制限がかかってしまうと思うのですが。 "盤面の数に制限をなくそうとして" とありますが、限りなく無限に近く拡張できる index とはどのようなものなのでしょうか。 質問: 「どのオブジェクトに仕事をさせるのか」の具体例は。 連続的に部分拡大をしていく画像(マンデルブロ集合)を表示する JFrame を沢山作っ ているのですが、或る画像の JFrame にアクセスする場合、配列を使う事しか思い浮 かびません。( JFrame[] win = new JFrame[100]; // 100: ∞は可 ??? ) 他に何か方法があれば教えて頂けないでしょうか。 以上 追伸: ( 管理者権限で削除可 ) 答えてもらいたいから云うのではないが、「センス・オブ・プログラミング!」と 「Java謎+落とし穴 徹底解明」の目次を技術評論社サイトで見ましたが、とても良さ そうですね。買うしかないか。また日曜プログラムが遅れる(-L-)
[この投稿を含むスレッドを表示] [この投稿を削除]
[441] Re:「オブジェクト指向再入門」読んでよかった。
投稿者:(ぱ)
2007/02/20 02:13:25

>「オブジェクト指向再入門」。なるほどー。そうですか。面白かった。ためになった。 はじめまして。面白く読んでいただけたようで何よりです。 >>※2 もし、board.cの中で「たくさんの盤面」を配列で管理しているのなら、 >>board_create()の戻り値はintかもしれません。 しかし、戻り値をintにしてしまう >>と、いざ盤面の数に制限をなくそうとして malloc()による動的確保に切り替えたと >>き困ります。 逆に、最初から「Boardへのポインタ」にしておけば、 配列で実装し >>ている場合にも困りません。&board[index]を返せばよいからです。 > >ここで、&board[index] の index には何を使うのでしょうか。 >整数(int)を使うと、引用文二行目の int と同じ制限がかかってしまうと思うのですが。 まず、board.cの中で「たくさんの盤面」を配列で管理しているのなら、 おそらく盤面の数には制限ができることでしょう(回避策は後述)。 Cの配列は基本的に固定長だからです。 ただ、その場合でも、board_create()の戻り値をBoard*にしておけば、 将来的にmalloc()による動的確保に切り替えたとき、利用者側に影響を与えなくて 済む、というのが上の注の主旨です。 &board[index]のindexは、board.cが内部的に保持しているだけであり、 アプリケーションには見せません。簡略化して書くとこんな感じです。 static Board board[BOARD_MAX]; static int board_count = 0; Board *create_board() { return &board[board_count++]; } 実際にはfree_board(Board *b)も要るので、そういう場合はポインタ比較しながら ループを回すことになるのでしょう。 昔、SunOS4か何かのfopen()が、10個くらいまではFILEの固定長配列の中から FILE*を返すようになっていたと思います。それ以上オープンするときは動的に 確保するわけです(これが上で書いた「回避策」)。 >質問: 「どのオブジェクトに仕事をさせるのか」の具体例は。 > >連続的に部分拡大をしていく画像(マンデルブロ集合)を表示する JFrame を沢山作っ >ているのですが、或る画像の JFrame にアクセスする場合、配列を使う事しか思い浮 >かびません。( JFrame[] win = new JFrame[100]; // 100: ∞は可 ??? ) 状況がよくわからないのですが、配列を使う方法でも、 「この画像のJFrameにアクセスしたい!」と思ったときには、そのインデックスが わかっていなければいけないわけですよね?] どうせインデックスを保持しなければならないのなら、代わりにJFrameの参照を 保持しても同じことではないのでしょうか。 もし、「すべてのJFrame」をどこかで保持する必要があるのであれば、 java.util.LinkedListなりを使えばよいと思います。 >答えてもらいたいから云うのではないが、「センス・オブ・プログラミング!」と >「Java謎+落とし穴 徹底解明」の目次を技術評論社サイトで見ましたが、とても良さ >そうですね。買うしかないか。また日曜プログラムが遅れる(-L-) や、どうぞよろしくお願いいたします(_o_)
[この投稿を含むスレッドを表示] [この投稿を削除]
[442] Re:・・・読んでよかった。
投稿者:pf
2007/02/20 02:13:25

さっそくの返信、ありがとうございます :-) 「回避策」については、動的確保の Board *create_board() {} から調べ直してみます。イメージが index に固執していたようです。 java.util.LinkedList は初めて見ました。APIをちょっと読んでみましたが、分かったような分からないような。色々と実験して、プログラムに取り込もうかと思います。 掲示板の以前の内容もとても参考になります。 つくづく思います。通りすがりにリンクを保存しておいてよかったと。 さっ、きょうも日蝕を仰ぎ見つつお勉強。(Eclipse 3.1) では。 追伸: まだ、朝。早く本屋開かないかなぁー。楽しみ。
[この投稿を含むスレッドを表示] [この投稿を削除]