「カプセル化」の版間の差分

削除された内容 追加された内容
m編集の要約なし
m D.L.パルナス→デイビッド・パーナス。当人の項目があるためリンクを追加。
1行目:
{{otheruses|オブジェクト指向での概念|コンピュータネットワークの通信プロトコルに関する概念|カプセル化 (通信)}}
{{出典の明記|date=2018年12月}}
プログラミングにおける'''カプセル化'''(カプセルか、{{lang-en-short|encapsulation}})とは、データ(属性)とメソッド(手続き)を一つの[[オブジェクト (プログラミング) |オブジェクト]]にまとめ、その内容を隠蔽することを言う。カプセル化の概念は、D.L.[[デイビッド・ナス]]の'''情報隠蔽'''(information hiding)の構成概念の一つとして見ることができる<ref>その情報隠蔽の概念と同一視されることも多い。パルナス自身は分割の単位としてカプセルという用語ではなくモジュール(module)の用語を用いている。[[#Parnas(1971)|Parnas(1971)]]</ref>。
 
オブジェクト指向プログラミングにおけるオブジェクトは、[[クラス]]による情報のカプセル化を行うことで作られる。
16行目:
 
;情報隠蔽(information hiding)
[[デイビッド・ナス(D.L.Parnas)]]はモジュール間の結合に関する議論を進める上で、プログラムやモジュールに関する設計情報は濫りに公開してはならず、むしろ積極的に隠蔽すべきであるという情報隠蔽(information hiding)の考え方を説いた。つまり、公開すべきものはプログラムやモジュールの仕様であって、その実現手段ではないと主張した<ref>[[#山崎(1990)|山崎(1990)]] p.131</ref><ref>ソフトウェア業界においては、理想的には顧客が提示する仕様書に基づいてソフトウェアを開発し、そのソフトウェアが仕様書を満たしていれば顧客に納品することができる。つまり、顧客が提示する仕様書にある機能が実現されており、かつその機能を実行する限りにおいて動作検証されていれば、そもそも顧客が関知する理由の無い実装上必要となる機能の幾つかが不具合を有していても、そのソフトウェアは仕様書を満たしていると主張可能ということである。</ref>。
 
公開すべき仕様上の機能を呼び出す機構は'''インターフェース'''(interface)と呼ばれる。インターフェースを経由することでモジュールの機能の情報隠蔽をすることができる。ほかに情報隠蔽を実現する機構としては、モジュールの機構自体に公開/非公開(public/private)の区別を指定する方法が一般的である。