「オブジェクト (プログラミング)」の版間の差分
m ロボットによる 追加: fr, uk 変更: es, ru |
m ロボットによる 追加: ko:객체 (전산학) |
||
32行目: | 32行目: | ||
[[fr:Objet (informatique)]] |
[[fr:Objet (informatique)]] |
||
[[it:Oggetto (informatica)]] |
[[it:Oggetto (informatica)]] |
||
[[ko:객체 (전산학)]] |
|||
[[lt:Objektas (programavimas)]] |
[[lt:Objektas (programavimas)]] |
||
[[nl:Object (informatica)]] |
[[nl:Object (informatica)]] |
2008年7月7日 (月) 15:09時点における版
オブジェクト(英: object)はオブジェクト指向プログラミングにおいて、プログラム上の手続きの対象を抽象化する概念である。
たとえば、「マウスカーソル」というオブジェクトについては、上下左右に動かす、クリックするというような操作が考えられるし、「ファイル」というオブジェクトについては、コピー、削除などの操作が考えられるが、こういった対象を表現するのがオブジェクトだと言える。ウィンドウ、メニュー、ファイル、段落など、コンピュータ上でユーザが目にするもので、名前が付いているようなものはほとんどオブジェクトであるが、ユーザが目にしないようなオブジェクトもあり、これらの全体として、プログラムが動作している。
オブジェクトの具体的な実体を、インスタンスと呼び、抽象的なオブジェクトの性質をクラスと呼ぶ。たとえば、ファイルやコンピュータなどのアイコンは、オブジェクトのインスタンスであり、一般的な「ファイルというもの」、「マウスカーソルというもの」が、クラスである。
ただし、オブジェクトがクラスやインスタンスの意味で使われることもあり、注意が必要である。
オブジェクトの実装
オブジェクトは、単純なデータとは限らない<何ものか>を指す概念だが、オブジェクトのインスタンスは、プログラムが実行される時の実体は記憶装置上のデータである。これに対し、クラスはインスタンスが持つデータの形式と操作についての定義であり、プログラムが実行されるときの実体は記憶装置上のプログラムに対応する。このとき、そのオブジェクトは、<何ものか>を抽象化していると表現される。(ここで言う「抽象化」は、C++の抽象クラスとは無関係)
たとえば、オブジェクトが「会員」を表している場合、オブジェクトのインスタンスは、会員番号や、会員についての情報だけを持ち、それで「会員」そのものを表わすと考える。一方、クラスはこのインスタンスがどのような性質を持つか、会員番号は何桁分必要で、そのほかにどのような情報を持つか、さらにその会員についてのさまざまな操作―たとえば、その会員のウェブ上でのログイン/ログオフや、認証にかかわるさまざまな操作を定義するものである。このとき、このオブジェクトは「会員」を抽象化していることになる。
オブジェクトは記憶装置上に自らのインスタンスを作るための手続きを備えており、この手続きが何らかの形で(通常は他のインスタンスによって)呼び出されることで、インスタンスとなる。オブジェクト指向プログラミングでは、プログラムもオブジェクトであり、プログラムの実行を抽象化するオブジェクトがインスタンス化することを契機として、さまざまなオブジェクトがインスタンス化され、これによってプログラムが作動する。