WikipediaDisclaimersSearchカプセル化LanguageWatchEditこの項目では、オブジェクト指向での概念について説明しています。(通信)」をご覧ください。この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。encapsulation)とは、データ(属性)とメソッド(手続き)を一つのオブジェクトにまとめ、その内容を隠蔽することを言う。hiding)の構成概念の一つとして見ることができる[1]。オブジェクト指向プログラミングにおけるオブジェクトは、クラスによる情報のカプセル化を行うことで作られる。概要Edit構造化プログラミングを提唱したエドガー・ダイクストラは、プログラムの段階的詳細化法の知見から、プログラムを構成するアルゴリズムとそのアルゴリズムで用いられるデータ構造は密接に関連しており、アルゴリズムをある程度詳細化してからでないと多くの場合そのデータ構造は決定できないことを指摘した[2]。abstract)と呼ぶ)、アルゴリズムの方の詳細化を進めることでそのデータ抽象された変数名が必要とされる情報を徐々に集めてゆき、十分な情報が集まった段階でそのデータ構造を決定させればよいということを示した[3]。データ抽象を駆使してアルゴリズムとそのデータ構造を洗練化(段階的詳細化)したものは真珠(pearl)[4]と呼ばれる[5][6]。このように開発されたプログラムおいては、アルゴリズムとそのデータ構造は一体不可分のようになるため、プログラムの拡張などにより、アルゴリズムを後から変更する必要が出てくると、必然的に一度決定したはずのデータ構造や関連操作を修正しなくてはならなくなる。その修正箇所は、大規模なプログラム開発であれば多数の関連ソースコードの各所に散在してしまうことになる[7]。以上のことを踏まえれば、ほとんど一体不可分のものであるアルゴリズムの操作とそのアルゴリズムに関連するデータ構造に対しては、異なる名前を持つ異なる真珠として扱うよりも一つの変数名からなる一つのモジュール(module)とした方が、仮に後でアルゴリズムの変更を行うにしても変更箇所がそのモジュールの内部に限定されることになるので、保守管理しやすい。このように、関連するデータとその操作を一つの何かまとまりにまとめることを情報のカプセル化(encapsulation)またはモジュール化(modulization)と呼ぶ[8]。hiding)の考え方を説いた。公開すべきものはプログラムやモジュールの仕様であって、その実現手段ではないと主張した[9][10]。公開すべき仕様上の機能を呼び出す機構はインターフェース(interface)と呼ばれる。インターフェースを経由することでモジュールの機能の情報隠蔽をすることができる。ほかに情報隠蔽を実現する機構としては、モジュールの機構自体に公開/非公開(public/private)の区別を指定する方法が一般的である。その情報隠蔽の概念と同一視されることも多い。パルナス自身は分割の単位としてカプセルという用語ではなくモジュール(module)の用語を用いている。データ抽象の例である。紛らわしい名称を持つプログラミング言語のPerl開発者であるラリー・ウォールは、構造化プログラミングの真珠(pearl)との関連性を明確には述べていない。ダイクストラやヴィルトの普及もあってか、以後「アルゴリズム」と「データ構造」と言う単語の入ったプログラミングに関する書籍が数多く出版されることとなった。このような構成からなるプログラムは変更に弱く、バグが発生しやすいため保守管理が困難である。用法としてカプセル化という用語は情報隠蔽も含むことが多い。モジュール化という用語はそういったニュアンスは少ない。ソフトウェア業界においては、理想的には顧客が提示する仕様書に基づいてソフトウェアを開発し、そのソフトウェアが仕様書を満たしていれば顧客に納品することができる。顧客が提示する仕様書にある機能が実現されており、かつその機能を実行する限りにおいて動作検証されていれば、そもそも顧客が関知する理由の無い実装上必要となる機能の幾つかが不具合を有していても、そのソフトウェアは仕様書を満たしていると主張可能ということである。参考文献EditE.W.ダイクストラ、C.A.R.ホーア、O.-J.ダール『構造化プログラミング』野下浩平,川谷慧,武市正人(共訳)訳、サイエンス社、1975年。/ソフトウェア技術講座〉、1990年。浩一郎『ソフトウェア工学実践の基礎』日科技連、1993年。Congress関連項目Editウィクショナリーに関連の辞書項目があります。(通信)この項目は、コンピュータに関連した書きかけの項目です。この項目を加筆・訂正などしてくださる協力者を求めています(PJ:コンピュータ/P:コンピュータ)。noted.PrivacyDesktop。