オブジェクト指向:カプセル化
オブジェクト指向プログラミングが持つ 特徴の一つ。
データとそれを操作する 手続きを一体化して「オブジェクト」として定義し、オブジェクト内の細かい仕様や構造を外部から隠蔽すること。
外部からは公開された手続きを利用することでしかデータを操作できないようにすることで、個々のオブジェクトの独立性が高まる。
カプセル化を進めることによりオブジェクト内部の仕様変更が外部に影響しなくなり、ソフトウェアの保守性や開発効率が高まり、プログラムの部分的な再利用が容易になる。
カプセル化の利益
関連する変数とメソッドを適切なソフトウェアにまとめるカプセル化は、簡単であるが、ソフトウェア開発者に2つの主要な利益をもたらす強力な アイデアである。
モジュール性
オブジェクトのソースコードは、他のオブジェクトのソースコードから独立して書いたり、維持することができる。
また、オブジェクトはシステム内簡単に渡すことができる。
ほかの誰かにあなたの自転車を与えても、うまく動くだろう。
情報隠蔽
オブジェクト は、他のオブジェクトとの通信に使用することができるパブリックインターフェースを持っている。
しかし、オブジェクトは、依存する他のオブジェクトに影響を与えずに、いつでも変更可能な内部情報やメソッドを維持することができる。
自転車に乗るために、ギアのメカニズムを理解する必要はない。
データカプセル化によるメリット
データ部分の変更が各モジュールに影響しない。
アクセスメソッドによるチェック機能によって、データの破壊を避けることができる。
データアクセスの履歴を取ることで、不具合修正が容易となる。
アクセスメソッドの互換性を保つことで、モジュールとデータの機能拡張を他のモジュールに依存せずに行うことができる。
データカプセル化によるデメリット
データカプセル化は、設計を誤ると次のような問題が生じる。
大きなパフォーマンス低下。
機能の縮小や制限。
モジュールの自由度の制限。
行数や工数の増加。
object-oriented:encapsulation
オブジェクト指向プログラミング(OOP:Object Oriented Programming)
開放/閉鎖原則、オープンクローズドの原則(OCP : the Open-Closed Principle)
インデクサ (indexer)
プロパティ(property)
カプセル化(encapsulation)
#object-oriented-term