generated at
オブジェクト指向:カプセル化
データとそれを操作する 手続き一体化して「オブジェクト」として定義し、オブジェクト内の細かい仕様構造外部から隠蔽すること。
外部からは公開された手続きを利用することでしかデータを操作できないようにすることで、個々のオブジェクトの独立性が高まる。
カプセル化を進めることによりオブジェクト内部の仕様変更が外部に影響しなくなり、ソフトウェア保守性開発効率が高まり、プログラム部分的再利用容易になる。

カプセル化の利益

関連する変数とメソッドを適切なソフトウェアにまとめるカプセル化は、簡単であるが、ソフトウェア開発者に2つの主要な利益をもたらす強力な アイデアである。

オブジェクトのソースコードは、他のオブジェクトのソースコードから独立して書いたり、維持することができる。
また、オブジェクトはシステム内簡単に渡すことができる。
ほかの誰かにあなたの自転車を与えても、うまく動くだろう。

オブジェクト は、他のオブジェクトとの通信に使用することができるパブリックインターフェースを持っている。
しかし、オブジェクトは、依存する他のオブジェクトに影響を与えずに、いつでも変更可能な内部情報やメソッドを維持することができる。
自転車に乗るために、ギアのメカニズムを理解する必要はない

データカプセル化によるメリット

データ部分の変更が各モジュールに影響しない。
アクセスメソッドによるチェック機能によって、データの破壊を避けることができる。
データアクセスの履歴を取ることで、不具合修正が容易となる。
アクセスメソッドの互換性を保つことで、モジュールとデータの機能拡張を他のモジュールに依存せずに行うことができる。

データカプセル化によるデメリット

データカプセル化は、設計を誤ると次のような問題が生じる。
大きなパフォーマンス低下。
機能の縮小や制限。
モジュールの自由度の制限。
行数や工数の増加。