問題タブ [abstraction]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
visualization - 抽象的な概念 (アルゴリズム/データ構造) を視覚化する最良の方法は何ですか?
アルゴリズム/データ構造で「何が起こっているかを見る」ための最良の方法は何ですか? 二分探索のようなものであれば、たくさんの箱が一列に並んでいて、毎回その半分を捨てることを想像するだけです。アルゴリズム/データ構造のように抽象的なものを理解できる、より強力なものはありますか?
明確化: もう少し一般的なものを探しています。例: 時間を視覚化するために - 頭の中で時計を使用する人もいますが、それは遅いですが、より自然な感じは地球であり、アルゴリズムがどのように機能するかを「感じ」ようとしている場合は、2 つのオブジェクトを想像できます。その地球上でさまざまな方向に動いています。
c++ - OpenGL での環境スタックの作成
マトリックス スタックのように機能する環境設定 (ブレンド、ステンシル、深さなど) の OpenGL で抽象化を作成したいと思います。スタックにプッシュし、必要な変更を行い、オブジェクトを描画してから、スタックをポップして以前の設定に戻ります。
たとえば、現在、次のような描画コードがあるとします。
しかし、環境スタックを使用すると、次のようになります。
私が見ているように、これを行うには2つの方法しかありません:
- 各環境設定関数の独自の「フレーバー」を作成し、それを呼び出します。次に、現在の EnvStack データ構造を更新し、OpenGL 環境関数を呼び出します。
- OpenGL 環境関数を変更して、環境関数を指すようにします。これにより、現在の EnvStack データ構造が再び更新され、元の OpenGL 環境関数が呼び出されます。
したがって、オプション 1 は明らかにはるかに単純です。しかし、他の人のコードを使用している場合、それが環境にどのような変更を加えているのか必ずしもわからないため、データ構造が同期しなくなるという問題が発生します。そして、要点は、環境設定が正しいことを確認する簡単な方法を持つことであるため、これはクールではありません。
私の質問は、このコンテキストで、OpenGL 環境関数が指す関数をどのように変更すればよいですか?
javascript - Javascript の「良い部分」を使用する最良の方法
Stackers の勧めで、Crockford の優れたJavascript: The Good Partsを読んでいます。
これは素晴らしい本ですが、Javascript の基本的な機能を使用する最良の方法を説明することにその多くが費やされているため、他の多くの Javascript プログラマーの努力を真似せずに、彼のアドバイスをどのように実践できるかわかりません。
たとえば、次の文章を見てください。
新しいオブジェクトを作成するときに、そのプロトタイプにするオブジェクトを選択できます。これを行うために Javascript が提供するメカニズムは面倒で複雑ですが、大幅に簡素化することができます。
create
関数にメソッドを追加しObject
ます。このcreate
メソッドは、古いオブジェクトをプロトタイプとして使用する新しいオブジェクトを作成します。
このコードをすべての Javascript プロジェクトに手動で追加することはできますが、すべてを追跡するのは非常に面倒です。
The Good Partの推奨事項を実装して、それらを追跡する (/物理的にすべてを入力する) 手間を省くライブラリはありますか?
oop - 抽象化とポリモーフィズムの違いは何ですか
私は 2 つの OOP の概念をよく理解していないようです。できれば実際の例とコードを使用して、抽象化とポリモーフィズムとは何かを説明していただけますか?
ありがとうございました。
c++ - 抽象クラスを使用してインスタンスの配列にメモリを割り当てる方法は?
C ++で純粋仮想メソッドを定義する抽象クラスがあります。
これを、A、B、C などと呼ぶ他の多くのクラス (Test() の実装を提供する) でサブクラス化しました。これを使用して、これらの型の配列を作成したいと思います。基本クラス:
(私が犯した可能性のあるエラーを許してください。簡単な例を提供するために、これをその場で書いています)。
問題は、Base クラスのインスタンスを作成する必要があるため、配列をインスタンス化できないことです (これは抽象的であるため実行できません)。ただし、これを行わないと、配列のインデックスに割り当てるために必要なメモリが割り当てられていないため、そのメモリにアクセスしようとするとセグメンテーション違反が発生します。私は、new と delete を malloc と free と混ぜて使うのは良い習慣ではないという印象を受けています。
これを使用する方法を混乱させた可能性があり、テンプレートまたはその他のメカニズムを使用してこれを行う必要がありますが、何をしようとしているのかを説明するのに十分な情報を提供できれば幸いです.
では、これを行う最善の方法は何ですか?抽象クラスにメモリを割り当てるというこの問題をどのように回避できますか?
ありがとう、ダン
wcf - レポート アプリケーションでのデータベースの抽象化
レポート アプリケーションで、レポート ロジックとデータベース スキーマの詳細を抽象化することは可能ですか?
かなり複雑なレポート ロジックを持つ Reporting Services アプリケーションがあり、そのアプリケーションを他のデータベースに移行しようとしています。(同じ目的のために構築されているが、異なるソフトウェア会社によって開発されているデータベース。)
中間で Web サービス / WCF レイヤーを使用するのは賢明な決定ですか? 他にどのようなオプションが考えられますか?
api - API で公開する低レベルのものはどれくらいですか?
ジェネリック ライブラリのパブリック API を設計する場合、内部で使用される低レベルのものをどれだけ公開する必要がありますか? 一方では、ユーザーは実装の詳細に過度に依存するべきではなく、低レベルの関数/クラスが多すぎると API が乱雑になる可能性があります。したがって、ひざまずく応答は「なし」である可能性があります。一方、低レベルの機能の一部は人々にとって役立つ可能性があり、それをさらに公開することで、抽象化の逆転 (高レベルの構成の上に低レベルの構成を再実装すること) を防ぐことができます。
さらに、より低レベルの詳細を公開すると、パフォーマンスのショートカットが提供される可能性があります。たとえば、配列の中央値を求める関数があるとします。最小驚きの原則では、配列を複製して、API のユーザーがその実装に要素の並べ替えの副作用が伴うことを気にする必要がないようにする必要があります。この場合、 median() はメモリ割り当てを必要とし、割り当てをバイパスする別の関数を提供するが、ユーザーの入力を任意に並べ替えることに注意する必要がありますか?
この種の詳細をどの程度公開するかについての一般的なガイドラインは何ですか?
c# - 抽象型からのリフレクションを使用してテーブルからエンティティを取得する
さて、Productという抽象クラスがあります。Productを実装するItems、Kits、Packagesという3つのテーブルがあります。製品には、オブジェクトの主キーを公開するパブリックプロパティがあります。
そうは言っても、私は製品を渡すフォームを持っています。適切なテーブルを取得するために、そのタイプを反映する大きなスイッチを作成することなく、その製品を新しいデータコンテキストから引き出したいと思います。
私はこのようなことをしたかったのですが、キャストビットはfooを受け入れません。
またはこれ:
java - 漏れやすい抽象化の法則の例外
Joel's Law of Leaky Abstractionsによって軽度の被害を受けたフレンドリーなコーダーと議論しました。新しいフレームワーク/ツールボックスを使用することを彼に納得させるのは非常に困難です。「抽象化されたレベルへの低レベルのアクセスを許可する限り、抽象化は問題ありません」というポイントを提示しようとしています。
例:
- GWT - Google の優れた Java-to-Javascript コンパイラには JSNI があり、本当に必要な場合は「ネイティブ」Javascript を作成できます。
- Hibernate - AFAIK には SQLQuery があります - ネイティブ SQL を書く方法です。
- Java - JNI - C が恋しい場合。
音ですか?何か不足していますか?
ありがとう