オブジェクト指向 【object oriented】 OO
概要
オブジェクト指向(object oriented)とは、コンピュータプログラムの設計や実装についての考え方の一つで、互いに密接に関連するデータと手続き(処理手順)を「オブジェクト」(object)と呼ばれる一つのまとまりとして定義し、様々なオブジェクトを組み合わせてプログラム全体を構築していく手法。システム全体を、現実世界の物理的なモノ(object)に見立てた「オブジェクト」と呼ばれる小さな構成単位の組み合わせとして捉える。システムの振る舞いはオブジェクト間の相互作用(機能の呼び出し/処理依頼)として記述される。
オブジェクトにはそれぞれ固有のデータ(属性/プロパティ/メンバ変数)と手続き(メソッド/メンバ関数)があり、外部からのメッセージを受けてメソッドを実行し、保有するデータを操作する。オブジェクトに付随するデータの操作は原則としてすべて内部のメソッドによって行われる。
この点をよく「生徒オブジェクトが数学、国語、英語の点数プロパティと平均点算出メソッドを持つ」といった例で説明するが、コンピュータプログラムではソフトウェアやデータに関連する概念や対象も取り扱うため、プログラム中のオブジェクトが必ずしも現実の物理的実体に対応するとは限らない。
オブジェクト指向はデータと操作手順を一体化(カプセル化)し、外部には処理の依頼方法(インターフェース)のみが公開されるため、ある箇所の変更が外部に与える影響を小さくすることができる。チームでのソフトウェア開発で分担などが行いやすく、大規模開発に向いていると言われる。適切に設計されたコードは他のプログラムで再利用しやすいため、似たような機能を重複して開発することを避け、開発の効率化を促すとされる。
オブジェクト指向の考え方をプログラミングに応用した手法を「オブジェクト指向プログラミング」(OOP:Object-Oriented Programming)と呼び、単にオブジェクト指向といった場合はこれを指すことが多い。オブジェクト指向開発のための仕様が盛り込まれたプログラミング言語を「オブジェクト指向言語」(OOL:Object-Oriented Language)という。
オブジェクト指向の概念自体はシステムやプログラムの設計や分析にも用いられ、「オブジェクト指向モデリング」(OOM:Object-Oriented Modeling)、「オブジェクト指向分析」(OOA:Object-Oriented Analysis)、「オブジェクト指向設計」(OOD:Object-Oriented Design)などの技法が存在する。