「オブジェクト (プログラミング)」の版間の差分

削除された内容 追加された内容
Melan (会話 | 投稿記録)
+interlangなど
m sty
1行目:
この項目では、'''オブジェクト指向における''' ({{lang|en|object}}) は[[オブジェクト'''指向プログラミング]]いて解説、[[プログラム (コンピュータ)|プログラム]]上の手続きの対象を抽象化る概念である。
 
[[オブジェクト指向]]プログラミングにおいて、プログラム上の手続きの対象を抽象化する概念。たとえば、「マウスカーソル」というオブジェクトについては、上下左右に動かす、クリックするというような操作が考えられるし、「ファイル」というオブジェクトについては、コピー、削除などの操作が考えられるが、こういった対象を表現するのがオブジェクトだと言える。ウィンドウ、メニュー、ファイル、段落など、コンピュータ上でユーザが目にするもので、名前が付いているようなものはほとんどオブジェクトであるが、ユーザが目にしないようなオブジェクトもあり、これらの全体として、プログラムが動作している。
== 概要 ==
[[オブジェクト指向]]プログラミングにおいて、プログラム上の手続きの対象を抽象化する概念。たとえば、「マウスカーソル」というオブジェクトについては、上下左右に動かす、クリックするというような操作が考えられるし、「ファイル」というオブジェクトについては、コピー、削除などの操作が考えられるが、こういった対象を表現するのがオブジェクトだと言える。ウィンドウ、メニュー、ファイル、段落など、コンピュータ上でユーザが目にするもので、名前が付いているようなものはほとんどオブジェクトであるが、ユーザが目にしないようなオブジェクトもあり、これらの全体として、プログラムが動作している。
 
オブジェクトの具体的な実体を、[[インスタンス]]と呼び、抽象的なオブジェクトの性質を[[クラス (コンピュータ)|クラス]]と呼ぶ。たとえば、ファイルやコンピュータなどのアイコンは、オブジェクトのインスタンスであり、一般的な「ファイルというもの」、「マウスカーソルというもの」が、クラスである。
 
ただし、[[オブジェクト]][[クラス]][[インスタンス]]の意味で使われることもあり、注意が必要である。
 
== オブジェクトの実装 ==
 
オブジェクトは、単純なデータとは限らない<何ものか>を指す概念だが、オブジェクトのインスタンスは、プログラムが実行される時の実体は記憶装置上のデータである。これに対し、クラスはインスタンスが持つデータの形式と操作についての定義であり、プログラムが実行されるときの実体は記憶装置上のプログラムに対応する。このとき、そのオブジェクトは、<何ものか>を[[抽象化]]していると表現される。(ここで言う「抽象化」は、[[C++言語]]抽象クラスとは無関係)
 
たとえば、オブジェクトが「会員」を表している場合、オブジェクトのインスタンスは、会員番号や、会員についての情報だけを持ち、それで「会員」そのものを表わすと考える。一方、クラスはこのインスタンスがどのような性質を持つか、会員番号は何桁分必要で、そのほかにどのような情報を持つか、さらにその会員についてのさまざまな操作―たとえば、その会員のWebウェブ上でのログイン/ログオフや、認証にかかわるさまざまな操作を定義するものである。このとき、このオブジェクトは「会員」を抽象化していることになる。
 
オブジェクトは記憶装置上に自らのインスタンスを作るための手続きを備えており、この手続きが何らかの形で(通常は他のインスタンスによって)呼び出されることで、インスタンスとなる。オブジェクト指向プログラミングでは、プログラムもオブジェクトであり、プログラムの実行を抽象化するオブジェクトがインスタンス化することを契機として、さまざまなオブジェクトがインスタンス化され、これによってプログラムが作動する。
 
== 関連項目 ==
* [[オブジェクト指向]]
 
[[Category:オブジェクト指向|*]]