2015-11-30 29 views
5

私は研究のために違いがあると知っていますが、私はそれらの間に類似点しか見つけることができません...誰かがその違いを明確にし、 Javaプログラムでも、このプログラムはカプセル化または情報隠蔽、あるいはその両方としてカウントされますか?情報隠蔽とカプセル化の違いは何ですか?

class DogsinHouse { 
    private int dogs; 
    public int getdog() { 
    return dogs; 
    } 

    public void setdog(int amountOfDogsNow) { 
    dogs = amountOfDogsNow; 
    } 
} 
+6

[抽象化、カプセル化、および情報隠蔽](http://www.tonymarston.co.uk/php-mysql/abstraction.txt) –

+0

短い答え:情報隠蔽(データプライバシーとも呼ばれます) public、protected、privateのようなアクセス修飾子を使用して、メンバー(メソッドおよびフィールド)へのアクセスを制限することを指します。カプセル化とは、関連する状態と動作をまとめて1つの「カプセル」にすることを指し、OOPでは、その仕事を行うために必要な状態と動作をカプセル化するクラスを指します。関連する概念は結合と結束です。 –

答えて

1

投稿するコード部分は両方の例です。カプセル化は、Javaクラスが状態(オブジェクトに格納されている情報)と動作(オブジェクトが実行できる操作、またはむしろメソッド)を持つ技術です。クラスAでクラスBで定義されたメソッドを呼び出すと、実装を知らずにそのメソッドを使用しているだけで、パブリック・インターフェイスを使用しています。

インシデント変数がプライベート(または保護された)として宣言されている原則を隠すこと:安定したインターフェイスを提供し、プログラムをエラーから保護すること(アクセス不可能なコード部分上記の変数)。基本的には

カプセル使用して情報隠蔽:情報隠蔽せずに

public class Person { 
    private String name; 
    private int age; 

    public Person() { 
    // ... 
    } 

    //getters and setters 
} 

カプセル化:

public class Person { 
    public String name; 
    public int age; 

    public Person() { 
    // ... 
    } 

    //getters and setters 
} 

OOPでは、それがカプセル化と情報隠しの両方を使用することをお勧めします。

関連する問題