3

OOP、主にJavaを研究するとき、これら2つの概念は常にリンクされていますが、それらの間に実際の関係や類似性は見られません。私が間違っている場合は訂正してください。

抽象化とは、オブジェクトの重要な部分を識別し、インターフェースで使用される他のすべてを無視することです。 カプセル化は、データがどのように保護および非表示になるかを説明するだけであり、アクセス許可に影響します。

両者の本当の関係はわかりませんが、1つありますか?また、私のものが何らかの形で悪かった場合のそれぞれの簡単な説明が役立ちます。

4

3 に答える 3

2

これらの2つの概念は、ある意味で同じ目標を果たしAbstraction is more about the design, and encapsulation is more about the implementationます(抽象化について説明する場合、フィールドとデータはありません)。

この共通の目標は、ユーザーが操作するためのシンプルで明確に定義されたインターフェースを提供することです。そのため、ユーザーは詳細について気にする必要はありませんが、それが何をし、どのように接続するかについてのみ気にする必要があります。

例として、オン/オフスイッチを見ると、抽象化によって2つの条件とそれらを切り替える方法が定義され、カプセル化によってスイッチ内のワイヤーなどが非表示になり、使い慣れたスイッチが表示されます。私たちは皆知っています。一般的なのは、これら2つの概念のおかげで、その使用法は単純で標準的であるということです。

これらの概念のそれぞれについてもっと言うことがありますが、これは私がそれらの間の関係についてあなたに話すことができることです。

于 2012-04-12T05:31:18.143 に答える
0

スコットアンブラーは、トピックの素晴らしい履歴書を持っています:

クラスが何を知っているかを判断したと言う代わりに、クラスを「抽象化」したと言います。クラスがこのことをどのように達成するかを設計したと言う代わりに、それらを「カプセル化」したと言います(...)

著者は、登録システムに大学生の例を使用しています。学生が持つ多くの属性(髪の色、宗教、民族性)と彼が持つであろう多くの責任(パーティー、スポーツをする、図書館に行く)のうち。学生の名前と住所のみを保存する必要があり、すべての学生がゼミに登録できるようにすることを選択します。それが私たちの学生の抽象化です。

しかし、システムがどのように登録を実行するかはまだわかりません。典型的なJavaアプリケーションはクラスで構成されており、このクラスには属性とメソッドがあります。次に、システム機能はクラスにカプセル化され、各クラス機能はメソッドにカプセル化されると言います。カプセル化は、機能がどのように実装されるかを示しますが、実装の詳細は非表示にします。

于 2012-04-12T06:07:46.360 に答える
0

抽象化抽象 化は、オブジェクトの外観に焦点を当てています。必要なものだけを示しています。

カプセル化(情報の隠蔽)は、抽象化の動作が実装されている内部ビューをクライアントが見るのを防ぎます。

于 2014-04-08T10:32:41.807 に答える