آموزش سی شارپ c# درس هفتم

 
ارسال شده در تاریخ 1392/7/22 توسط admin در زمینه آموزش سی شارپ
 
درس هفتم - آشنایی با کلاسها در C#
 
در این درس با کلاسها در زبان C# آشنا خواهید شد . اهداف این درس به شرح زیر می باشند : پیاده سازی سازنده ها (Constructors)
دری تفاوت بین اعضای نمونه (Instance) و استاتیک (Static) آشنایی با تخریب کنند ه ها (Destructors) آشنایی با اعضای کلاسها
 
در تمامی مطالبی که در این سایت مشاهده کرده اید، برنامه ها دارای کلاسهایی بوده اند . در حال حاضر باید دری نسبی از کلاسها و کار آنها و چگونگی ایجاد آنها داشته باش ید . در این درس مروری بر آموخت ه های قبلی از کلاسها خواهیم کرد و نیز با اعضای کلاسها آشنا میشویم . www.IrAnPRoje.com
 
یک کلاس با استفاده از کلمه کلیدی class که بدنبال آن نام کلاس آم ده باشد، اعلان می گردد و اعضای این کلاس درون {} اعلان می گردند . هر کلاس دارای سازنده ای می باشد که در هربار ایجاد نمون ه ای جدید از آن کلاس، بصورت خودکار فراخوانی می گردد . هدف از سازنده، تخصیص دهی اعضای کلاس در زمان ایجاد نمون های جدید از کلاس است . سازنده ها دارای مقادیر بازگشتی نبوده و همواره نامی مشابه نام کلاس دارند . مثال 7-1 نمونهای از یک کلاس را نشان می دهد . اعلان // Namespace
using System;
 
