آموزش #C-قسمت ششم

 

سلام با آموزش برنامه نویسی سی شارپ قسمت ششم در خدمت شما عزیزان هستیم, در قسمت قبلی با کلاسها ,خواص Properties ,کار با تابع سازنده Constructor و تابع تخریب کننده یا Destructor در زبان C# آشنا شدیم. ادامه آموزش سی شارپ :

آموزش کار با روش Method overloading در C# :

بسیاری از زبان های برنامه نویسی از تکنیک ای به نام پارامترهای پیش فرض /اختیاری (defult/optional parameters) پشتیبانی می کنند. این تکنیک به برنامه امکان می دهد تا با تعیین مقدار پیش فرض برای یک یا چند پارامتر تابع، آن ها را در هنگام مقدار دهی اختیار کند. این روش برای افزودن انعطاف پذیری به کد برنامه، بسیار کاربرد دارد.
برای مثال، می خواهید قابلیت کارکرد را به تابع ای که یک یا چند پارامتر ورودی دارد، بدهید. در اینگونه موارد، به دلیل عدم ارسال تعداد مورد نیاز پارامتر در هنگام فراخوانی، ممکن است کد شما درست اجرا نشود. برای حل این مسئله، می توانید از امکان جدید تعیین پارامترهای اختیاری یا optional استفاده کنید. در این روش، شما برای برخی پارامترها یک مقدار پیش فرضی یا default تعیین کرده که حتی اگر در هنگام فراخوانی تابع، مقداری برای آن ارسال نشد، کد دچار مشکل نشود.
پارامترهای پیش فرض (default parameters) در زبان C# 4.0 معرفی شدند، اما تا قبل از آن برنامه نویسان از تکنیکی تقریبا مشابه به نام method overloading استفاده می کردند. در این حالت، برنامه نویس چندین تابع هم نام ولی با مجموعه پارامترهای مختلف را تعریف می کند. برای مثال متد اول یک پارامتر و متد دوم دو پارامتر دریافت می کند. یک مثال مناسب برای این روش، تابع Substring از کلاس String Class است. به صورت زیر :

string Substring (int startIndex)

string Substring (int startIndex, int length)

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

class SillyMath

{

public static int Plus(int number1, int number2)

{

return Plus(number1, number2, 0);

}

public static int Plus(int number1, int number2, int number3)

{

return number1 + number2 + number3;

}

}

در کد مثال فوق، تابع Plus را با دو حالت تعریف کرده ایم. در حالت اول، تابع دو پارامتر را جهت جمع کردن 2 عدد دریافت می کند، درحالی که حالت دوم سه پارامتر دارد. درواقع کار اصلی را نسخه 3 پارامتری تابع انجام می دهد. اگر بخواهیم دو عدد را جمع کنیم، خیلی ساده، تابع با حالت 3 پارامتری را فراخوانی کرده و عدد 0 را به پارامتر سوم پاس می دهیم. تا به عنوان مقدار پیش فرض برای آن استفاده شود. کد مثال فوق، منظور ما در بخش قبل را نشان می دهد.
حال اگر بخواهید تا 4 عدد را با هم جمع کنید، می توانید یک نسخه 4 پارامتری دیگر را نیز به برنامه اضافه کنید. به صورت کد زیر :

class SillyMath

{

public static int Plus(int number1, int number2)

{

return Plus(number1, number2, 0);

}

 

public static int Plus(int number1, int number2, int number3)

{

return Plus(number1, number2, number3, 0);

}

 

public static int Plus(int number1, int number2, int number3, int number4)

{

return number1 + number2 + number3 + number4;

}

}

مثال فوق خیلی ساده تکنیک method overloading را در C# نشان داده و نحوه ارتباط دادن توابع با هم را بیان می کند.


 

آموزش سطح دسترسی(Access Modifier) در C#

با تعیین بازه دسترسی یک کلاس، متد، متغیر یا ویژگی در C#، روش و امکان دسترسی به آن عنصر و دیده شدن در سطح کل برنامه را تعیین می کند. به این امکان در اصطلاح سطح دسترسی یا access modifier می گویند.
رایج ترین حالت ها برای access modifier در C#، خصوصی Private و عمومی Public است، اما حالت های دیگری نیز وجود دارد که در لیست زیر به معرفی آن ها پرداخته ایم. برخی از موارد زیر ممکن است تاکنون مورد استفاده شما قرار گرفته باشد، اما دانستن آن ها ضروری است.

  • عمومی Public : در این حالت عنصر به صورت عمومی تعریف شده و از هر جای برنامه توسط هر عنصر دیگر مثل سایر کلاس ها و توابع قابل دسترسی است. این حالت دارای حداقل محدودیت برای عنصر بوده و Enums و Interface ها به صورت پیش فرض public هستند.
  • محافظت شده یا Protected : در این حالت عنصر فقط توسط عوامل کلاس خود یا کلاس هایی که از کلاس آن به ارث رفته اند، قابل دسترس است.
  • درونی یا internal : در این حالت عنصر فقط درون پروژه جاری قابل دسترسی است.
  • درونی محافظت شده یا Protected internal : این حالت، همانند حالت internal است با این تفاوت که عناصر موجود در کلاس هایی که از کلاس عنصر به ارث رفته اند، حتی اگر در پروژه های دیگر باشند قابلیت دسترسی به آن را دارند.
  • خصوصی یا Private : در این حالت فقط اعضای همان کلاس امکان دسترسی به آیتم مورد نظر را دارند. این حالت دارای بیشترین میزان محدودیت بوده و Class ها و Struct ها به صورت پیش فرض خصوصی private هستند.

برای مثال، اگر شما دارای دو کلاس به نام های Class 1 و Class 2 باشید، اعضای private مربوط به Class 1 فقط درون خود آن کلاس قابل دسترس هستند. شما نمی توانید یک نمونه از اشیای Class 1 را در Class 2 ساخته و امکان دسترسی به آن ها را داشته باشید.
اما اگر Class 2 از Class 1 به ارث رفته یاشد (فرزند آن باشد) که در اصطلاح می گوییم inherit شده، فقط اعضای غیر private کلاس 1 در کلاس 2 قابل دسترس هستند.

 

پایان قسمت ششم آموزش سی شارپ

قسمت اول آموزش #C