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

جستجو در دورآموز

خانه / وبگاه / کلاس ها در سی شارپ
1520 برگشت

کلاس ها در سی شارپ

روژان خالدی
روژان خالدی

برنامه نویس زبان c# و vb و علاقه مند به زبان های delphi وvb.net و c و vb وxamarin و java و seo و photoshop

دوشنبه، 19 خرداد 1399 ساعت 21:05:58
کلاس ها در سی شارپ

کلاس

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

بنابراین هر شرکت خودرو سازی که یک اتومبیل را با ویژگی های مورد نظرش تولید کند، شی ایی از یک اتومبیل را ساخته است. با این اوصاف اتومبیل های فراری ، لامبورگینی و کادیلاک همگی شی ایی از کلاس اتومبیل هستند.

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


تعریف کلاس (class)

در زبان برنامه نویسی #C(سی شارپ) یک کلاس میتواند با استفاده از کلمه ی رزرو شده ی class تعریف شود :

public class Customer
{
    //Fields, properties, methods and events go here...
}

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


ایجاد شی ایی از یک کلاس

اگرچه یک شی (object) و کلاس در مواقعی به عنوان جایگزینی برای هم دیگر استفاده میشوند ، در واقع آنها دو چیز متفاوت هستند. یک کلاس نوع یک شی را مشخص میکند. گاهی اوقات از شی به عنوان نمونه ایی از یک کلاس یاد میشود. اشیا میتوانند با استفاده از کلمه ی رزرو شده ی  new که به دنبال آن نام کلاس می آید تعریف شوند :

Customer object1 = new Customer();

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


بررسی یک نمونه مثال از کلاس

در زیر نمونه مثالی آورده شده است که اعضای کلاس در آن مشخص شده اند : 


public class MyClass
{
    public string  myField = string.Empty;

    public MyClass()
    {
    }

    public void MyMethod(int parameter1, string parameter2)
    {
        Console.WriteLine("First Parameter {0}, second parameter {1}", 
                                                    parameter1, parameter2);
    }

    public int MyAutoImplementedProperty { get; set; }

    private int myPropertyVar;
    
    public int MyProperty
    {
        get { return myPropertyVar; }
        set { myPropertyVar = value; }

    } 
}

در نمونه مثال بالا کلاسی به نام  MyClass ایجاد شده است که دارای فیلد ، صفت و متد است.

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

در زیر به طور جداگانه به بررسی هر کدام از این قسمت های مهم  خواهیم پرداخت.


سطح دسترسی (Access Modifiers)

سطوح دسترسی کلمات رزرو شده ای هستند که بر روی اعلان یک کلاس ، متد ، صفت ، فیلد و دیگر اعضای یک کلاس میتوانند اعمال شوند.

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

  • public
  • private
  • protected
  • internal

این کلمات، چگونگی و سطح دسترسی یک کلاس و یا اعضای آن را در برنامه مشخص میکنند.

فیلد (Field)

متغیری که در سطح یک کلاس تعریف میشود فیلد نامیده میشود. فیلد ها میتوانند مقادیری از یک نوع مشخص را در خود نگه دارند. عموما فیلد ها در کلاس دارای سطح دسترسی private (فقط قابل دسترسی در محدوده ی همان کلاس ) هستند و در صفت ها (property) استفاده میشوند.


سازنده (Constructor)

یک کلاس میتواند دارای سازنده های پارامتر دار و یا بدون پارامتر باشد. سازنده ها در هنگام تعریف یک شی از یک کلاس فراخوانی میشوند. سازنده ها به وسیله ی یک کلمه ی سطح دسترسی و کلمه ای که همنام با نام کلاس باشند تعریف میشوند :

class MyClass
{
    public MyClass()
    {

    }
}

متد (Method)

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

{access modifier} {return type} MethodName({parameterType parameterName})
public void MyMethod(int parameter1, string parameter2)
{
    // write your method code here.. 

}

صفت (Property)

یک صفت میتواند با استفاده از کلمات رزرو شده ی get و set مانند نمونه کد زیر ایجاد شود :

private int _myPropertyVar;

public int MyProperty
{
    get { return _myPropertyVar; }
    set { _myPropertyVar = value; }
}

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

عموما صفات در زبان #C دارای سطح دسترسی public (قابل دسترسی  در خارج از محدوده ی کلاس) هستند. به عبارت دیگر فیلد  myPropertyVar_ در خارج از کلاس به طور غیر مستقیم از طریق صفت MyProperty قابل دسترسی است.

در نمونه مثال زیر در هنگام خوانده شدن مقدار صفت، همیشه نیمی از فیلد مورد نظر، نشان داده میشود و در هنگام مقدار دهی نیز مقادیر بزرگتر از 100 در فیلد مربوطه قرار نمیگیرد.

private int _myPropertyVar;

public int MyProperty
{
    get {
        return _myPropertyVar / 2;
    }

    set {

        if (value > 100)
            _myPropertyVar = 100;
        else
            _myPropertyVar = value; ;
    }
}

صفات Auto-implemented

از زمان انتشار #C نسخه 3.0 تعاریف صفات ساده تر شد. این برای زمانی است که نیاز به اعمال منطق خاصی در صفت خود نداریم.

نمونه مثال زیر یک صفت Auto-implemented را نشان میدهد :


public int MyAutoImplementedProperty { get; set; }

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

با صفات Auto-implemented میتوان همانند یک صفت معمولی رفتار کرد و تا زمانی که منطقی نباشد تفاوتی با دیگر صفات ندارد.


فضای نام (Namespace)

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

namespace CSharpTutorials
{
    class MyClass
    {

    }
}

در نمونه مثال بالا نام کامل کلاس MyClass به این شکل است : CSharpTutorials.MyClass.

یک فضای نام میتواند دیگر فضای نام ها را در خود نگه دارد. فضای نام های داخلی در هنگام دسترسی با کارکتر نقطه (.) مشخص میشوند.

namespace CSharpTutorials.Examples
{
    class MyClassExample
    {

    }
}

در نمونه مثال بالا نام کامل کلاس MyClassExample به این شکل است : CSharpTutorials.Example.MyClassExample

درخواست دوره

چنانچه قصد برگزاری دوره ، مشاوره و یا سفارش پروژه را دارید ، درخواست خود را ارسال نمایید

ارسال درخواست دوره
علی

ممنون از شما

ارام

عالیییی

فریبا دقیق

ممنون خیلی مفید بود موفق باشی

اسلامی

خیلی خوب بود....

آزاده

بسیار عالی و مفید

آزاده

بسیار مفید و آموزنده. ممنون

جهت برقراری ارتباط با نویسنده پست و یا ارسال نظر اطلاعات زیر را وارد نمایید
تصویر کپچا دورآموز
سوالات متداول دورآموز