کلاس ها در زبان سی شارپ – آموزش زبان سی شارپ

csharp classes 4528 تصویر

کلاس ها در زبان سی شارپ

یک کلاس مانند یک طرح برای یک شیء محسوب می شود. در دنیای واقعی هر شیء دارای ویژگی ها و خصوصیاتی از جمله رنگ، شکل، عملکرد و غیره است. برای نمونه یک ماشین پراید را در نظر بگیرد. پراید یک شیء از نوع ماشین است و ماشین در اینجا نقش کلاس را دارد. یک کلاس ماشین می تواند خصوصیات مختلفی مانند رنگ، اندازه، قدرت موتور و غیره را داشته باشد.

تعریف یک کلاس

تعریف یک کلاس با استفاده از کلمه کلیدی class انجام می شود. ابتدا کلمه کلیدی class، سپس نام کلاس و بدنه کلاس هم بین دو براکت {} قرار می گیرد. در زیر شکل کلی تعریف یک کلاس را مشاهده می کنید:

<access specifier> class  class_name {
   // member variables
   <access specifier> <data type> variable1;
   <access specifier> <data type> variable2;
   ...
   <access specifier> <data type> variableN;
   // member methods
   <access specifier> <return type> method1(parameter_list) {
      // method body
   }
   <access specifier> <return type> method2(parameter_list) {
      // method body
   }
   ...
   <access specifier> <return type> methodN(parameter_list) {
      // method body
   }
}

توضیحات:

  • <access specifier> سطح دسترسی به کلاس را مشخص می کند. سطح دسترسی پیش فرض برای کلاس internal و برای اعضای آن private است.
  • <data type> نوع متغیر و <return type> هم نوع داده ای که از متد بازگشت داده می شود را مشخص می کند.
  • به منظور دسترسی به اعضای کلاس باید از عملگر dot یا همان (.) استفاده شود.

مثال زیر مفهوم چیزی را که در مورد آن بحث کردیم را نشان می دهد:

using System;
namespace BoxApplication {
   class Box {
      public double length;   // Length of a box
      public double breadth;  // Breadth of a box
      public double height;   // Height of a box
   }
   class Boxtester {
      static void Main(string[] args) {
         Box Box1 = new Box();   // Declare Box1 of type Box
         Box Box2 = new Box();   // Declare Box2 of type Box
         double volume = 0.0;    // Store the volume of a box here
         // box 1 specification
         Box1.height = 5.0;
         Box1.length = 6.0;
         Box1.breadth = 7.0;
         // box 2 specification
         Box2.height = 10.0;
         Box2.length = 12.0;
         Box2.breadth = 13.0;
         // volume of box 1
         volume = Box1.height * Box1.length * Box1.breadth;
         Console.WriteLine("Volume of Box1 : {0}",  volume);
         // volume of box 2
         volume = Box2.height * Box2.length * Box2.breadth;
         Console.WriteLine("Volume of Box2 : {0}", volume);
         Console.ReadKey();
      }
   }
}

امتحان کنید

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

Volume of Box1 : 210
Volume of Box2 : 1560

توابع عضو و کپسوله سازی

تابع عضو یک تابع موجود در یک کلاس است که مانند هر متغیر دیگری تعریف یا الگویی از آن در داخل کلاس وجود دارد. متغیرهای عضو (از دیدگاه طراحی) صفات یک شیء محسوب می شوند. این متغیرها به منظور کپسوله سازی به صورت private نگه داری می شوند و تنها توسط توابع public قابل دسترسی هستند.

مثال زیر مفاهیم فوق را نشان می دهد:

using System;
namespace BoxApplication {
   class Box {
      private double length;   // Length of a box
      private double breadth;  // Breadth of a box
      private double height;   // Height of a box
      public void setLength( double len ) {
         length = len;
      }
      public void setBreadth( double bre ) {
         breadth = bre;
      }
      public void setHeight( double hei ) {
         height = hei;
      }
      public double getVolume() {
         return length * breadth * height;
      }
   }
   class Boxtester {
      static void Main(string[] args) {
         Box Box1 = new Box();   // Declare Box1 of type Box
         Box Box2 = new Box();
         double volume;
         // Declare Box2 of type Box
         // box 1 specification
         Box1.setLength(6.0);
         Box1.setBreadth(7.0);
         Box1.setHeight(5.0);
         // box 2 specification
         Box2.setLength(12.0);
         Box2.setBreadth(13.0);
         Box2.setHeight(10.0);
         // volume of box 1
         volume = Box1.getVolume();
         Console.WriteLine("Volume of Box1 : {0}" ,volume);
         // volume of box 2
         volume = Box2.getVolume();
         Console.WriteLine("Volume of Box2 : {0}", volume);
         Console.ReadKey();
      }
   }
}

امتحان کنید

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

Volume of Box1 : 210
Volume of Box2 : 1560

سازنده (Constructors) کلاس در زبان سی شارپ

سازنده کلاس یک تابع عضو خاص می باشد و زمانی که از آن کلاس نمونه سازی می شود، اجرا می گردد. یک سازنده دقیقا هم نام با کلاس می باشد و هیچ نوع بازگشتی ندارد. مثال زیر مفهوم سازنده را توضیح می دهد:

using System;
namespace LineApplication {
   class Line {
      private double length;   // Length of a line
      public Line() {
         Console.WriteLine("Object is being created");
      }
      public void setLength( double len ) {
         length = len;
      }
      public double getLength() {
         return length;
      }
      static void Main(string[] args) {
         Line line = new Line();    
         // set line length
         line.setLength(6.0);
         Console.WriteLine("Length of line : {0}", line.getLength());
         Console.ReadKey();
      }
   }
}

