1

抽象化とカプセル化について議論している他の投稿を読んだことがありますが、それらを理解しているとは確信が持てません。または、理解はしているが、内容の明確さに不満を感じているかもしれません。抽象化とカプセル化に関する私の理解は次のとおりです。それらはどのような点で正確/不正確/完全/不完全ですか?

「抽象化は、プリミティブ データ型が不十分な場合に言語を拡張するためにプログラマーによって作成されたデータ型です。プリミティブ データ型と同様に、抽象化には、必要な入力とそれらが返す出力をリストする仕様がありますが、仕様はメソッドでプログラマーを圧倒しません。関数、および入力の操作に使用される変数。クラスは抽象化の一例です。API は抽象化の別の例です。」

「カプセル化とは、抽象データ型 (つまり、クラス) を互いに分離した状態であり、メソッド、関数、および変数が互いに競合しないようにするため、プログラマーは他のプログラムで既存のクラスを簡単に再利用できます。そのため、プログラムの残りの部分に干渉します (プログラマーが必要な入力を正しく提供し、返されるデータを正しく処理すると仮定します)。」

4

3 に答える 3

2

私は APPP での Robert C. Martin の定義を好みます。

抽象化とは、無関係なものを排除し、本質的なものを増幅することです。

于 2015-06-14T17:52:13.220 に答える
0

あなたの理解は正しいと思います...あまりにも多く、具体的にコメントするのをためらっています.

ただし、私がコメントする場合、「抽象化はデータ型です...」ではなく、「データ型を使用して抽象化を実装できます...」と言うかもしれません。と言う :-)。

しかし、それは単なるつまらないものです。わかると思います。コーディングを 36 年間続けてきた私は、それができることを願っています... ほとんどは、合理的なレベルの抽象化をサポートする言語 (PL/1、Pascal、C、C++、Java) でした。

しかし、業界には、ソフトウェアの抽象化の概念を持たず、それを大げさな高慢だと考えている、素晴らしく知的な人々がた​​くさんいます。

個人的には、明確で誤解のない抽象化は、堅実なソフトウェア エンジニアリングの重要な技術要素であると考えています。

于 2015-06-14T00:06:42.880 に答える