ためになるホームページ お問い合わせ




TOP > Java > カプセル化とオブジェクト指向
カプセル化の利点
保守性、柔軟性、拡張性、明確性。
  • インスタンス変数を保護する。(private修飾子で保護をする)
  • パブリックなアクセッサメソッドを作成し、呼び出し側のコードにはこれらのアクセッサメソッドを使わせる。
  • これらのアクセッサメソッドは、JavaBeansの命名規則に従って「set<プロパティ名>」「get<プロパティ名>」という名前をつける。
  • オブジェクト指向の設計原則では将来に備えるべきであるとされている。
    安全の為には、呼び出し側のコードをインスタンス変数に直接アクセスさせず、いつでもメソッドを通じてアクセスすべき。その事により、後からメソッドの実装方法を自由に修正することができる。

    IS-A関係
    IS-A関係は、オブジェクト指向の継承(拡張)の概念である。例えば、あるクラス「Super」を「Sub」が継承している場合、「SubはSuperである。」と言える。すなわち、「Sub IS-A Super」である。instanceof演算子を用いて比較する場合、Subの参照変数「s」を使い、「s instanceof Super」となる。この結果はtrueになる。

    IS-A関係の例
    class Super{}
    class Sub extends Super{}
    
    

    この場合、「Sub IS-A Super」と言える。しかし、「Super IS-A Sub」とは言えない。何故なら、Subクラスは独自に色々定義できるからである。

    HAS-A関係
    HAS-A関係は使用方法に基づく。クラスAのコード内にクラスBのインスタンスを指す参照がある場合に「A HAS-A B」と言える

    HAS-A関係の例
    class A{}
    class B{
        A a ;
    }
    
    

    クラスBはAを参照する変数を持っているので、「B HAS-A A」となる。






    Copyright 2007 ためになるホームページ All Rights Reserved.