2016-08-30 4 views
0

今、記事の海とそれに対処する質問があり、そのほとんどを経験したことが分かっているので、私の理解が正確かどうかを知る必要があります。抽象化、カプセル化、およびそれらの関係についての私の理解は正しいですか?

抽象的な:複雑さを処理する方法。私たちは基本的に最低限必要なものを特定しますが、本質的ではない詳細は省略します。簡素化。

カプセル化:モノを1つのブラックボックスにラップするプロセス。ブラックボックスはさまざまなサービスを提供しますが、すべてが1つのユニットとして結ばれています。

関係::抽象化により、インタフェース(本質)と実装(非本質的)との明確な区別が得られます。これらのアイデアが実装されると、インターフェイスはブラックボックスの中に入りますが、インターフェースは私たちにサービスを提供します。換言すれば、抽象概念の実装はカプセル化である。

プログラミング用語では、抽象化された概念を定義するために、インタフェースおよび抽象クラスが使用されます。これらを拡張または実装する具体的なクラスは、ブラックボックス(カプセル化)です。アクセッサ、ミューテータ、修飾子は、ブラックボックスを改善するために使用されます。だから、基本的に、私たちのカプセル化がどれくらい良いのかは、抽象度がどれくらい良いかにかかっています。

答えて

1

あなたは概念を理解しているようですが、私には明らかです。私が追加する唯一のことは、カプセル化が必然的に抽象化に関連する「それ自体」ではないということです。 OOPでは、カプセル化とは抽象スーパークラスを拡張したり、インタフェースを実装したりしなくても、オブジェクトの内部状態を指します。

コンセプトを打ち破ると、カプセル化されたオブジェクトの外に何かを変更することなく、後で変更または変更できる、外部で提供されるいくつかのサービスの実装を隠すプロセスですそれと対話する他のオブジェクト/ユーザと同じ使用可能なインタフェース(オブジェクトの公開されたメソッド)と同じ「ビュー」。

つまり、カプセル化は抽象化の要件であると言うことができます:抽象化したいものを「カプセル化」しないと、拡張するすべてのオブジェクトに対して同じままである具体的な実装を提供しているということです/それを実装するため、抽象化が失われます。

関連する問題