- ベストアンサー
情報隠蔽について
JAVAの情報隠蔽と聞くとどうしても外部の不正なユーザから情報を守るための機能のように聞こえるのですがそんなことってないですよね?以前質問したときは外部からアクセスする人間が処理を間違えないようにする機能みたいなことを教えてもらったのですが。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
他の方も書かれているように、ここでの情報隠蔽とは、不正ユーザからの情報保護のことではなく、ソフトウェア工学上のテクニックのことです。 プログラムのインタフェース仕様と実現手段とをブンリすることによって、実現手段を分離します。 こうすることにより、外部から、実現手段部分(内部データやコード)を直接参照あるいは更新することをできなくしています。 これにより、プログラムの独立性が高まり保守が容易になります。また、予期せぬ使われ方がされませんので、予期せぬバグというものが顕在化せず、プログラムの信頼性が高まります。
その他の回答 (4)
- ngsvx
- ベストアンサー率49% (157/315)
以前の質問で納得されているのに、再度質問をしているようですが、何が問題なのでしょうか? 前に回答された方の答えが信用できないのか、まだどこかに理解できないことがあるのか。 そこを教えてもらわないと、同じ回答しかつきませんし、回答のしようがないです。
- liar_adan
- ベストアンサー率48% (730/1515)
外部の不正なユーザから情報を守るための情報隠蔽というのもあると思いますが、 いま言っているのは、クラスによる情報隠蔽、 具体的にはprivateとかprotectedとかで外部に変数を見せないことによる情報隠蔽ですね? ソフトウェア工学は、その大部分が、 「複雑さとの戦い」に向けられています。 情報隠蔽する目的も、「複雑さを制御するため」です。 たとえ話ですが、あなたが書類を保持していたとします。 あなたのいないあいだに同僚が、その書類を書き換えてしまいます。そうすると、 「あれっ? この書類、どうしてこうなってるんだ?」 「ああ、それ、変更する必要があったから、訂正しといた」 「そんなこと勝手にやられちゃ困るよ!」 というふうになるでしょう。 書類を書き換えることによって、仕事が進むというメリットはありますが、 その一方で、担当者が把握できないとか、 他との整合性がとれなくなるとか、大きなデメリットがあります。 他に公表する必要のないものは隠す。 必要があったら、ちゃんと筋を通して仕事を依頼するというのが、 大きな組織では必要になってきます。 実は昔も、そのことで論争があったのです。 (A)「プログラムを作るには、関わっている人間が情報をすべて共有する方がいい」 (B)「プログラムを作るためには各部分をきっちり分けて、必要以外の情報は隠した方がいい」 一見すると、(A)の方が民主的でまとまるように思えます。 しかし、実際にやってみると、大規模なプログラムでは (B)でないとうまくいかないことがはっきりしてきました。 だから現代の主要なプログラミング言語では、情報隠蔽の考え方を取り入れています。 数百行程度のプログラムでは、あまり問題にはならないのです。 しかし、一人で作れない、数万行とかそれ以上のプログラムになると、 情報隠蔽をきちっとしていないと、 人の書類を勝手に書き換えるようなことが起こります。 そういう混乱が起きないための情報隠蔽です。
- ymmasayan
- ベストアンサー率30% (2593/8599)
故意にせよ過失にせよ自分がアクセス(読んだり、書き換えたり消したり)を 許されていないデータにアクセスすることを防止する機能です。 具体的にはカプセル化ですが、イメージ的に言えば 書類を単に書棚に保存するのでなく責任者別に分けてロッカーに入れて鍵をかけておくという感じです。
http://ja.wikipedia.org/wiki/クラス_(コンピュータ) のカプセル化のソースを追うと判りやすいだろうか? #あってるか自信なし
お礼
なるほど、不正ユーザからの情報保護ではないのですね。隠蔽なんていうからちょっと考えてしまいました。