カプセル化

カプセル化(encapsulation)とは、オブジェクト指向を構成する概念の一つ。オブジェクトの内部構成を隠蔽し、公開メソッドからのみ情報にアクセスする手法を言う。ただし、隠蔽そのものは目的ではなく手段である。

(やや人工的ではあるが)具体的な例として、色を表すオブジェクトを考えてみる。

カプセル化の第一の利点は変更に対する耐久性である。いま色の内部表現がRGB(光の三原色)で保持されているとして、これが何らかの都合でCMYK(色の三原色)に変更されたとする。外部のプログラムがデータ内部に直接アクセスを行っていた場合、このデータにアクセスしていたすべての箇所を同時に変更しなければならない。しかし公開メソッドを用いていれば、変更は内部表現から外部表現への公開メソッド内のみで済み、変更の影響を局所にとどめる事ができる。

第二の利点は概念の抽象化である。そもそも「色」という概念にとって、その内部表現がRGBであるかCMYKであるかは主要な問題ではなく、必要なら望みの形式がとりだせる抽象的な「色」であることが望ましい。加えて、その他の表現形式が追加されたとしても「色」の意味は変化するべきではない。このように、できるだけ形式と意味を分離する手段としてカプセル化は有効である。

[編集]
関連項目
Matroska
インデクサ
プロパティ