ここの初心者。私は OOD/OOP を学習しようとしており、SQL テーブルをクラスに変換することは想定されていないことをネットで読んでいます。しかし、なぜそれをしないのか、どのテーブルをスキップするのかについての説明が見つかりません。というわけで、下の図をもとにWebアプリケーションを作りました。それは完全にうまく機能します。ただし、OO は使用しません。どのテーブルをクラスにマップしてはならないのか、またその理由を簡単に説明してください。お時間をいただきありがとうございます。PS LINQ や NHibernate などは理解していないので使用しないでください。OODを理解する必要があるだけです。
2 に答える
.NET (およびおそらく他のほとんどの言語) でアプリケーションを設計する場合、アプリケーションに必要なすべてのテーブルは独自のクラスになりますが、テーブルにマップされていないクラスをさらに多く作成することもできます。
プログラムの要件が整ったら、データベース層 (テーブルなど) を設計して、データベースに保存したいデータを永続化する必要があります。次に、小規模なプロジェクトの場合、各テーブルは自動的にクラスになり、これらの「モデル」または「エンティティ」クラスを管理するためのクラスの構築を開始できます。テーブルにマップされたクラスは、エンティティまたはモデルと呼ばれることがよくあります。マップされていないクラスは単にクラスと呼ばれます。
したがって、あなたの例では、4 つのテーブルがあるため、少なくとも 4 つのモデル クラスがあります。次に、プログラムを通じてモデル クラスを適切に管理するために、追加の非モデル クラスを (必要に応じて適切に) 設計します。
OOP を理解したい場合は、データベースから始めないでください。テーブルからクラスへの「変換」がいたるところで見られるという事実は、Entity Framework のような特定の ORM (Object Relational Mapper) を示すことの不幸な副作用です。これらは特定のライブラリのデモであり、OOP のデモではありません。
したがって、まず最初に、データベースを無視します。それのすべて。残念なことに、MS が「Web アプリケーションをいかに簡単に実行できるかを見てください」として、あのいまいましい EF をどこにでも押し付けています。ORM は高度なトピックです。OOP の基本 (C# を使用)、つまり、オブジェクトとクラスの比較、カプセル化、継承、ポリモーフィズムとは何か、SOLID の原則について理解する必要があります (Google で検索すると、多くの記事やビデオ プレゼンテーションが見つかります)。 )。
それらを理解した後でのみ、データベースを試して、基本的な ado.net から始めてください。それを明確に理解してから、ORM について読んでください。実際、その前に、デザイン パターンについて少し読む必要があります。
これらすべての概念を明確に理解する必要があります。現時点では、すべてが非常に混乱していると思います。チュートリアルの大部分は、適切なアプリケーションの階層化や責任に関係なく、特定の機能を対象としているためです。すべてが混ざり合っており、初心者としては、これがあなたがしなければならない方法であるという印象が残っています.