امتحان کنید

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

Object is being created
Length of line : 6

یک سازنده پیش فرض هیچ پارامتری ندارد، اما در صورت نیاز می توان برای آن پارامتر نیز مشخص کرد. سازنده هایی که دارای پارامتر باشند، Parameterized Constructors نامیده می شوند. این تکنیک به شما کمک می کند تا زمانی که از کلاس نمونه سازی می کنید، بتوانید یک مقدار اولیه به شیء آن کلاس تخصیص دهید.

مانند نمونه زیر:

using System;
namespace LineApplication {
   class Line {
      private double length;   // Length of a line
      public Line(double len) {  //Parameterized constructor
         Console.WriteLine("Object is being created, length = {0}", len);
         length = len;
      }
      public void setLength( double len ) {
         length = len;
      }
      public double getLength() {
         return length;
      }
      static void Main(string[] args) {
         Line line = new Line(10.0);
         Console.WriteLine("Length of line : {0}", line.getLength()); 
         
         // set line length
         line.setLength(6.0);
         Console.WriteLine("Length of line : {0}", line.getLength()); 
         Console.ReadKey();
      }
   }
}

امتحان کنید

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

Object is being created, length = 10
Length of line : 10
Length of line : 6

مخرب (Destructors) کلاس در زبان سی شارپ

مخرب کلاس یک تابع عضو خاص می باشد و زمانی اجرا می شود که از محدوده تعریف شده خارج شود. یک مخرب دقیقا هم نام با کلاس می باشد که یک علامت ~ (تیلد) در ابتدای نام خود دارد. مخرب کلاس هیچ نوع بازگشتی و پارامتری ندارد.

مخرب به منظور آزاد سازی فضای حافظه اشغال شده توسط برنامه، قبل از خروج از برنامه بسیار مفید هستند. مخرب ها قابلیت به ارث برده شدن و overloaded را ندارند.

مثال زیر مفهوم مخرب را توضیح می دهد:

using System;
namespace LineApplication {
   class Line {
      private double length;   // Length of a line
      public Line() {   // constructor
         Console.WriteLine("Object is being created");
      }
      ~Line() {   //destructor
         Console.WriteLine("Object is being deleted");
      }
      public void setLength( double len ) {
         length = len;
      }
      public double getLength() {
         return length;
      }
      static void Main(string[] args) {
         Line line = new Line();

         // set line length
         line.setLength(6.0);
         Console.WriteLine("Length of line : {0}", line.getLength());           
      }
   }
}

امتحان کنید

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

Object is being created
Length of line : 6
Object is being deleted

اعضای استاتیک یک کلاس در سی شارپ

به منظور تعریف یک عضو استاتیک در یک کلاس باید از کلمه کلیدی static استفاده کرد. زمانی که یک عضو به صورت استاتیک تعریف می شود، دیگر مهم نیست که چه تعداد شیء از آن کلاس ساخته شود و فقط یک نسخه از عضو استاتیک در تمام نمونه ها وجود خواهد داشت.

کلمه کلیدی static نشان دهنده این است که تنها یک نمونه از آن عضو در کلاس وجود دارد. متغیرهای استاتیک به منظور تعریف ثوابت مورد استفاد قرار می گیرند، زیرا بدون نمونه سازی از کلاس می توان به مقادیر آن ها دسترسی داشت. اعضای استاتیک می توانند علاوه مقدار دهی شدن در داخل کلاس، در خارج از توابع عضو و کلاس نیز مقدار دهی شوند.

مثال زیر نحوه استفاده از متغیرهای استاتیک را نشان می دهد:

using System;
namespace StaticVarApplication {
   class StaticVar {
      public static int num;
      public void count() {
         num++;
      }
      public int getNum() {
         return num;
      }
   }
   class StaticTester {
      static void Main(string[] args) {
         StaticVar s1 = new StaticVar();
         StaticVar s2 = new StaticVar();
         s1.count();
         s1.count();
         s1.count();
         s2.count();
         s2.count();
         s2.count();
         Console.WriteLine("Variable num for s1: {0}", s1.getNum());
         Console.WriteLine("Variable num for s2: {0}", s2.getNum());
         Console.ReadKey();
      }
   }
}

امتحان کنید

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

Variable num for s1: 6
Variable num for s2: 6

علاوه بر متغیرها، می توان توابع عضو را نیز به صورت استاتیک تعریف کرد. چنین توابعی فقط به متغیرهای استاتیک دسترسی دارند. اعضای استاتیک یک کلاس قبل از آن که از کلاس نمونه سازی شود، وجود دارند و می توان به آنها دسترسی داشت.

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

using System;
namespace StaticVarApplication {
   class StaticVar {
      public static int num;
      public void count() {
         num++;
      }
      public static int getNum() {
         return num;
      }
   }
   class StaticTester {
      static void Main(string[] args) {
         StaticVar s = new StaticVar();
         s.count();
         s.count();
         s.count();
         Console.WriteLine("Variable num: {0}", StaticVar.getNum());
         Console.ReadKey();
      }
   }
}

امتحان کنید

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

Variable num: 3

نوشته کلاس ها در زبان سی شارپ – آموزش زبان سی شارپ اولین بار در سورس سرا - آموزش برنامه نویسی. پدیدار شد.

درباره نویسنده: administrator

ممکن است دوست داشته باشید

دیدگاهتان را بنویسید

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