オブジェクト指向 – カプセル化
カプセル化とは
オブジェクトという枠の中に属性と操作がひとまとめになっている様がまるでカプセルに似ているためである。

図1:カプセル化のイメージ
グループ化
例をあげてみる。テレビを表すオブジェクトと冷蔵庫を表すオブジェクトを定義する場合を考えてみる。ここで、全てをひとまとめにカプセル化を行うと、ひとつのオブジェクトの中に「チャンネル」「音量」など、テレビに関する属性と、「温度」のような冷蔵庫に関する属性が存在することになる。「チャンネルを変更する」や「温度を変更する」などの操作に関しても同じ事が言える。

図2:ごちゃまぜカプセル
さて、上記の例では何が問題なのだろうか。一番の問題点は「理解が困難」なことだろう。表現するものが2つだけで、かつ説明のために属性や操作を省略しているにも関わらず、すでに何を表すオブジェクトなのか、わかりにくくなってしまっている。概念を持たずにオブジェクトだけを見たときに「温度と音量を持っていて、テレビの電源を入れたり温度調整を行ったりする」ということがわかるが、一体何を表しているオブジェクトなのか、想像することができない。
規模が大きい概念をオブジェクトとして表す場合に、上記のようにごちゃまぜカプセル化を行ってしまったら、恐ろしいものが出来上がるだろう。
では、このわかりにくさを解決するために、複数のものをひとまとめにせず、テレビ・冷蔵庫共に別々のオブジェクトとして、カプセル化を行ってみる。

図3:分類結果
分類を行っている図3は分類を行っていない図2と比べて、わかりやすさが格段に増している。操作を表す名称に、物を表す名詞を付加する必要がなくなったという事もおおきなポイントだろう。
例「テレビの電源を入れる」→「電源を入れる」
これは、「テレビ」「冷蔵庫」などの物をカプセル自体が表しているので、操作の名称でそれを表す必要がなくなったためである。
カプセル化は必須
オブジェクト=属性+操作
すなわち、オブジェクトを定義するということは、必ずカプセル化を行うということである。
オブジェクト指論 – クラス(Class)
クラスとは

図1:クラスの概念図

