私はほぼ100以上のリンクを読み、SOに関するすべての質問を調査しましたが、:(まだ理解できませんデータ隠蔽とカプセル
化の違い膨大な調査の結果、1)データの隠蔽はカプセル化によって実現されているか、それともカプセル化の一種であることがわかりました (私は正しいですか)?
2)はいの場合、アクセス指定子の適用はデータ隠蔽 (およびカプセル化も) ですが、データ隠蔽ではなくカプセル化のみであるメカニズムは何ですか?
4042 次
3 に答える
0
アブスタクション
本質的な側面に焦点を当て、背景/実装の詳細を隠します
オブジェクトの外側のビューに焦点を当てます 例 : Stack クラス [抽象化はクラス Push、Pop によって提供されるサービスに焦点を当てます]
- 抽象化により、オブジェクトの動作全体をキャプチャすることができます。
- オブジェクトができることに焦点を当てています
- 責任主導のアプローチに基づいてクラスを識別するのに役立ちます[クラスによって実行される責任に基づいてシステムをオブジェクトのセットとして分類する]
カプセル化
- オブジェクトの状態と動作を 1 つのユニットにまとめる
- クラスを定義することで実現 [状態と振る舞いを識別し、これら 2 つをクラスにまとめる]
- オブジェクトの状態と動作を一緒に保つことができます
- 実装の詳細を隠しません。その目的は、状態と動作を識別し、これらをまとめることです。
- オブジェクトの内側のビューに焦点を当てるのに対し、アブスタクションはオブジェクトの外側のビューに焦点を当てます
- カプセル化は抽象化の実装に役立ちます
情報隠蔽
- カプセル化は、本質的なサービスのみを公開できるようにする必要があります。オブジェクトの実装の詳細を隠すには、カプセル化に関連する概念を隠す情報が必要です。
- 情報の隠蔽とカプセル化は同じではありません
カプセル化とは、オブジェクトのどの状態と動作をまとめるかを識別する決定であるのに対し、情報隠蔽とは、カプセル化された項目のうち、ユーザーに明らかにするものと明らかにしないものを決定することです。
于 2015-06-08T16:51:13.337 に答える
0
カプセル化は複雑さを隠します。ゲッターとセッターを作成しているように..
しかし、データの隠蔽は何かを隠すことを意味し、Javaではアクセス修飾子を使用して行うことができます。
于 2016-02-06T23:44:16.023 に答える