こんにちは、私は一学期の間 C++ で OOP をプログラミングしており、C# を始めたばかりです。レイヤーを互いに分離する方法と、何がどこで何をするのか、まだ完全には理解していません。私が理解していることから、これらの層があります:
ストレージ -> データ アクセス -> ビジネス ロジック -> コマンド プロセッサ -> ユーザー インターフェイス
今、私は各層の責任が何であるかを正確に理解できないようです..
データ アクセスには、追加、更新、削除、クエリなどのメソッドのみが含まれていることを理解しています。データ アクセスは、オブジェクトをパラメーターとして受け取り、それを処理するだけで、何を挿入するかは気にしません。ビジネス ロジックは、コマンド プロセッサがユーザー インターフェイスからデータを取得し、入力検証を行ったコマンド プロセッサから送信されるデータからオブジェクトを作成しますか?
また、クエリコマンドはデータを送り返す必要があるため、挿入コマンドとは大きく異なる方法など、さまざまなコマンドをどのように送受信しますか..
おそらくおわかりのように、私はかなり道に迷っており、このテーマに関する適切なチュートリアルを見つけるのに苦労しています.
ありがとう!
編集。
データ アクセス レイヤーのクエリ メソッドから始めようとしています。親タイプの汎用リストに格納する 3 つの子オブジェクトがあります。
さまざまなクエリ オプションがあります。そのうちの 1 つはタイプです。したがって、親リストを検索し、指定されたタイプの場合は各オブジェクトのデータを返す必要があります。親オブジェクトには上書きされた ToString() と、親の ToString() を呼び出してオブジェクトのすべてのデータを 1 つの文字列に取得する子があります。私はここでビジネスロジックの仕事をしていますか? また、自分のタイプに一致するオブジェクトのリストを取得し、ToString() を呼び出す foreach でそれをスローして反復しようとすると、親の ToString() だけが呼び出されます。
public string Lookup(Types type)
{
List<Parents> search = new List<Parent>();
switch (type)
{
case Types.TypeOne:
{
search = ParentDataBase.FindAll( delegate(Child1 findChild) {
return findChild is ChildOne; } );
}
break;
case Types.TypeTwo:
{
search = ParentDataBase.FindAll( delegate(Parents findChild) {
return findChild is ChildTwo; } );
}
break;
case Types.TypeThree:
{
search = ParentDataBase.FindAll( delegate(Parent findChild) {
return findChild is ChildThree; } );
}
break;
}
string results = "";
foreach (Parent x in search)
{
results += t.ToString();
}
return results;
}