1

さまざまなレポートを計算して表に表示するソフトウェアを開発しています。しかし、テーブルの構造に大きな違いはなく、多くの列は同じです。まず、レポートごとに 1 つのクラスを作成しました。たとえば、次のようになります。

    class Student()
    {
      int Class {get; set;}
      int Name {get; set;}
      int Age {get; set;}
    }

    class Employee()
    {
      int Name {get; set;}
      int Age {get; set;}
      int Salary{get; set;}
    }
... and more similar classes

しかし、いくつかのクラスを作成した後、それらの多くに共通のプロパティがあり、共通のクラスを作成できることに気付きました。

        class HumanReport()
        {
          int Class {get; set;}//doesn't exist for Employee(null)
          int Name {get; set;}
          int Age {get; set;} 
          int Salary{get; set;}// doesn't exist for Student
        }

ただし、この場合、多くのプロパティに NULL が含まれます。オブジェクト指向プログラミングには、どちらの方法がより適切でしょうか?

4

3 に答える 3

5

共通フィールドを持つ基本クラスを作成し、それを特殊なフィールド用に拡張する必要があります

class Human
    {
      int Name {get; set;}
      int Age {get; set;} 
    }

class Employee : Human
    {
      int Salary{get; set;}
    }

class Student : Human
    {
      int Class {get; set;}
    }

これは継承と呼ばれ、OOP の重要な機能です。

継承の概念に関する MSDN ドキュメントは次のとおりです。

継承 (C# プログラミング ガイド)

于 2013-11-11T08:46:04.987 に答える
2

基本クラスにすべてのクラスのメンバーが含まれるように作成すると言えます。

何かのようなもの

class HumanReport
{
    int Name {get; set;}
    int Age {get; set;} 
}
class Student : HumanReport
{
  int Class {get; set;}
}

class Employee : HumanReport
{
  int Salary{get; set;}
}

ここは読んだ方がいいと思います

継承 (C# プログラミング ガイド)

継承は、カプセル化とポリモーフィズムと共に、オブジェクト指向プログラミングの 3 つの主要な特徴 (または柱) の 1 つです。継承により、他のクラスで定義されている動作を再利用、拡張、および変更する新しいクラスを作成できます。メンバーを継承したクラスを基底クラス、そのメンバーを継承したクラスを派生クラスと呼びます。

于 2013-11-11T08:46:56.923 に答える
1

レポートのすべて (または多く) が持つすべてのプロパティを 1 つのクラスに入れます。

class Person
{
    string Name {get; set;}
    int Age {get; set;}
}

そして、それらから継承する特別なクラスがあります:

class Student : Person
{
    int Class {get; set;}
}

class Employee : Person
{
    int Salary {get; set;}
}

こうすれば、同じことを繰り返さなくなります。Inheritanceについて理解しておくとよいでしょう。これは、オブジェクト指向プログラミングの中心的な概念の 1 つです。

于 2013-11-11T08:46:57.980 に答える