~オブジェクト指向プログラミングの目的~

オブジェクト指向プログラミングは従来型のプログラミングと違い、
オブジェクトを部品として再利用したり、変更が起こった時に最小限の変更ですむ設計を行うことができる。

例えば、車をオブジェクト指向で見た場合、車は
タイヤ
ハンドル
アクセル
ブレーキ
エンジン
オーディオ
など様々な部品(オブジェクト)で構成されている。

この車のシステムを例にとって、オブジェクト指向の特徴について説明する。

アクセルを踏むと車が動くという現象は、本来、
【アクセルを踏むとエンジンにガソリンが注入され、爆発により動力がシリンダーなどの駆動系に伝わり、タイヤが回るから車が動く】
現象である。
この動作では、アクセルからどのくらい踏み込まれたという情報がエンジンにメッセージとして送られ、エンジンから駆動系、タイヤへとメッセージが送られているのである。

しかし、アクセルを踏んでからタイヤが動くまでの間の動作(情報)を隠蔽し(情報隠蔽)、
【車が動く】
ということを、
【アクセルを踏む】
ということに抽象化(※)してしまっている。

その結果、車の運転手はアクセルを踏んでから、タイヤが動くまでの間の動作を意識すること無く、アクセルを踏むだけで車を動かすことができる。
これは使う側にはアクセルというインターフェースのみを公開し、間の動作(情報)を隠蔽しているからである。

このように外部に対しては、必要最低限のインターフェースのみを公開し、それ以外は隠蔽することでオブジェクトをブラックボックス化し、外部から内部を見えないようにすることをカプセル化という。

オブジェクト指向プログラミングでは、この車の例のように、他のプログラムで作ったプログラムを他のプログラムでも使用することができる(再利用性)。
また、カプセル化を行うことで、変更も容易に行うことができる(変更容易性)。