抽象化とカプセル化の違い
抽象化とカプセル化の主な違い
- 抽象化では、最も必要な詳細を提供することで有用なデータのみが表示されますが、カプセル化では、必要な情報のコードとデータがラップされます。
- 抽象化は主に何を行うべきかに焦点を当てますが、カプセル化はそれをどのように行うべきかに焦点を当てます。
- 抽象化は、より抽象的な画像を提供することで複雑さを隠し、カプセル化は内部作業を隠して後で変更できるようにします。
- 抽象化はプログラムを多くの独立した部分に分割するのに役立ちますが、カプセル化は新しい要件に応じて簡単に変更できます。
- カプセル化と抽象化を比較すると、抽象化は設計レベルで問題を解決し、カプセル化は実装レベルで問題を解決します。
- 抽象化によりコード内の無関係な詳細が隠され、カプセル化により開発者はコード全体を簡単に整理できるようになります。

抽象化の定義
抽象化は、オブジェクトの関連データのみに焦点を当てた OOP の概念です。背景の詳細を隠し、重要なデータ ポイントを強調することで、複雑さを軽減し、効率を高めます。通常、特定のプロセスに最も関連のある情報のみが保持されます。 抽象化 このメソッドは、実際の機能ではなくアイデアに主に焦点を当てています。
カプセル化の定義
カプセル化は、エンド ユーザーが複雑なシステムを扱いやすくするための方法です。ユーザーは、システムの内部の詳細や複雑さについて心配する必要がありません。 カプセル化 データと、そのデータを操作するコードを 1 つのエンティティにラップするプロセスです。これは、そのラッパーの外部で定義されたコードへのランダム アクセスを阻止する保護ラッパーと考えることができます。

抽象化とカプセル化の違い
抽象化とカプセル化の主な違いは次のとおりです。
| 抽象化 | カプセル化 | |
|---|---|---|
| のために使用します | 抽象化は設計段階で生じる問題や問題を解決します。 | カプセル化は実装段階で生じる問題や問題を解決します。 |
| フォーカス | 抽象化により、オブジェクトがどのように動作するかではなく、その動作に焦点を当てることができます。 | カプセル化を使用すると、コードとデータを XNUMX つのユニットに隠して、外部からデータを保護できます。 |
| 製品の導入 | インターフェイスと抽象クラスを使用して抽象化を使用できます。 | アクセス修飾子 (パブリック、プロテクト、プライベート) を使用してカプセル化を実装できます。 |
| フォーカス | やるべきことに主に焦点を当てます。 | 主に、どのように行うべきかに焦点を当てます。 |
| Application | 設計レベル中。 | 実装レベル中。 |
なぜ抽象化が必要なのでしょうか?
オブジェクト指向プログラミングに抽象化が必要な主な理由は次のとおりです。
- ドメイン モデルの表現を簡素化するのに役立ちます。
- 抽象化により、コード内の無関係な詳細が隠されます。
- 抽象化は、プログラムを多くの独立した概念に分割するのに役立ちます。
- さまざまな状況で ADT (抽象データ型) オブジェクトを使用する際に、最大限の柔軟性を提供します。
なぜカプセル化が必要なのでしょうか?
カプセル化の主な利点は次のとおりです。
- アプリケーションの保守性が向上します。
- ユーザーがシステムを非常に簡単に使用できる柔軟性を提供します
- 開発者がコードをより適切に整理するのに役立ちます
- 他のクラスがどのように実行するかではなく、他のクラスが何を実行するかのみを考慮するため、コーディング プロセス全体が容易になります。
- この方法は、開発者がより「客観的」で結果指向になるのに役立ちます。
- カプセル化されたコードは非常に柔軟で、新しい要件に応じて簡単に変更できます。
- カプセル化により単体テストが簡単になります。
- これにより、モジュールの結合が減少し、XNUMX つのもののすべての部分が XNUMX か所にカプセル化されるため、モジュール内の結合力が高まります。
- カプセル化は、コードの他の部分に影響を与えることなく、コードの一部を変更するのに役立ちます。
- アプリケーションのコードの可読性を向上させます
- セキュリティが強化され、アプリケーションのメンテナンスが容易になります
- カプセル化インターフェイスでは、明確に定義された対話のみが可能になります。
抽象化の例
銀行アプリケーションを作成し、顧客に関するすべての情報を収集するように求められたとします。顧客に関する次のような情報を取得する可能性があります。

ただし、銀行アプリケーションの作成に上記の情報のすべてが必要なわけではありません。
したがって、そのプールからバンキング アプリケーションに役立つ情報のみを選択する必要があります。 名前、住所、納税情報などのデータは、銀行アプリケーションにとって意味があります。

より大きなプールから顧客情報を取得/削除/選択したため、このプロセスは抽象化と呼ばれます。
ただし、一度抽出された同じ情報は、幅広いアプリケーションに使用できます。 たとえば、ほとんどまたはまったく変更を加えずに、同じデータを病院のアプリケーション、求人ポータルのアプリケーション、政府のデータベースなどに使用できます。 したがって、それがマスターデータになります。 これは抽象化の利点です。
カプセル化の例
モバイルデバイスの例を見てみましょう。 モバイル デバイスを使用すると、写真の撮影、メッセージの送信、ビデオ/オーディオの録画、Web へのアクセスなど、さまざまな機能を実行できます。
上記の機能は、ほとんどのスマートフォンに備わっている機能です。ただし、このプログラムを使用する前に、これらの機能の内部動作の詳細を理解する必要はありません。たとえば、カメラがガンマ補正を計算する方法や、画像内の人間の顔を識別する方法を知る必要はありません。ソフトウェア インターフェイスを学習するだけで済みます。これがカプセル化です。
