インスタンス

読み:インスタンス
外語:instance 英語
品詞:名詞

オブジェクト指向の環境やプログラミング言語で、実行される際に作成されるオブジェクトの実体のこと。英語の原義では、(論拠となる)例、実例、例証のこと。

目次

オブジェクト指向言語の多くは、クラスと呼ばれるオブジェクトの雛形をあらかじめ作っておく。このクラスを元に作成したオブジェクトをインスタンスという。

一度定義されたクラスからは、いくつでもインスタンスを生成することができる。

以下は、C++を例とする。

インスタンス化

C++では、クラスの実体をインスタンスといい、クラスを実体化することをインスタンス化という。

例えば HOGE というクラスがあった場合、構造体と同様にローカル変数としてクラスを実体宣言することができる。

HOGE hoge;

あるいは、クラスを動的確保して使う方法もある。

HOGE *hoge = new HOGE;

そしてプログラマーは、hoge というインスタンスについて操作をすることになる。

この二つの使用方法の最大の違いは、寿命である。

寿命

インスタンスには寿命が存在し、プログラムの実行中のどこかのタイミングで消える。

C++では明示的に削除することが可能で、また「スコープ」から外れた場合には自動的に消される。一方で、Javaのように明示的には削除できず、全てガベージコレクションに任せる仕様のものもある。

HOGE hoge;

このように、ローカル変数としてクラスを実体宣言した場合、{}の中つまりそのブロック構造の中がスコープであり、そのスコープが終了した時点で、一般の変数と同様にインスタンスの寿命が切れる。寿命が切れた時点で、クラスのデストラクターが呼び出される。if文、for文、while文などが{}でブロックになるほか、関数そのものも{}でブロックである。また、特に何もなく{}でブロックを作ることもできる。

HOGE *hoge = new HOGE;

一方、このようにクラスをnewで動的確保した場合、明示的にdeleteするまで寿命は継続する。deleteした時点でインスタンスの寿命が切れてデストラクターが呼び出されるが、deleteしない場合、プログラムが終了してもデストラクターが呼ばれることはない。

プログラミング言語以外でも、インスタンスという用語が使われることがある。

Windows

16ビット版Microsoft Windowsでは、Windows 3.1までは、実行されたプログラム1個をインスタンスと呼んでいた。

16ビットWindowsの場合、ノンプリエンプティブマルチタスク環境であったため、通常のマルチタスクでいうところのプロセスのことを、呼び分ける目的でインスタンスと呼んだ。

FLASH

Macromedia FLASHの場合は、ムービー上に置いたシンボルのことをインスタンスという。

シンボルという呼称だけでは違うキーフレームに同じシンボルを配置した時に区別できなくなるため、違う呼称がある。

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club