問題タブ [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.
abstraction - 情報の非表示と非表示の依存関係
プロシージャ (または関数、モジュールなど) の設計における一般的なベスト プラクティスは何ですか?
より具体的に言うと、getEmployeePhoneNbr(employeeId) というプロシージャをコーディングするとします。内部的には、このプロシージャは、employeeId をキーとするデータベース テーブルをクエリすることによって実装されます。これらの実装の詳細を非表示にしたいのですが、手順が外部ファイルに依存するようになり、環境が変わるとその使用が妨げられます。
プロシージャが外部リソース (ファイル、データベースなど) を使用するときはいつでも、同じ状況が発生します。プロシージャ内でそのリソースの使用をハードコードするのは、どういうわけか間違っているように感じますが、代替手段が何であるかはわかりません。
私はオブジェクト指向言語で作業していないことに注意してください。可能な限り、あらゆる種類の言語に広く適用できる回答に最も関心があります。
ありがとう、マット
c# - C#カスタムオブジェクト検証設計
現在、アプリケーションのカスタムフィールドオブジェクトを検証する必要があります。簡単に言うと、各Fieldオブジェクトは、フィールドの検証に関する情報と、フィールドの値で構成されます。フィールドを一括で検証しているので、現在、検証クラスがあり、各検証のメソッドがあります。必須フィールドの場合、次のようになります。
今私の問題は、検証を抽象化する必要があると感じていることです。したがって、次のように言う代わりに、
...検証クラスを追加して、値を受け入れ、これに変換します。
これを行うと、フィールドオブジェクトを使用せずに検証クラスを再利用できるようになり、ユニットテストも向上します...しかし、それは不必要な抽象化レイヤーのようであり、繰り返しもあります。 。覚えておいてください、これはすべての検証の中で最も簡単です。
提案?
python - Python ゲーム プログラムの抽象化とクライアント/サーバー アーキテクチャに関する質問
ここが私が現在いる場所です。主要なコンポーネントを将来の作業に活用することを目的として、カード ゲームを設計しています。私を悩ませているのは、サーバーとクライアントの間に抽象化のレイヤーを作成することです。サーバーが起動すると、1 つ以上のクライアントが (ローカルまたはリモートで) 接続できるようになります。私はシック クライアントを設計していますが、友人が Web ベースのクライアントを検討しています。さまざまなクライアントが共通のサーバー コマンド セットを呼び出せるようにサーバーを設計したいと考えています。
そのため、最初に、ゲームのルールとプレイヤーのやり取りを管理する「サーバー」と、ローカル CLI の「クライアント」を作成したいと思います (便宜上、Ubuntu Linux を実行しています)。私は、将来のクライアントが CLI ベースまたはローカル マシン上にあることを強制せずに、2 つの部分がどのように相互作用するかを具体化しようとしています。
有益な次の 2 つの質問を見つけましたが、上記には完全には答えていません。
すぐにフル機能が必要というわけではありません。最終的なモックアップ コードが関係を適切に反映するように、抽象化の基本的なメカニズムを確立したいだけです。オールインワン アプリケーションとは異なる前提条件がクライアント/サーバー関係に関係しています。
どこから始めればよいですか?どのリソースをお勧めしますか?
免責事項: 私はさまざまな言語のコードと一般的なプログラミング/ロジックの概念に精通していますが、かなりの量のコードを実際に書いた経験はほとんどありません。このペット プロジェクトは、これを修正するための試みです。
また、すでに情報が出ていることは承知していますが、木よりも森が恋しいという印象が強いです。
.net - Common InfrastructureLibrariesを使用した.NETロギングの抽象化:
最近、アプリケーション全体でログを抽象化することを検討しています。別のリソースに関するより具体的な投稿により、「共通インフラストラクチャライブラリ」が推奨されました。
http://netcommon.sourceforge.net/
具体的には、Common.Loggingクラス。これは、多数のロギング実装(log4netなど)の前に配置できる共通インターフェースを提供します。
ただし、サードパーティのコードをもう1つプロジェクトに導入するのは少し嫌です。
誰かがこのライブラリを使用しましたか?私はあなたの経験を聞いてみたいと思います。
ありがとう
url - URL を抽象化するにはどうすればよいですか?
URL の抽象化: www.domain.com/perl.pl から www.domain.com/perl
私は MIT の Software Engineering for Internet Applications (具体的にはhttp://philip.greenspun.com/seia/basics ) を読んでおり、著者の Philip Greenspun は URL の抽象化について言及していますが、実際の詳細については触れていないようです。それを実装します。
ローカルホストで Debian と Apache を実行しており、cgi bin と python をいじっています。不思議なんだけど:
- URL を抽象化するツールはありますか?
- どうすればいいのですか?
c# - 抽象/仮想メソッドからの一般的な戻り値の型
私は2つの基本クラスの間に関係があります:
そして、その具体的な実装は次のとおりです。
MSDN のドキュメント http://msdn.microsoft.com/en-us/library/ms379564%28VS.80%29.aspx (約半分下) および同様の (ただし同一ではない) クエストイン SO の戻り値の型を指定するサブクラスに従ったベースクラスからの抽象メソッド
オーバーライドされたメソッド GetCandidates の戻り値の型に concreate 実装を使用できますが、それは私が望むものではありません。別の抽象クラスの具象実装を使用したいと考えています。これは、データベースの親子関係です。私が達成しようとしていることは可能ですか?現在、GetCandidates の戻り値の型が一致しないというコンパイル時エラーが発生します。
ありがとう
.net - リポジトリ パターンを使用して、同じベース オブジェクトから派生した集計に共通の機能を提供する
リポジトリ パターンを使用して、既存の DB2 スキーマにデータ アクセス層を書き込もうとしています。このスキーマにはいくつかの集約があり、そのすべてが「ドキュメント」という共通の基本エンティティを持っています。ビジネス オブジェクトを構築するとき、Document エンティティを抽象として作成し、集約を Document から派生したエンティティとして作成しました。例えば:
ここで、BillingDocument のリポジトリを作成したいと考えていますが、BillingDocument リポジトリにすべての Document ベース プロパティをロードしたくないことがわかっているため、この機能のジェネリック型パラメーターを持つ別の抽象クラスを作成しました。 . ただし、派生した集約エンティティ用にコーディングするリポジトリで使用される抽象的な Document エンティティのインスタンスを返す方法を理解するコーダーのブロックがあります。次のようにリフレクションでそれを行うことができますが、すべてが間違っているように感じます。
私はすべてねじれています。誰かがこれで問題ないことを保証してくれますか、それとも私が馬鹿だと言ってより良い方法を教えてくれますか?
前もって感謝します。
mysql - 抽象化の概念は MySQL のテーブルに関連していますか? もしそうなら、どうすればいいですか?
ピストン エンジンとロータリー エンジンの両方を含む、さまざまなエンジンに関するデータを MySQL データベースに保存したいと考えています。
OO 言語では、スーパークラスを作成して拡張し、サブクラスEngine
を取得できます。PistonEngine
RotaryEngine
PistonEngine
サブクラスには、CylinderNo、PistonBore、PistonStrokeなどのプロパティが含まれます。
RotaryEngine
サブクラスには、RotorThicknessやRotorDiameterなどのプロパティが含まれます。
MySQL では、ピストン エンジンとロータリー エンジン用にそれぞれ 2 つの個別のテーブルを作成できますが、エンジン データの一部としてEngineTypeフィールドを保持し、両方のエンジン タイプに共通するすべてのデータを 1 つのテーブルに格納することをお勧めします。
データの冗長性をできるだけ回避するようにデータベースを設計するにはどうすればよいですか?
oop - カプセル化は抽象化のサブセットですか?
カプセル化と抽象化の両方が情報の隠蔽に関連しているので、カプセル化を抽象化のサブセットとして理解できますか?