カプセル化 | Programming Place Plus 用語集

トップページ用語集

名称

解説

オブジェクト指向において、データメソッドを一つのオブジェクトに一体化したうえで、具体的な部分を外側から隠すことをいいます。

オブジェクトがどのようなデータ(フィールド)を持っているか、それはどのように表現されており、どのように処理されているか、といった具体的な部分(実装の詳細)を外側からは見えないようにし(情報隠蔽)、データを操作するために必要なメソッドだけを外部に公開します(内部の実装のために使うメソッドは非公開)。外部への公開と非公開を制御するために、多くのプログラミング言語で、アクセス指定子を用います。

カプセル化がうまくできていると、オブジェクト内部の実装を変更しても、そのオブジェクトの外部に与える影響がなくなります(実行速度やメモリの消費量が変わるといったことはあるにせよ)。また、実装が自身の内側に閉じていれば(外部のデータに依存していなければ)、外部の変更の影響を受けることもありません。さらに、データを操作するためのメソッドのみを公開するため、外部の都合で勝手な変更が行われることがなく、不整合を引き起こすことを防げます。

オブジェクト指向の重要な概念の1つとしてよく知られていますが、実際にはオブジェクト指向に限定されたものではありません。実装を不用意に公開せず、操作に必要なインターフェースのみを公開するということであり、この考え方は多くの場面で効果を発揮します。たとえば、オブジェクト指向プログラミング言語ではないC言語でも、ダイナミックメモリアロケーション(動的メモリ割り当て)によって、(オブジェクト指向の意味での)オブジェクトに見立てたものを生成し、ヘッダファイル宣言した関数(実装はソースファイル側に記述)を通して操作するといった方法で、カプセル化の考え方を取り入れることができます。

アルゴリズムとデータ構造編【データ構造】第5章では、この考え方を使ってスタックを実装しています。


参考リンク

更新履歴


用語集のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る