class OutputClass
{
string myString;
سازنده //
public OutputClass(string inputString)
{
myString = inputString;
}
متد نمونه //
public void printString()
{
Console.WriteLine("{0}", myString);
}
تخریب کننده //
~OutputClass()
{
روتینی جهت آزادسازی برخی از منابع سیستم //
}
}
کلاس آغازین برنامه //
class ExampleClass
{
 
 
آغاز اجرای برنامه //
public static void Main()
{
نمونهای از // OutputClass
OutputClass outCl = new OutputClass("This is printed by the output class.");
فراخوانی متد کلاس // Output
outCl.printString();
}
}
در مثال 7-1 دو کلاس دیده می شوند . کلاس بالایی، کلاس OutPutClass ، دارای سازنده، متد نمونه و یک تخریب کننده است . همچنین این کلاس دارای فیلدی با نام myString است . توجه نمایید که چگونه سازنده این کلاس اعضای آنرا تخصیص دهی ) مقداردهی ( می نماید . در این مثال، سازنده کلاس رشت ه ورودی (inputString) را بعنوان آرگومان خود دریافت می نماید . سپس این مقدار داخل فیلد کلاس یعنی myString کپی میگردد .
 
همانطور که در ExampleClass مشاهده می نمایید، استفاده از سازنده الزامی نمی باشد . در این مورد سازنده پیش فرض ایجاد می گردد . سازنده پیش فرض، سازنده ای بدون هیچ نوع آرگومانی است . البته شایان ذکر است که سازنده هاییی بدون آرگومان همیشه مورد استفاده نبوده و مفید نیستن د . جهت کارآمد کردن بیشتر سازنده های بدون آرگومان بهتر است آنها را با تخصی صدهنده (Initializers) پی ادهسازی نمایید . به مثال زیر در این زمینه توجه نمایید :
public OutputClass() : this("Default Constructor String") { }
فرض کنید این عبارت در کلاس OutPutClass در مثال 7-1 قرار داشت . این سازنده پیش فرض به یک تخصیص دهنده همراه شده است ":" . ابتدای تخصیص دهنده را مشخص می نما ید، و به دنبال آن کلمه کلیدی this آمده است . کلمه کلیدی this به شیء کنونی اشاره مینماید . استفاده از این کلمه، فراخوانی به سازنده شیء کنونی که در آن تعریف شده است، ایجاد میکند . بعد از
کلمه کلیدی this لیست پارامترها قرار می گیرد که در اینجا یک رشته است . عملی که تخصیص دهنده فوق انجام می دهد، باعث می شود تا سازنده OutPutClass رشته ای را بعنوان آرگومان دریافت نمای د . استفاده از تخصیص دهنده ها تضمین می نمایند که فیلدهای کلاس شما در هنگام ایجاد نمونه ای جدید مقدار دهی می شوند .
 
مثال فوق نشان داد که چگونه یک کلاس می تواند سازنده های متفاوتی داشته باش د . سازنده ای که فراخوانی می شود، به تعداد و نوع آرگومانهایش وابسته است .
 
در زبان C# ، اعضای کلاسها دو نوع می باشند : اعضای نمونه و استاتیک . اعضای نمونه کلاس متعلق به رخداد خاصی از کلاس هستند . هربار که شی ای از کلاسی خاص ایجاد می کنید، در حقیقت نمونه جدیدی از آن کلاس ایجاد کرده اید . متد Main() در کلاس ExampleClass نمونه جد یدی از OutPutClass را تحت نام outCl ایجاد می نماید . می توان نمونه های متفاوتی از کلاس OutPutClass را با نامهای مختلف ایجاد نمود . هر یک از این نمونه های مجزا بوده و به تنهایی عمل می کنند . به عنوان مثال اگر دو نمونه از کلاس OutPutClass همانند زیر ایجاد نمایید :
OutputClass oc1 = new OutputClass("OutputClass1"); OutputClass oc2 = new OutputClass("OutputClass2");
با این اعلان، شما دو نمونه از کلاس OutPutClass را ایجاد کردهاید که یک از آنها دارای فیلد myString و متد
printString() هستند و این فیلدها و متدها کام لاً از یکدیگر مجزا می باشند . به بیان دیگر درصورتیکه عضوی از کلاس استاتیک
 
www.IrAnPRoje.com
باشد از طریق ساختار نوشتاری . قابل دسترس خواهد بود . در این مثال نمونه ها oc1 و oc2 هستند . فرض کنید کلاس OutPutClass دارای متد استاتیک زیر باشد :
public static void staticPrinter()
{
Console.WriteLine("There is only one of me.");
}
این متد را از درون متد Main() به صورت زیر می توانید فراخوانی نمایید :
OutputClass.staticPrinter();
اعضای استاتیک یک کلاس تنها از طریق نام آن کلاس قابل دسترس می باشند و نه از طریق نام نمونه ایجاد شده از روی کلاس . بدین ترتیب برای فراخوانی اعضای استاتیک یک کلاس نیازی به ایجاد نمونه از روی آن کلاس نم یباشد . همچنین تنها یک کپی از
عضو استاتیک کلاس، در طول برنامه موجود می باشد . یک مورد استفاده مناسب از اعضای استاتیک در مواردی است ک ه تنها یک عمل باید انجام گیرد و در انجام این عمل هیچ حالت میانی وجود نداشته باشد، مانند محاسبات ریاضی . در حقیقت، .Net Framework BCL خود دارای کلاس Math میباشد که از اعضای استاتیک بهر ه میبرد .
 
نوع دیگر سازنده ها، سازنده های استاتیک هستند . از سازنده های استاتیک جهت مقدار دهی فیلدهای استاتیک یک کلاس استفاده می شود . برای اعلان یک سازنده استاتیک تنها کافیست که از کلمه کلیدی static در جلوی نام سازنده استفاده نمایید . سازنده
استاتیک قبل از ایجاد نمونه جدیدی از کلاس، قبل از فراخوانی عضو استاتیک و قبل از فراخوانی سازنده استاتیک کلاس مشتق شده، فراخوانی می گردد . این سازند ه ها تنها یکبار فراخوانی میشوند .
 
OutPutClass همچنین دارای یک تخری ب کننده (Destructor) است . تخریب کننده ها شبیه به سازنده ها هستند، با این
تفاوت که در جلوی خود علامت "~" را دارا می باشند . هیچ پار امتری دریافت نکرده و هیچ مقداری باز نمی گردانند . از تخریب کننده ها می توان در هر نقطه از برنامه که نیاز به آزادسازی منابع سیستم که در اختیار کلاس یا برنامه است، استفاده نمود . تخریب کنند ه ها معمًولا زمانی فراخوانی می شوند که Garbage Collector زبان C# تصمیم به حذف شیء مورد استفاده برنامه از حافظه و آزادسازی منابع سیستم، گرفته باش د Garbage Collector) . یا GC ، یکی از امکانات .Net Framework مخصوص زبان C# است که سیستم بصورت اتوماتیک اقدام به آزادسازی حافظه و باز گرداندن منابع بلا استفاده به سیستم
می نماید . فراخوانی GC بصورت خودکار رخ می دهد مگر برنام ه نویس بصورت صریح از طریق تخریب کنند ه ها آنرا فراخوانی نماید . در مباحث پیشرفته تری که در آینده مطرح می کنیم خواهید دید که در چه مواقعی نیاز به فراخوانی تخریب کننده ها بصورت شخصی دارید (.
 
تا کنون، تنها اعضای کلاس که با آنها سر و کار داشتهاید، متدها، فیلدها، سازند ه ها و تخر یبکنند ه ها بوده اند در زیر لیست کاملی از انواعی را که می توانید در کلاس از آنها استفاده نمایید آورده شده است : Constructors • Destructors • Fields • Methods • Properties • Indexers • Delegates • Events •
Nested Classes •
 
www.IrAnPRoje.com
مواردی که در این درس با آنها آشنا نشدید، حتماً در د رسهای آینده مورد بررسی قرار خواهند گرفت .
 
خلاصه
در این درس نحوه اعلان سازند ه های استاتیک و نمونه را فرا گرفتید و با نحوه مقداردهی به فیلدها آشنا شدید . زمانیکه نیاز به ایجاد
نمونه از روی شیء نباشد از اعضای استاتیک کلاس استفاده می کنیم . با استفاده از تخریب کننده ها می توانید منابع بلا استفاده را به سیستم باز گردانید .
Copyright © 2014 icbc.ir