- - PR -
記事:メソッドとコンストラクタはなぜ必要? はおかしくない?
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-05-15 18:06
補足のつもりです。
javaでのメッセージ・パッシングはEventListnerという形で実装することで 明確にメソッドとは分離されています。 そして、ServletAPIではEventListnerを実装していないので、 オブジェクト指向的なアプリケーションはAppletの世界だけになりつつあります。 ただし、[勝手に引用文を編集します] C言語の関数呼び出しと、Javaのメソッド実行の決定的な違いは、 dynamic bindingにあります。 メソッドを呼び出されたオブジェクトは、それをどのようにして実行すればよいか、 判断を行います。その結果、クラスやスーパークラスが備える多数のメソッドのうち いずれか1つを選択し、それを利用してパラメータを解釈実行します。 というところはおっしゃる通りです。 [ メッセージ編集済み 編集者: zaxx_MD 編集日時 2003-05-15 18:08 ] | ||||||||
|
投稿日時: 2003-05-15 18:27
いえ、そのメッセージではなくて、オブジェクト指向一般のメッセージのこと を意図しています。以下のページをご覧ください。 http://java.sun.com/docs/books/tutorial/java/concepts/message.html | ||||||||
|
投稿日時: 2003-05-15 18:45
unibon です。こんにちわ。
#ライタのかたも戦々恐々ですね。
たとえば、第5回の最後の部分で「制御文が必要な理由」と書かれていることから考えると、 この第5回の中では、制御文から繰り返し呼べる「処理」をまず先に説明しておこう、 という意図で進められているように感じました。 まったくの初心者に敬遠されがちな入門書では、 途中の説明をすっ飛ばしているものがよくありますが、 この連載はそういうことがなく、一歩一歩説明を推し進めている感があり、 初心者のかたには読みやすいと思います。 この段階に至るまでに、フィールドの存在は教えたし、 つぎは、メソッド(やコンストラクタ)がコードを実行するために必要であることを教えれば、 この段階ではそれで十分、というような意図だと感じました。
巻頭では「J2EE の入り口」がゴールのように書かれていますので、 まだ先は長いので、いつか登場するのかもしれませんが、 でも、インデックスページや巻頭でも、 オブジェクト指向そのものズバリだとは書かれていないし、 オブジェクト指向についてそれほど触れなくてもよいのではないでしょうか。 インデックスのページ、 http://www.atmarkit.co.jp/fjava/index.html を拝見してもそんな風に読めました(2個所あります)。 #なお、まったくの憶測で申し訳ありませんが、単に改名されただけなのでは、と思いました。 | ||||||||
|
投稿日時: 2003-05-15 18:51
いいえ、そのメッセージです。 そちらのページはOOPのコンセプトそのものについての解説で、 その続きにjavaでの実装について記述してあります。 http://java.sun.com/docs/books/tutorial/java/concepts/practical.html そのなかにMouseListner(EventListnerの子供です)がメッセージ処理の例として 挙げられていますので参照してください。 | ||||||||
|
投稿日時: 2003-05-15 18:59
#先はかなり遠いですね・・ それにしても「メソッドはこれだけの意味だよ」ととれるような書き方は やっぱライターとして失格でしょ。もしくは実際にJava書いたことないんじゃ・・ | ||||||||
|
投稿日時: 2003-05-15 21:29
といったことは正直よくわからないのですが、 http://java.sun.com/docs/books/tutorial/java/concepts/index.html でふれられている「メッセージ」は、にっくさんの仰っているニュアンス に近い気がします。 MouseListenerは、あくまでinterfaceについての説明で用いられている と思います。 http://java.sun.com/docs/books/tutorial/java/concepts/message.html にて、 メッセージを構成するもの: 1.メッセージの行き先オブジェクト 2.実行するメソッド名 3.そのメソッドで必要なパラメータ のようなことが書かれていて、やはりメソッド呼び出しをイメージして しまいます。 少なくとも、このチャプターには 「javaでのメッセージ・パッシングはEventListnerという形で実装する」といった 趣旨の記述はないように思います。 どうでしょう。 | ||||||||
|
投稿日時: 2003-05-16 00:41
私もそう思います。このページでは、メッセージ・パッシングの例として g.setColor(Color.white); というコードが挙げられていますが、これはEventListenerインタフェースの説明 とは関係ないですよね。 Javaにおける「オブジェクトのメソッド呼び出し」は全て、オブジェクト指向に おけるメッセージ・パッシングに相当します。ですから、Javaのメソッド呼び出し は、UMLでは「メッセージ」の矢印線で表記します。 | ||||||||
|
投稿日時: 2003-05-16 01:29
「メソッド」って一括りにされてしまっていますが、
(a) staticメソッド (b) privateメソッド (c) publicメソッド(staticでは無い) ってそれぞれ別物ですよね。 (a)と(b)は、『関数』的な色合いが濃いと思います。 呼び出し先がオブジェクトではありませんし。 (ただしsingletonパターンの実装を目的とするstaticメソッドなどは例外で、これは(c)に含まれるかと。) これに対して(c)は、オブジェクト同士の対話(メッセージ)です。 (浅学にして「メッセージ・パッシング」って言葉を知らないのですけれど、ニュアンス的には同じなのでしょうか?) オブジェクトの型によって結果が異なりますし、同じ型でも別インスタンスであれば、やはり結果が異なります。 どうも、このへんのポイントがあっていないため、議論がすれ違いがちになっているように感ぜられます。 まりりさんの
って、 意識させないために、メソッドが隠蔽されてるデータへアクセスするんだと思うんですけれど。。 # 飛躍してます? | ||||||||
