重複の可能性:
抽象化とカプセル化の違いは?
抽象化とカプセル化の違いは何ですか?
OOP設計について議論するとき、カプセル化と抽象化の概念が重要であることに気づきました。しかし、私はそれらが互いにどのように異なるのかよくわかりません。私はたくさんの記事や投稿(それらのほとんどはこのサイトからのものです)を読んだことがありますが、それらは単に互いに矛盾しています。
抽象化は、現実世界のオブジェクトの複雑さを分解する手段であると私は理解しています。この分解には、実世界のオブジェクトを集合的に表す複数のオブジェクトの作成が含まれる場合があります。抽象化には多くのレイヤーを含めることもできます。クラスの継承は、これが当てはまる場合の例です。
カプセル化は、クラス内の内部実装データを隠すプロセスです。これには、Access修飾子やAccessorメソッドなどの言語機能が重要です。
これらの定義が正しい場合(間違っている場合は訂正してください)、インターフェイスはどのような原則で使用されますか?抽象化?実世界のオブジェクトのグループをインターフェイスにまとめることができるからですか?またはカプセル化。インターフェイス自体を使用して、内部の機能を明らかにすることなく、オブジェクトの機能を公開できます。
可能であれば、これら2つの原則を明確に区別する簡単な例も提供できますか?
乾杯。