プログラムの書き方がネット上に丁寧に書かれているのに、内容が理解できない。インスタンス化って何???
独学でプログラムを書いていて、つまずくのが専門用語だと思うんだけど違うかな?
クラス名とかって学生の時に2年B組とかってイメージしか湧いてこなくて混乱する。今回はインスタンスについて書いてみようと思う。
オブジェクト指向ってそもそも何?
この説明で間違っていたら教えて欲しいんだけど、自分なりの解釈をすると、オブジェクト指向プログラム(いろいろな意味がある)のおおもとの考え方から考えてみると、そもそもオブジェクト指向ってなんなの?って話になってしまうから、簡単に説明しちゃうと、自動車って色んな属性をもっているよね?用途によって、右ハンドルだったり、左ハンドルだったり、色や、形状も違うしドアの数や、シートの数も違う。これをプログラムに書かせた場合、車種ごとに書くことも出来るんだけど、たった一つの『Car()』という関数に引数で(右、赤、ハッチバック、ドア5つ、シート4、・・・)なんて具合に送ってあげると、自動車の形をした完成品をポンと吐き出してくれちゃうという考え方。
車種ごとにプログラムを書くのではなくて色々な車を作るのに、たった一つのプログラムに、属性情報を投げてあげると、その指示に合わせて、違う車が完成しちゃうようなプログラムの考え方を「オブジェクト指向プログラム」と呼んでる。
インスタンスっていうのは、そのプログラムによって書き出された自動車そのものを呼ぶらしい。
もう少し正解に近づけると、メモリー上に読まれて存在していて『実体』として、実際に『目で見えたり動作するようになっている状態』のものを指すらしいけど、細かなことを考えなければこんな理解でいいんじゃないのかな?
つまり『インスタンス化する』というのは、プログラムに命令を出して、結果として『実体化状態にする』と考えればいいのかな。
実社会においては、オブジェクト指向プログラムは、入れる材料によって違った商品が作られる便利な魔法のような機械(のび太君が困ると、それを解決するために四次元ポケットからアイテムが飛び出してくるけど飛び出して来たものをインスタンス)ちょっと違うなぁ・・・。まあでも、ポケットに入っているうちは、使えない訳だから実体がないのと一緒だもんねぇ。正確に言えば藤子不二雄が、原作者だから、オブジェクト指向をしているのは、原作者に近いかな?のび太が困っている>解決するための面白いアイテムを作ろう>どこでもドア!➡インスタンスみたいな感じですかね。
最後にややこしくしちゃっていたらごめんなさい(笑)
まとめ
インスタンスとは、プログラムが実行されたことによって作られた『実体』のこと。
コメント