آشنايي با كلاسها در C#

– آشناييبا كلاسها در C#

در اين درس با كلاسها در زبان C# آشنا خواهيد شد. اهدافاين درس به شرح زير مي‌باشند :
 
پياده‌سازي سازنده‌ها (Constructors)ü
üدرك تفاوت بين اعضاي نمونه (Instance) و استاتيك (Static)
 
آشنايي با تخريبüكننده‌ها (Destructors)
 
آشنايي با اعضاي كلاسهاü



يك كلاس با استفاده از كلمه كليدي class كه بدنبال آن نام كلاسآمده باشد، اعلان مي‌گردد و اعضاي اين كلاس درون {} اعلان مي‌گردند. هر كلاس دارايسازنده‌اي مي‌باشد كه در هربار ايجاد نمونه‌اي جديد از آن كلاس، بصورت خودكارفراخواني مي‌گردد. هدف از سازنده، تخصيص‌دهي اعضاي كلاس در زمان ايجاد نمونه‌ايجديد از كلاس است. سازنده‌ها داراي مقادير بازگشتي نبوده و همواره نامي مشابه نامكلاس دارند. مثال 1-7 نمونه‌اي از يك كلاس را نشان مي‌دهد. <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

كد:

// 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();
}
}

در مثال 1-7 دو كلاس ديده مي‌شوند. كلاس بالايي، كلاس OutPutClass، داراي سازنده، متد نمونه و يك تخريب كننده است. همچنين اين كلاس دارايفيلدي با نام myString است. توجه نماييد كه چگونه سازنده اين كلاس اعضاي آنراتخصيص‌دهي(مقداردهي) مي‌نمايد. در اين مثال، سازنده كلاس رشته‌ ورودي (inputString) را بعنوان آرگومان خود دريافت مي‌نمايد. سپس اين مقدار داخل فيلد كلاس يعني myString كپي مي‌گردد.

همانطور كه در ExampleClass مشاهده مي‌نماييد،استفاده از سازنده الزامي نمي‌باشد. در اين مورد سازنده پيش فرض ايجاد مي‌گردد. سازنده پيش فرض، سازنده‌اي بدون هيچ نوع آرگوماني است. البته شايان ذكر است كهسازنده‌هاييي بدون آرگومان هميشه مورد استفاده نبوده و مفيد نيستند. جهت كارآمدكردن بيشتر سازنده‌هاي بدون آرگومان بهتر است آنها را با تخصيص‌دهنده (Initializers) پياده‌سازي نماييد. به مثال زير در اين زمينه توجه نماييد :
public OutputClass() : this("Default Constructor String") { }
فرض كنيداين عبارت در كلاس OutPutClass در مثال 1-7 قرار داشت. اين سازنده پيش فرض به يكتخصيص‌دهنده همراه شده است. ":" ابتداي تخصيص‌دهنده را مشخص ‌مي‌نما‌يد، و به دنبالآن كلمه كليدي this آمده است. كلمه كليدي this به شيء كنوني اشاره مي‌نمايد. استفاده از اين كلمه، فراخواني به سازنده شيء كنوني كه در آن تعريف شده است، ايجادمي‌كند. بعد از كلمه كليدي this ليست پارامترها قرار مي‌گيرد كه در اينجا يك رشتهاست. عملي كه تخصيص‌دهنده فوق انجام مي‌دهد، باعث مي‌شود تا سازنده OutPutClass رشته‌اي را بعنوان آرگومان دريافت نمايد. استفاده از تخصيص‌دهنده‌ها تضمينمي‌نمايند كه فيلدهاي كلاس شما در هنگام ايجاد نمونه‌اي جديد مقدار‌دهي مي‌شوند.

مثال فوق نشان داد كه چگونه يك كلاس مي‌تواند سازنده‌هاي متفاوتي داشتهباشد. سازنده‌اي كه فراخواني مي‌شود، به تعداد و نوع آرگومانهايش وابسته است.

در زبان C#، اعضاي كلاسها دو نوع مي‌باشند : اعضاي نمونه و استاتيك. اعضاينمونه كلاس متعلق به رخداد خاصي از كلاس هستند. هربار كه شي‌اي از كلاسي خاص ايجادمي‌كنيد، در حقيقت نمونه‌ جديدي از آن كلاس ايجاد كرده‌ايد. متد Main() در كلاس ExampleClass نمونه جديدي از 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 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
مواردي كه در اين درس باآنها آشنا نشديد، حتماً در درس‌هاي آينده مورد بررسي قرار خواهند گرفت.


مطالب مشابه :


ویژوال بیسیک در یک نگاه

پاسکال،ویژوال بیسیک،دلفی، سی، شارپ، Pascal ،vb6،delphi،C#،C برنامه نویسی سوکت در سی شارپ با




فیلتر کردن DataGridView با LinQ

آموزش برنامه نویسی VB6 , Delphi. Pascal , CPP , C برنامه نویسی سوکت در سی شارپ با استفاده از TCP/IP .




آشنايي با Namespace در زبان C#

آموزش برنامه نویسی VB6 , Delphi. Pascal , CPP , C برنامه نویسی سوکت در سی شارپ با استفاده از TCP/IP .




رخدادها و delegate ها در C#

آموزش برنامه نویسی VB6 , Delphi. Pascal , CPP , C برنامه نویسی سوکت در سی شارپ با استفاده از TCP/IP .




اجرای دستورات Linq از بیس string

آموزش برنامه نویسی VB6 , Delphi. Pascal , CPP , C برنامه نویسی سوکت در سی شارپ با استفاده از TCP/IP .




چاپ متن توسط شی پرينتر vb6

آموزش برنامه نویسی چاپ متن توسط شی پرينتر vb6 برنامه نویسی سوکت در سی شارپ با استفاده از




نواع شمارشي enum در C#

پاسکال،ویژوال بیسیک،دلفی، سی، شارپ، Pascal ،vb6،delphi،C#،C برنامه نویسی سوکت در سی شارپ با




آشنايي با كلاسها در C#

آموزش برنامه نویسی VB6 , Delphi. Pascal , CPP , C برنامه نویسی سوکت در سی شارپ با استفاده از TCP/IP .




برچسب :