抽象化とカプセル化は、オブジェクト指向プログラミングの主要な概念です。 「抽象化」という用語は不要なデータを隠す方法に関連付けられ、「カプセル化」という用語はデータを XNUMX つの単位に隠す方法に関連付けられます。
抽象化では、焦点はオブジェクトの機能にあります。 カプセル化では、オブジェクト機能の内部の詳細とメカニズムが隠されています。
主要な取り組み
- 抽象化とは、システムをより単純で管理しやすい部分に分割することで、システムの複雑さを隠すプロセスです。 同時に、カプセル化は、オブジェクトの内部の詳細を外界から隠すプロセスです。
- 抽象化は複雑なシステムを簡素化するために使用され、カプセル化はデータの整合性を保護し、許可なくアクセスまたは変更されるのを防ぎます。
- 抽象化は継承、インターフェイス、抽象クラスによって実現され、カプセル化は public、private、protected などのアクセス修飾子によって実現されます。
抽象化とカプセル化
抽象化は設計レベルで問題を解決し、カプセル化は実装レベルで問題を解決します。 データ抽象化では実装の詳細を非表示にしてコードの複雑さを軽減しますが、カプセル化ではデータ保護を目的としてデータを非表示にします。 XNUMX つ目はインターフェイスを使用し、XNUMX つ目はアクセス修飾子を使用します。
抽象化機能は、不要な情報をユーザーから隠します。 より大きな情報のプールからデータを選択します。
オブジェクトに関連するデータのみを選択して表示する機能です。 これは、どの情報を表示する必要があり、何をユーザーに隠す必要があるかを決定するのに役立ちます。
カプセル化機能は、データとその上で動作するコードを XNUMX つのユニットに処理します。 コードへのランダムアクセスを阻止する保護カバーとして想定できます。
システムの内部の詳細や仕組みを気にすることなく、ユーザーが複雑なシステムを理解し、作業しやすくなります。
比較表
比較のパラメータ | 抽象化 | カプセル化 |
---|---|---|
機能する | これは、より大きなデータ プールから選択的な情報を取得するプロセスです。 | これは、データを XNUMX つのエンティティとして保持する方法です。 |
実施レベル | 問題は、設計レベルで、またはユーザーがインターフェイスを使用している間に解決されます。 | 最終レベルでコードが実行されると、問題は解決されます。 |
実装方法 | 抽象化を実装するには、抽象クラスとインターフェース メソッドを使用します。 | これは、プライベート アクセスまたはパブリック アクセスのいずれかを許可するアクセス修飾子を使用して実装されます。 |
データを隠すために使用される方法 | 実装上のハードルを隠すために、抽象クラスとインターフェースが使用されます。 | ゲッターとセッターのメソッドは、データを非表示にするために使用されます。 |
機能間の関係 | 抽象化を推進するのに役立つオブジェクトはカプセル化されています。 | カプセル化を実行するオブジェクトは、抽象化する必要はありません。 |
抽象化とは何ですか?
データの抽象化では、重要な詳細のみがユーザーに表示されます。 抽象クラスとインターフェースのメソッドは、抽象化を実装するために使用されます。
より大きなプールからデータを選択し、同様のタイプのクラスを作成します。 クラスは、同じデータ型および関数の形式の類似した情報がグループ化された場合に、カプセル化によって作成されます。
クラスには、ユーザーに表示するデータ関数と表示できないデータ関数を自由に決定できます。
アクセス指定子は、抽象化を実装し、オブジェクトに制限を適用するために使用されます。 抽象化は、ユーザーが高レベルのコードを作成し、コードの重複を制限し、情報の再利用可能な基準を拡張するのに役立ちます。
関連性のある選択的なデータを一般に公開することで、アプリケーションまたはプログラムのセキュリティが確保されます。 プログラムの機能は、エンドユーザーに影響を与えることなく、弊社側から変更および更新できます。
抽象化により、高レベルのプログラミングとマシン表現が可能になります。
問題は、計画 (設計) レベルおよびユーザー インターフェイスの対話中に確認され、解決されます。 実装のハードルを隠すために、抽象クラスとインターフェースのメソッドが使用されます。
さらに抽象化されるコード内のオブジェクトはカプセル化されます。 抽象化は、適用されるロジックではなく、コードの機能を知ることに重点を置いています。
カプセル化とは何ですか?
データとデータ上で動作するコードを単一のユニットに処理することはカプセル化です。 単一のユニットには同じ機能を実行するデータが含まれるため、クラスと呼ばれます。
カプセル化を使用すると、プログラムやアプリケーションがはるかに使いやすく、理解しやすくなります。 システムの内部の詳細と仕組みは、ユーザーがコードを操作するために知っている必要はありません。
アクセス修飾子は、データへのアクセスを一般公開するか、または限られたグループの人々に私的使用のために許可するかを決定するシステムで使用されます。
カプセル化では、データはカプセルのように閉じ込められ、外界から保護されるため、操作されることはありません。
カプセル化は抽象化の一種と言えますが、データの隠蔽に関してはセキュリティに特化したものです。最終レベルでゲッターとセッターのメソッドによって実装されます。
このメソッドを使用すると、他のユーザーは、アクセスが許可されている場合にのみ、プライベート メンバーの値を読み取ったり変更したりできます。
データ メンバーは、許可されたアクセスの範囲に応じて、プライベート、パブリック、または保護としてラベル付けされます。 デフォルトでは、すべてのデータ メンバーと関数はコンパイラによってプライベートにされますが、アクセス修飾子を使用して変更できます。
抽象化とカプセル化の主な違い
- 抽象化とは、より大きなデータ プールから関連性のある選択的な情報を取得するプロセスです。 カプセル化は、データを単一のエンティティとして保持する方法です。
- 抽象化すると、問題は設計レベルまたはユーザー インターフェイス中に解決されます。 カプセル化では、コードの実行時、つまり最終レベルで問題が解決されます。
- 抽象クラスとインターフェースのメソッドは、抽象化を実装するために使用されます。 カプセル化は、プライベート アクセスまたはパブリック アクセスのいずれかを許可するアクセス修飾子を使用して実装されます。
- 抽象クラスと抽象インターフェイスは抽象化における実装のハードルを隠すために使用されますが、カプセル化はゲッターとセッターのメソッドを使用してデータを隠すために使用されます。
- 抽象化を行うオブジェクトはカプセル化されますが、カプセル化されたオブジェクトは抽象化する必要はありません。