[1907] Re:Java謎+落とし穴について
投稿者:(ぱ)こと管理人
2015/08/02 13:11:34
>暑中お見舞い申し上げます。
こんにちは。
>『Java謎+落とし穴』で、二つ質問があります。
>見方によっては、各オブジェクトが、間接的にではありますが、それぞれ実行コードへのポインタを持つように思えるのですが、いかがでしょう。
「間接的に」実行コードへのポインタを持つのはその通りですね。
ここは、メソッドが10個あった時、各オブジェクトが10のポインタを持つ必要はないですし、
オブジェクトごとに実行コードへのポインタが書き換わることはない、という意味で
書きました。
(プロトタイプベースのオブジェクト指向だと、実際オブジェクトごとに持っていたり
しますし)
>・177ページ「draw()メソッドを呼び出す部分はPolylineやCircleにまったく依存しません(その構造体を宣言しているヘッダファイルを#includeする必要がない)」について。
>このdraw()メソッドは、183ページのdrawShape(shapes[i])メソッドと同じでしょうか。ここではmain.cに、各ヘッダファイルをincludeしているように見えます。
ここはわかりにくかったですね。
createPolyline()等は各図形の.hで宣言されているわけで、
各図形をnewするところでは各ヘッダファイルが必要です。
ただ、描画するところ(「draw()メソッドを呼び出す部分」)は、
Polyline.hやCircle.hにまったく依存しません。
(これはJavaにおいても同じことで、newするところは各クラスに依存します)。
この例では、main.cでnewと描画を両方やってしまっているので、
おっしゃるとおり、「main.cでincludeしているではないか」と疑問を持たれるのは
わかります。
main.cの描画部分(17~20行目)を、draw.cとか、別ソースに分けておくべきだったかも
しれません。
10年以上前の本ですが、ご指摘感謝いたします。