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

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