主な違い:抽象化とカプセル化は、コンピュータサイエンスプログラミングの概念です。 抽象化とは、データの余分な特性がデータから削除されるか分離されるプロセスです。 一方、カプセル化は、データが隠され、メソッドにまとめられるメカニズムです。

抽象化は、データを具体的にするために余分なデータを取り除き削除する一般化されたプロセスです。 コンピュータでは、データを簡潔な形式に変換するのに役立つプログラミング方法です。 この方法ではデータとプログラムは変更されず、どちらも同じ初期形式で保持されます。 唯一の違いは、表示可能なサイズが小さくなることです。 抽象化は細部を減らし、因数分解を試みるので、プログラマは一度にいくつかの概念に集中することができます。
システムはそのような抽象化の層を多数持つことができ、それらは異なる意味と詳細を持ちます。 たとえば、低レベルの抽象化レイヤはプログラムが実行されるコンピュータハードウェアの詳細を公開し、高レベルの抽象化レイヤはプログラムのビジネスロジックを扱います。 これらの詳細は実行時にプログラマに公開されます。 抽象化は、特定のインスタンスに関連付けられていない概念またはアイデアです。 それはその目的と現在の展望に関係しているデータのそれらの詳細だけを捕らえます。 それはオブジェクトのファミリーにおいて(オブジェクト指向プログラミングの概念において)主要な役割を果たす。 そして、さまざまな方法や実装で使用されています。
抽象化の概念は、次のものに実装できます。
- コントロール抽象化:それはアクションの抽象化です。
- データ抽象化:データビットとデータ構造を意味のある方法で許可し処理します。

コンピュータプログラミングのカプセル化は、その機能を2つの異なる表記法に強調しています。
- 一部のオブジェクトのコンポーネントへのアクセスを制限する言語メカニズム。
- そのデータを操作するメソッド(およびその他の機能)とデータをバンドルすることを容易にする言語構成。
カプセル化は隠れメカニズムであり、部外者からのデータを保護および保護するのに重要な役割を果たします。 実際のデータの悪用を防ぐことで、データに基本的な整合性を実際に提供します。 カプセル化では、データは元の有効で一貫性のある形式で保管およびアクセスされます。
一般に、カプセル化とは、ユーザからのオブジェクトを保存し、それを一般的な形式で表現することを意味します。 基本的に、カプセル化では余分な詳細は外部環境から隠されています。 オブジェクトフィールドはこのメカニズムで直接検査され操作されます。 家具とともに隠されている情報は、ソースコードとしてさらに使用されるバージョンでコンパイルされ、ヘッダファイルを介してインターフェースされます。 ときには、パブリッククラスがデータにアクセスしようとする場合があります。このような場合、カプセル化によってパブリックインベーダーによるデータの再生が許可されません。 カプセル化の主な利点の1つは、メカニズムがプログラムの簡潔な形式のみを表すため、プログラムの複雑さを軽減し、ユーザーがプログラムの正確な概念を理解するのに役立ちます。 これにより、開発者またはプログラマがソフトウェアコンポーネント間の相互依存性を制限できるため、堅牢性が向上します。 カプセル化は、SmalltalkやRubyなどの一部の言語にも適用できます。この場合、アクセスはオブジェクトメソッドを介してのみ許可されます。 一方、C ++、C#、Javaなどの他のほとんどのものは、プログラマにある程度の制御を提供します。 これらの言語を使用すると、開発者はpublicやprivateなどのキーワードを使用して、隠されているものにアクセスできます。
抽象化とカプセル化も、OOP(オブジェクト指向プログラミング)の主要な基本事項です。
抽象化とカプセル化の比較
抽象化 | カプセル化 | |
簡単な説明 | 抽象化は、アイテムまたはアイテムのグループに関する重要な詳細を抽出し、重要でない詳細を無視するプロセスです。 | カプセル化とは、データをカプセルにラップするかカプセル化するか、データを簡潔にするプロセスです。 |
彼らです | 抽象化は、表示に必要のないデータを隠すという考えに関連しています。 | カプセル化は、データと機能をグループ化したものです。 |
基本機能 | 基本的に、抽象化は不要なデータを隠すために使用され、関連するデータを提供します。 | 基本的に、カプセル化とは、データを外部から保護するためにコードとデータを1つの単位に隠すことを意味します。 |
いつ運用されますか | それはデザインレベルで問題を操作します。 | それは実装レベルで問題を操作します。 |
役割に有益 | これは、ユーザーがオブジェクトがどのように機能するのかではなく、オブジェクトが何をするのかに集中するのに役立ちます。 | それはプログラマがオブジェクトが何かをする方法の内部の詳細や仕組みを隠すのを助けます。 |
情報は | ここで情報は実データから分離されています。 | ここでの情報は隠しフォーマットにまとめられています。 |
レイアウト | それはデザインの観点から使用されている外側のレイアウトに関係しています。 | それはインプリメンテーションの観点から使われる内部レイアウトに関係しています。 |
例えば | 携帯電話の外観。番号をダイヤルするための表示画面とキーパッドボタンがあります。 | 携帯電話の内部実装の詳細、回路を使用してキーパッドボタンとディスプレイ画面を互いに接続する方法。 |