WEB系技術記事まとめ

WEBの最新技術情報をかき集めます。

インスタンス化とは?プログラム初心者が悩むところ

生徒:「インスタンス化を説明して下さい。」

先生:「使える状態にすることです。」

生徒:「使えることって、何のことですか??」

先生:「使える(関数の呼出しが可能)状態です。。」

 

無意味なやり取りが行われてる今日この頃です。

さてなんと説明すれば分かってくれるのか悩む日々です。

対象はJavaですが、どうにもこうにも。

 

オブジェクト指向言語においては、多くの場合クラスと呼ばれるものを元に作成したオブジェクトの実体を指す。データモデルやオブジェクト指向設計においても用いられる用語である。 インスタンスを生成するプロセスをインスタンス (instantiation、動詞形instantiate)という。

オブジェクト指向において、クラスあるいは型はオブジェクトの分類(分類概念)や集合に相当している。 あるクラス C のインスタンスとは、C という分類に属する(分類される)オブジェクトのことである。 Smalltalkの影響が強い言語では、クラス自体もまたオブジェクトとして扱うことができる(これをクラス・オブジェクトと言う)。そのような場合は特に、「クラスC のオブジェクト」といった言い方では、「クラスC に属するオブジェクト」の意味か「クラスC そのものを表すオブジェクト」の意味か曖昧になる。この場合、「クラスC のインスタンス」という言い方が利用できる。 クラス・オブジェクトと対比して、「インスタンス・オブジェクト」という言葉も使われている。

オブジェクト指向におけるインスタンスという言葉は、元々Sketchpadという言語の"Master"から"Instance"を生成するという仕組み"instance drawings"が由来となっている用語である。そしてC++と並びオブジェクト指向の概念を築づいたSmalltalkが、この"Master"と"Instance"の関係をクラスから生成されたオブジェクトになぞらえ、クラスから生成されたオブジェクト(インスタンス・オブジェクト)の意味で使い始めインスタンス・オブジェクトを表す言葉として定着させた。

静的型付けオブジェクト指向言語では珍しいが、動的型付けオブジェクト指向言語の多くは、メタクラスをサポートし、クラス自体もオブジェクトとして扱うことができる(クラス・オブジェクト)。クラス・オブジェクトは、端的に言えば変数に束縛できるクラスである。クラス・オブジェクト、インスタンス・オブジェクト双方を変数に束縛した際どちらもオブジェクトとして振る舞い見かけ上区別はつかない。例えばクラス・オブジェクト、インスタンス・オブジェクト双方が readFrom: というメソッドを持っていた場合、どちらも #readFrom: メッセージを送ってやるとエラーも起こさずそれぞれのメソッドを実行する。

Objective-CPythonにおいてはクラス・オブジェクトとインスタンス・オブジェクトの明確な区別が行われている。

メタクラスがサポートされているシステムでは、クラス・オブジェクトもまた別のクラス(メタクラス)のインスタンスであるということがありうる。この場合「クラス・オブジェクトはインスタンスではない」とは言えないので、注意されたい。

 

引用:インスタンス - Wikipedia

 

なんのこっちゃ良く分かりません。

さて、どうしたものかと。

 

ハードディスクに保存しているclassファイルをメモリーにロードします!

メモリーにある状態でないと実行できません!

 

とか?

 

では、なんでハードディスクにあるファイルを直接実行出来ないのですか?

みたいな?

それは実行環境(JVM)にロードして実行すると決めたからですよ。

みたいな?

 

先生:「そして、コンストラクターを呼び出すんですよ!」

生徒:「こ、こんすとらくたーって何ですか?」

みたいな?

 

先生:「クラス名と同じ関数名で、戻り値の型が定義されていないもの」です。

みたいな?

 

 

そしてイメージ図を書く。

皆分かったふりする。

みたいな。。。。

 

 

結局終わりになって、インスタンスコンストラクターを理解しない。

そもそもパソコンってどう動くの?

みたいな。

 

そんなに難しくないのですよ。

static関数はインスタンス化しなくても呼び出されるし。

私も始めたころは、インスタンス化するの面倒とか思っていましたし。

 

データの保存とか考えなくて、関数の呼出し(コンバーターみたいな)ものだけなら、インスタンス化する必要ないし。シングルトンになってしまえ!

 

そんな貴方に素敵で簡単な本を!!

 

スッキリわかるJava入門

スッキリわかるJava入門

 

 

明解Java 入門編

明解Java 入門編