2017年02月27日

オブジェクト、クラス、インスタンスの関係で悩む

■よくある解説

・クラス・・・設計書。
・オブジェクト・・・設計書もとに作成したもの。

<たい焼き>
・「たい焼き」をつくるには、金属の「型」が必要。
・型に、生地や餡子などを流し込んで、たい焼きをつくる。
・1つの型から「餡子がはいっているふつうのたい焼き」もつくることができれば、「クリームがはいったたい焼き」もつくることもできる。

<クラスとオブジェクトの関係をたい焼きでたとえる>
・たい焼きつくる金属の型が「クラス」。
・できあがった、たい焼きが「オブジェクト」。
・1つの型があれば、さまざまな種類のたい焼きがつくれるのと同様、1つのクラスから、さまざまなオブジェクトをつれる(つくる)。

これが、よく見かける解説です。
理解はできますが、「オブジェクト、クラス、インスタンスの関係」がよくわかりません。

■手元にない本など

「オブジェクト=インスタンス」としているものもあるらしいです。
これだとかんたんなのですが――。

手元にある本によると、この解釈はあまり正しくないようで。
というわけで、手元にある本の解説です。

Javaの絵本 第3版 Javaが好きになる新しい9つの扉

この本では「クラスをインスタンス化したのがオブジェクト」のような書き方をしています。
つまり、「インスタンス」についての記述がないわけですね。
これだとかんたんなのですが、ほかの本を見ると「インスタンス」という言葉もよく使われているのですよねー

やさしいJava入門―講義形式でじっくりマスター

「クラスはオブジェクトの型」
「特定のクラスのインスタンス=オブジェクト」

このようにあります。
これくらいしか書かれていないので、特に「特定の」の部分の解釈がかなり難しい…。
この本のおかげでだいぶん理解が進みましたが、「インスタンス」と「オブジェクト」のちがいは、わたしには理解できませんでした。

スラスラわかるJava

入門レベルからの脱却のため、あらたに買い足した本ですが――。

「クラス・・・特定オブジェクトの定義を構成するオブジェクト」
「インスタンス・・・クラスを元に作成された特定オブジェクト」

練習問題の解答に――。

「オブジェクト・・・オブジェクト指向でプログラムを分割するための単位」
「クラス・・・オブジェクトの設計が書かれているもの」
「インスタンス・・・クラスを元に作成されたもの」

――とあります。

これらを、わたしはつぎのように解釈しました。

<概念>
・近年、プログラムが膨大な量になった。
・管理などの面から、プログラムを分割・管理している。その分割の単位がオブジェクト。

<実際>
・設計書であるクラスから作成されたものがインスタンス(先ほどのたい焼きのたとえ)。

この解釈で正しければ、理解できたことになるのですが――。
そうすると、やさしいJava入門にある文とちがうような気が…。

いずれにしても、よくわからなくてもプログラムは書けそうなので、この辺で考えるのをやめようと思っています。

posted by pugu at 10:07| Comment(0) | TrackBack(0) | ・Javaの勉強
この記事へのコメント

この記事へのトラックバック