C#
 Computer >> コンピューター >  >> プログラミング >> C#

リスコフの置換原則とは何ですか?C#で実装する方法は?


派生型は、基本型を完全に置き換えることができる必要があります。

定義:

子クラスを親クラスであるかのように扱うことができるはずです。基本的に、これは、すべての派生クラスが親クラスの機能を保持する必要があり、親が提供する機能を置き換えることができないことを意味します。

リスコフの置換前

public class Ellipse {
   public double MajorAxis { get; set; }
   public double MinorAxis { get; set; }

   public virtual void SetMajorAxis(double majorAxis){
      this.MajorAxis = majorAxis;
   }
   public virtual void SetMinorAxis(double minorAxis){
      this.MajorAxis = minorAxis;
   }
   public virtual double Area() {
      return MajorAxis * MinorAxis * Math.PI;
   }
}
public class Circle : Ellipse {
   public override void SetMajorAxis(double majorAxis) {
      base.SetMajorAxis(majorAxis);
      this.MinorAxis = majorAxis; //In a cirle, each axis is identical
   }
}

public class Result {
   public void Method1() {
      Circle circle = new Circle();
      circle.SetMajorAxis(5);
      circle.SetMinorAxis(4);
      var area = circle.Area(); //5*4 = 20, but we expected 5*5 = 25
   }
}

リスコフの置換後

internal class Program {
   private static void Main() {
   }
}
public class Ellipse {
   public double MajorAxis { get; set; }
   public double MinorAxis { get; set; }

   public virtual void SetMajorAxis(double majorAxis) {
      MajorAxis = majorAxis;
   }
   public virtual void SetMinorAxis(double minorAxis) {
      MajorAxis = minorAxis;
   }
   public virtual double Area() {
      return MajorAxis * MinorAxis * Math.PI;
   }
}
public class Circle : Ellipse {
   public override void SetMajorAxis(double majorAxis) {
      base.SetMajorAxis(majorAxis);
      this.MinorAxis = majorAxis; //In a cirle, each axis is identical
   }
   public override void SetMinorAxis(double minorAxis) {
      base.SetMinorAxis(minorAxis);
      this.MajorAxis = minorAxis;
   }
   public override double Area() {
      return base.Area();
   }
}

public class Circle1 {
   public double Radius { get; set; }
   public void SetRadius(double radius) {
      this.Radius = radius;
   }
   public double Area() {
      return this.Radius * this.Radius * Math.PI;
   }
}

  1. Windows 10 Godモード:とは何か、そしてその方法

    コンテンツ: Windows10ゴッドモードの概要 神モードとは何ですか? Windows10でGodモードをアクティブ化する方法 Windows10ゴッドモードの概要 Windowsシステムのすべてのツールと設定に簡単かつ迅速にアプローチしたい場合は、Windowsマスターコントロールパネルをアクティブにすることができます。 (またはいわゆる神モード ブロガーによる)そして便宜のためにそれを使用してください。 これはフォルダに隠された機能であり、多くの人がこのモードを開いたことがない理由を説明しています。Windows10用に設定することは言うまでもありません。 こ

  2. BIOS とは? BIOS の更新方法は?

    BIOS とは何か、および BIOS を更新する方法: お使いの PC で、キーボード、電源、またはインターネット接続、PC の速度などのソフトウェアに関連する問題に直面するときはいつでも、ほとんどの場合、問題は何らかの方法で BIOS に関連しています。同じことに関して修理担当者または IT 担当者に相談すると、さらなるトラブルシューティングを行う前に、BIOS を更新するよう提案または指示されます。多くの場合、BIOS を更新するだけで問題が解決するため、それ以上のトラブルシューティングは必要ありません。