多くの人々は、抽象化は何かを隠しており、ユーザーに機能性だけを示していると言います。誰もがあなたが隠しているすべてのものは何ですか、あなたが示しているすべてのものは何ですか?動物、エンジン、車両の例を説明しないでください。抽象化で隠れているものは何ですか?
答えて
具体的な例が多く役立つ場合があると思います。
HashMapには、ハッシュコリジョンを処理するための内部構造があります。これは、単一リンクリストの実装です。さて、内部構造がどのように機能しているのか、呼び出されているのか、フィールドが呼び出されているのかなど、あなたは知っていますか?さらに重要なのは、ケアですが、HashMapが「うまく動作する」限りですか?
好奇心・学習目的以外のものでなければならないものが「いいえ」—の場合—これらの詳細はあなたから隠されており、マップのインターフェイスの抽象化によって公開されています。
結果は、(学習することが少ないために)推論しやすいクラスであり、ライブラリメンテナのメンテナンスが容易です(変更を心配する必要がないため、コードを壊すそれらがまだインタフェースを守っている限り)。
あなたの例はオフです。抽象化は 'HashMap'の内部を隠すことではなく、実装をAPI(契約)から分離することに関するものです。 'Map' APIは' HashMap'や 'TreeMap'で実装できます。 – Andreas
@アンドレアスそれは両方です。それは、TreeMapからHashMapを分離することです。もっと細かいレベルでは、HashMapとリンクリストの衝突解決戦略を持つHashMapを、他の解決戦略を使ってHashMapから分離することもあります。より詳細なレベルでは、一般に、この特定のリンクリスト解決戦略を持つものから、リンクリスト解決戦略でHashMapを分離することです。私の例は、実装をAPI(Map APIと一般的にはHashMap APIの両方(例えば 'HashMap.Entry.key'については何も言わない)の両方)から分離するものです – yshavit
抽象化は過負荷の用語です。
オブジェクト指向言語の抽象化は、基本的に、実世界のオブジェクトをモデリングする際に不要な詳細を取り除くことを意味します。また、それを単純化プロセスと考えることもできます。
コンピュータサイエンス全体の抽象化は、よりシンプルなインターフェイスを提供することによって複雑さを隠すことを意味します。あなたの質問は「データ抽象化」を目標としているように見えます。これは、データが抽象化レイヤーで表現されている正確な方法を隠すことを意味します。これは、例えば、データベースのNumberデータ型あなたはそれが数字であることは分かっていますが、ディスクにどのように格納されているかはわかりません。
カプセル化と同じように抽象化が使用されることがあります。
- 1. データベース抽象化 - オプションは何ですか?
- 2. 抽象化とインターフェイスの違いは何ですか?
- 3. 抽象クラスの抽象プロパティ。ポイントは何ですか?
- 4. データレイヤから適切な量の抽象化は何ですか?
- 5. コンパイル時の抽象化の意味は何ですか?
- 6. 情報の隠蔽とデータ抽象化の違いは?
- 7. オペレーティングシステムは抽象化されていますか?
- 8. インターフェイスメンバは抽象化されていますか?
- 9. エンドポイントを抽象化する最善の方法は何ですか?
- 10. オブジェクトを抽象化するためのエレガントな方法は何ですか?
- 11. エンティティフレームワークよりも優れたリポジトリ抽象化を使用していますか?
- 12. これは抽象クラスのインスタンス化ですか?
- 13. タイプクラスを抽象化できますか?
- 14. ゼロパラメータを持つ抽象クラスとパラメータを持たない抽象クラスの違いは何ですか? Scalaで
- 15. データベース抽象化レイヤを使用する利点は何ですか?
- 16. 抽象クラスとミックスインの違いは何ですか?
- 17. 基本クラスは抽象クラスであり、派生クラスも抽象クラスです。
- 18. コンストラクタで抽象化を使用する
- 19. PHPの抽象クラスの子で抽象クラスの親をインスタンス化することは可能ですか?
- 20. 抽象データ型とは何ですか?それはJavaのクラスですか?
- 21. Delphiの抽象化
- 22. Pythonの抽象化
- 23. React.jsの抽象化
- 24. Pythonの抽象化?
- 25. ケースクラスの抽象化
- 26. ValueObjectの抽象化
- 27. "抽象表現"の意味は何ですか? java.io.Fileの で
- 28. データ型は抽象化の敵ですか?本<em>ソフトウェア抽象化</em>の
- 29. 非抽象クラスで抽象メソッドの宣言を許可する目的は何ですか?
- 30. 抽象JPA DAOで名前付きクエリを抽象化
実装の詳細を隠し、パブリックAPIを公開します。 – hexafraction
[プログラミングで抽象化の意味は何ですか?](http://stackoverflow.com/questions/21220155/what-does-abstraction-mean-in-programming) –
https://en.wikipedia.org/wiki /抽象化_%28ソフトウェア_エンジニアリング%29 –