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

削除された内容 追加された内容
m編集の要約なし
m編集の要約なし
7行目:
 
== 概要 ==
[[構造化プログラミング]]を提唱した[[エドガー・ダイクストラ]]は、プログラムの[[段階的詳細化法]]の知見から、プログラムを構成するアルゴリズムとそのアルゴリズムで用いられるデータ構造は密接に関連しており、まず最初にアルゴリズムをある程度詳細化してからでないと多くの場合そのデータ構造は決定できないと指摘した<ref name=ex2>[[#構造化プログラミング|構造化プログラミング]] pp.58-65</ref>。'''データ抽象'''(data abstract)の方法<ref>アルゴリズムなどの情報から決定可能になるまで、アルゴリズム上必要となる定のデータ構造の存在は変数名で抽象(abstract)しておくという'''方法。<br />
[[#構造化プログラミング|構造化プログラミング]] pp.58-65 における image型 はデータ抽象'''(data abstract)方法例である。</ref name=ex2 />はこの解決策であり、データ抽象を駆使してアルゴリズムとそのデータ構造を洗練化(段階的詳細化)したものは'''真珠'''(pearl)と呼ばれる<ref>[[#構造化プログラミング|構造化プログラミング]] pp.68-69</ref><ref>ダイクストラやヴィルトの普及もあってか、以後「アルゴリズム」と「データ構造」と言う単語の入ったプログラミングに関する書籍が多く出版されることとなった。</ref>。
 
上記のように、ダイクストラの[[構造化プログラミング]]によれば、プログラムの開発においてアルゴリズムとそのデータ構造は一体不可分のごとく密接に関連している。したがって、アルゴリズムを後から変更する場合、一度決定したはずのデータ構造も自動的にその修正を余儀なくされてしまう。しかも、大規模なプログラム開発であれば、その修正箇所は多数の関連ソースコードの各所に散逸してしまうことになる<ref>このような構成からなるプログラムは変更に弱くバグが発生しやすく保守管理も困難となる。</ref>。
 
ほとんど一体不可分のものであるアルゴリズムの操作とそのアルゴリズムに関連するデータ構造に対してほとんど一体不可分のものであ、異なので、別々の変数つ異なるものとして扱うよりも一つの変数名からなる一つのまとまりからなるものとして扱う方が管理しやすい。このように、関連するデータとその操作を一つの何かまとまりにまとめることを情報の'''カプセル化'''(encapsulation)と呼ぶ。
 
== 脚注 ==