کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

مقدمه ای بر کلاسهای سی شارپ

دوره آموزش برنامه نویسی C#

کلیه حقوق مادی و معنوی این مقاله متعلق به آموزشگاه تحلیل داده می باشد و هر گونه استفاده غیر قانونی از آن پیگرد قانونی دارد.

مقدمه ای بر کلاسها

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

پیاده سازی سازنده ها(کا نستراکتور)

شناسایی تفاوتهای میان نمونه ها و اعضهی ثابت(ایستاتیک)

شناخت مخربها(دستراکتور)

آشنایی با اعضای کلاس

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

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

لیست 1-7 مثالی از یک کلاس را نشان می دهد.

Listing 7-1. Example C# Classes: Classes.cs
        // Namespace Declaration  
        using System;
        // helper class  
class OutputClass
{
            string myString;
            // Constructor  
            public OutputClass(string inputString)
            {
                myString = inputString;
            }
            // Instance Method  
            public void printString()
            {
                Console.WriteLine("{0}"‎، ‏‎ myString);
            }
            // Destructor  
            ~OutputClass()
            {
                // Some resource cleanup routines  
            }
        }
        // Program start class  
class ExampleClass
{
           
// Main begins program execution.              public static void Main()             {                 // Instance of OutputClass                  OutputClass outCl = new OutputClass("This is printed by the output class.");                 // Call Output class' method         
        outCl.printString();             }         }         <%--           ‎دستورات راه اندازی را بکار ببرید تا ببینید چطور این برنامه کار میکند         --%>

لیست 1-7 دو کلاس را نمایش می دهد. کلاس بالایی با نام OutputClass یک سازنده، متد نمونه و یک مخرب کلاس دارد. یک فیلد هم با نام myString دارد. توجه نمایید که چطور سازنده ی OutputClass برای آماده سازی اعضای داده ی کلاس بکار می رود. در این حالت، سازنده OutputClass یک آرگومان رشته ای بنام inputString را می پذیرد. این رشته بداخل فیلد myString کلاس کپی می شود.

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

  public OutputClass() : this("Default Constructor String") { }

تصور کنید این سازنده که در لیست 1-7 ذکر شده در کلاس OutputClass لحاظ شده بود. سازنده پیش فرض بدنبال یک آماده ساز آمده است.

علامت کالن

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

مثال بالا نشان می دهد که چطور یک کلاس می تواند چندین سازنده داشته باشد، سازنده ی خاصی که فراخوانی شده متکی به تعداد پارامترها و نوع هر پارامتر می باشد.

در C# دو نوع عضو کلاس وجود دارد، نمونه و ثابت (ایستا). اعضای کلاس نمونه متعلق به ظاهر خاصی از یک کلاس هستند. هر وقت یک شی از یک کلاس خاص اعلان کنید در واقع یک نمونه جدید از آن کلاس را خلق کرده اید، متد ExampleClass Main() یک نمونه OutputClass به نام outCl ایجاد می کند. می توان چندین نمونه از OutputClass با اسامی مختلف بوجود آورد، هر یک از این نمونه ها مجزا و مستقل می باشند.

برای مثال اگر دو نمونه از کلاس OutputClass بشکل زیر درست کنید.

OutputClass oc1 = new OutputClass("OutputClass1");
            OutputClass oc2 =
new OutputClass("OutputClass2"
);

دو نمونه از OutputClass با فیلدهای myString مجزا و متدهای printString()  توسط شما ایجاد شده، به عبارت دیگر، اگر یک عضو کلاس ثابت باشد به سادگی می توانید با قالب

> عضو کلاس ثابت< . > نام کلاس< به آن دست یابید. اسامی نمونه ها oc1 و oc2 هستند.

فرض کنید OutputClass متد ایستای زیر را داشته باشد.

public static void staticPrinter()
            {
                Console.WriteLine(
"There is only one of me."
);
            }

در ادامه می توانید آن تابع را از Main() بشکل زیر صدا بزنید.

OutputClass.staticPrinter();

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

در حقیقت کتابخانه کلاس پایه .Net framework در خود کلاس Math را گنجانده که استفاده گسترده ای از اعضای ثابت را فراهم می سازد.

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

OutputClass یک مخرب نیز است. مخرب ها درست مثل سازنده ها هستند بجز اینکه یک علامت تایلد( ~) در ابتدای نامشان قرار می گیرد. آنها نه پارامتری می گیرند و نه مقداری برگشت می دهند. مخربها در جایی قرار دارند تا شما بتوانید کدی را برای آزادسازی منابعی که توسط کلاس تان در طول عمرش استفاده نموده آزاد سازند.

مخربها معمولا زمانی فراخوانده می شوند که جمع کننده زواید و آشغال های C# تصمیم می گیرد اشیا شما را از حافظه پاک نماید.

توجه:احتمالا به استفاده از اصلاح کننده ی Public توجه کرده اید، (اصلاح کننده دسترسی)،  یعنی اینکه یک عضو کلاس می تواند از دیگر کلاس ها مورد دستیابی قرار گیرد.وقتی در یک کلاس بکار روند، بدین معناست که کلاس می تواند توسط DLL های خارج از Assembly مورد دستیابی قرار گیرند (که معمولا یک فایل *.exe یا *.dll است).

درس 19 : کپسوله سازی اصلاح کننده های دسترسی را عمیق تر شرح می دهد.

تاکنون شما از اعضای کلاس تنها، فیلدها، متدها، سازنده ها و مخربها را شناختید، در ادامه یک لیست کامل از انواع اعضایی که می توانند در کلاس بکار بروند ذکر نموده ایم.

سازنده ها

مخربها

فیلدها

متدها

خواص

فهرست گذارها(اندیس گذارها)

نمایندگی(جانشینی)

رویدادها

کلاسهای تودرتو

 

اقلامی که در این بخش معرفی نشده اند در دروس آتی مشخص می شوند.

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

 

1394/07/27 2894 1661
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...