« 新人向けオブジェクト指向の説明 | メイン | 初学者向け「プログラミングの心得」 »

June 27, 2005

「カプセル化」の解説

capsule.gif
新人向けオブジェクト指向の説明の続き。

今日目にした IT Pro の『矢沢流 これで納得! オブジェクト指向入門』 第2回(下) という記事の中に気になる記述があった。

「カプセル化」に関して、クラスのメンバーの中のクラスを使う人に見せる必要のないものを隠すことであり、Java では private を使うのがその方法である、のように解説してあった。

うーん。それって「カプセル化」というより、「情報隠蔽」の解説ではなかろうか。

私の認識だと:

「カプセル化」と「情報隠蔽」は、概念としては別物だと思う。
「情報隠蔽」は「カプセル化」のときにその分離の手段の一つとして使われることが多い、ってだけではなかろうか。

Java で言えば、「情報隠蔽」の一手段として用意されているものが、private などのアクセスコントロールで、「カプセル化」の一手段として用意されているものは、class だろう。
Java の class は、まさに「構造と振る舞いをグループ化して1つの抽象物を定義し,異なる抽象物と互いに別物として分離する」手段を提供するものであり、また、その中に分離の一手段としての「情報隠蔽」の仕組みも内蔵している。


矢沢氏の解説は、勿論初学者向けのぶっちゃけた解説であり、正確に伝えることより判りやすく伝えることが重要な場面、いうことは理解できるのだが、どうなんだろう。
私なら寧ろ、「『カプセル化』とは、ぶっちゃけ class のことです」のように説明するかも知れない。

投稿者 Fujiwo : June 27, 2005 02:30 AM

トラックバック

このエントリーのトラックバックURL:
http://blog0.shos.info/cgi-bin/mt-tb.cgi/217

コメント

Fujiwoさんの認識に同意です。
カプセル化と、情報隠蔽は別物ですよね。
でも、GoF本は混同していますね。

投稿者 あまぴょん : June 27, 2005 10:05 PM

あまぴょん さん、こんにちは。

あまぴょん さん の同意が得られて、ほっとしています。
結構混同している解説書が多いですよね。

投稿者 Fujiwo : June 28, 2005 06:55 AM