「インスタンス化」という手順を取る理由の一つとして「効率的にオブジェクトを作成する為」といわれております。
しかし、コンピューター側(メモリ側)から視点で言い換えると、インスタンス化とは「メモリ領域の確保を効率良く、自動(?)でやってくれる」というイメージの解釈で良いのでしょうか?
お手数ですが回答の方、お願いします。
(訂正)
すいません。質問文の中に
(メモリ内における)「非オブジェクト指向」と「オブジェクト指向」との違いとしては(イメージ的に言うと)
非オブジェクト指向⇒「データ」「処理(メソッド)」領域が、ごちゃごちゃに確保される。
オブジェクト指向⇒「データ」「処理(メソッド)」領域が一つにまとめられて、インスタンス時に半自動(?)で領域が確保される。その為、効率良く、大量に確保できる。
↑イメージとしては上記のような考えで良いのでしょうか?
という質問内容がありましたが、私自身の誤りでしたので、上記の文は削除しました。
(訂正内容)
この質問内容は「インスタンス化という手順を取る一つとして「効率的にオブジェクトを作成する為」といわれておりますが、コンピューター側(メモリ側)から見てみると、インスタンス化とは(言い換えると)「メモリ領域の確保を効率良く、自動(?)でやってくれるというイメージの解釈」で良いのでしょうか?」
という質問です。「非オブジェクト指向」と「オブジェクト指向」及び「オブジェクト」は関係ありませんでした。申し訳ありません。
お手数ですが、回答お願いいたします。
(追記)追記です。「スッキリわかるJava入門」「Javaのオブジェクト指向がゼッタイにわかる本」の書籍にもこのような内容は掲載されていましたよ。
「スッキリわかるJava入門」P301に掲載
なぜJavaでは「オブジェクト同士が連携する仮想世界」を作るために、わざわざ「クラスを定義して、そのクラスからオブジェクトを生成する」という複雑な手順を踏まなけれぱならないのでしょうか。
その答えに辿り着くために、私たちは「オブジェクトを大量に作る必要がある状況」を想像しなけれぱなりません。たとえば銀行で「すべての口座情報の複雑な統計を計算するプログラム」が動くとき、その仮想世界には何個の「口座」オブジェクトが必要でしょうか?
口座が1000あるなら1000個のオブジェクトを生み出す必要があるかもしれません。その1000個の口座オブジェクトそれぞれに対して、「属性として、残高・名義人・開設日があって・・・」という定義を繰り返す必要があるとしたら。それを作るプログラマの作業は膨人なものになります。そこでクラスの登場です。「属性として、残高・名義人・開設日があって・‥」という定義をした「口座クラス」を1度作っておけぱ、このクラスから100個でも1000
個でも必要な数だけオブジェクトを生み出すことができるのです。たとえぱ振り込みを受け付ける「Uketsukeクラス」を1つ準備しておけぱ、複数の受付係を生み出して、「並行して振り込み依頼を受け付ける」プログラムを作ることもできます
**「Javaのオブジェクト指向がゼッタイにわかる本」**のP95に掲載
オブジェクト指向プログラミングでは、オブジェクトが基本になるのでした。そのオブジェクトはいきなり作成するのではなく、まずはオブジェクトの設計図であるクラスを記述して、その設計図を元にオブジェクトを生成していくというステップを踏むようになっています。なぜそのような面倒なステップを踏むようになっているのでしょうか?
それは、この題目のように、1つのプログラムの中に同じ種類のオブジェクトが登場するケースはソフトウェア開発の現場でもよく登場します。その際、各オブジェクトを1つ1つゼロから作成していくのはとても非効率でしょう。
コピー&ペーストを繰り返すのもミスを生みかねません。
それよりも、最初にそのオブジェクトの設計図を描いて(クラスを定義して)、その設計図を元に同じ種類のオブジェクトを”大量生産”していった方が効率的です。一度クラスを定義してしまえば、同じ種類のオブジェクトをいくつでも簡単に作り出せるのです。
そして、同じ種類のオブジェクトがもっと必要になったら、その都度設計図から、また新たにオブジェクトを”大量生産”して作成していけばよいのです。このようにクラスという仕組みを用いることで、プログラムの再利用が高まるというわけです。
後、オブジェクト指向プログラミング OOP(Object Oriented Programming)の基本的な仕組み – Device Configurationのサイトにも以下の内容が掲載されていました。
変数領域の複製は実行時に幾つでも作ることができる。(インスタンスを作ることで、必要な数だけ変数領域を作ることができる)
回答の方よろしくお願いします。
回答7件
あなたの回答
tips
プレビュー