آموزش برنامه نویسی شی گرا در سی شارپ – ارث بری

ارث بری در سی شارپ

وراثت در سی شارپ C# – Inheritance

یکی از مفاهیم مهم در برنامه نویسی شی گرا وراثت است. وراثت به ما اجازه می دهد یک کلاس از کلاس دیگر، تعریف کنیم که باعث می شود ایجاد و حفظ یک برنامه آسان تر شود. همچنین فرصتی برای استفاده مجدد از عملکرد کد فراهم می کند و زمان پیاده سازی را سریع تر می کند.
هنگام ایجاد یک کلاس، به جای نوشتن کامل اعضای داده و توابع عضو جدید، برنامه نویس می تواند طراحی کند تا کلاس جدید اعضای یک کلاس موجود را به ارث ببرد. کلاس موجود، کلاس پایه نامیده می شود و کلاس جدید، کلاس مشتق شده نامیده می شود.
ایده پیاده سازی وراثت رابطه IS-A است. به عنوان مثال، پستاندار یک حیوان است، سگ یک پستاندار است از این رو سگ حیوان است، و غیره.
mammal IS- A animal, dog IS-A mammal hence dog IS-A animal

کلاس های پایه و مشتق شده در برنامه نویسی شی گرا

یک کلاس می تواند از بیش از یک کلاس یا رابط مشتق شود، که بدان معنی است که آن می تواند داده ها و توابع را از کلاس های پایه متعدد یا رابط های متعدد به ارث برد.
ایجاد کلاس های مشتق شده در C# به شرح زیر است:

<acess-specifier> class <base_class>
{
   ...
}
class <derived_class> : <base_class>
{
   ...
}

کلاس پایه Shape و کلاس مشتق شده آن Rectangle را در نظر بگیرید:

using System;
namespace InheritanceApplication
{
   class Shape 
   {
      public void setWidth(int w)
      {
         width = w;
      }
      public void setHeight(int h)
      {
         height = h;
      }
      protected int width;
      protected int height;
   }

   // Derived class
   class Rectangle: Shape
   {
      public int getArea()
      { 
         return (width * height); 
      }
   }
   
   class RectangleTester
   {
      static void Main(string[] args)
      {
         Rectangle Rect = new Rectangle();

         Rect.setWidth(5);
         Rect.setHeight(7);

         // Print the area of the object.
         Console.WriteLine("Total area: {0}",  Rect.getArea());
         Console.ReadKey();
      }
   }
}

وقتی کد بالا کامپایل شده و اجرا می شود، نتیجه زیر را به دنبال خواهد داشت:

Total area: 35

مقدار دهی اولیه کلاس پایه

کلاس مشتق شده متغیرهای عضو کلاس پایه و متدهای عضو کلاس پایه را به ارث می برد. بنابراین شی کلاس مافوق باید قبل از زیر کلاس ایجاد شده، ایجاد شود. شما می توانید دستورالعمل ها برای مقدار دهی اولیه کلاس مافوق را در لیست مقداردهی اولیه اعضا قرار دهید.
برنامه زیر این را نشان می دهد:

using System;
namespace RectangleApplication
{
   class Rectangle
   {
      //member variables
      protected double length;
      protected double width;
      public Rectangle(double l, double w)
      {
         length = l;
         width = w;
      }
      
      public double GetArea()
      {
         return length * width;
      }
      
      public void Display()
      {
         Console.WriteLine("Length: {0}", length);
         Console.WriteLine("Width: {0}", width);
         Console.WriteLine("Area: {0}", GetArea());
      }
   }//end class Rectangle  
   
   class Tabletop : Rectangle
   {
      private double cost;
      public Tabletop(double l, double w) : base(l, w)
      { }
      public double GetCost()
      {
         double cost;
         cost = GetArea() * 70;
         return cost;
      }
      public void Display()
      {
         base.Display();
         Console.WriteLine("Cost: {0}", GetCost());
      }
   }
   class ExecuteRectangle
   {
      static void Main(string[] args)
      {
         Tabletop t = new Tabletop(4.5, 7.5);
         t.Display();
         Console.ReadLine();
      }
   }
}

وقتی کد بالا کامپایل شده و اجرا می شود، نتیجه زیر را به دنبال خواهد داشت:

Length: 4.5 Width: 7.5 Area: 33.75 Cost: 2362.5

وراثت چندگانه در سی شارپ C#

C# از ارث بری چندگانه پشتیبانی نمی کند. با این حال، شما می توانید از رابط¬ها برای پیاده سازی ارث بری چندگانه استفاده کنید. برنامه زیر این را نشان می دهد:

using System;
namespace InheritanceApplication
{
   class Shape 
   {
      public void setWidth(int w)
      {
         width = w;
      }
      public void setHeight(int h)
      {
         height = h;
      }
      protected int width;
      protected int height;
   }

   // Base class PaintCost
   public interface PaintCost 
   {
      int getCost(int area);

   }
   
   // Derived class
   class Rectangle : Shape, PaintCost
   {
      public int getArea()
      {
         return (width * height);
      }
      public int getCost(int area)
      {
         return area * 70;
      }
   }
   class RectangleTester
   {
      static void Main(string[] args)
      {
         Rectangle Rect = new Rectangle();
         int area;
         Rect.setWidth(5);
         Rect.setHeight(7);
         area = Rect.getArea();
         
         // Print the area of the object.
         Console.WriteLine("Total area: {0}",  Rect.getArea());
         Console.WriteLine("Total paint cost: ${0}" , Rect.getCost(area));
         Console.ReadKey();
      }
   }
}

وقتی کد بالا کامپایل شده و اجرا می شود، نتیجه زیر را به دنبال خواهد داشت:

Total area: 35 Total paint cost: $2450

 

برچسب ها

ممکن است به این موارد نیز علاقه مند باشید:

0 دیدگاه در “آموزش برنامه نویسی شی گرا در سی شارپ – ارث بری”

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

کد امنیتی را در کادر زیر بنویسید *