آموزش: آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت سیزدهم - آشنایی با فیلدها و رفتارها
سه شنبه, ۲۹ فروردين ۱۳۹۶، ۰۶:۴۵ ب.ظ
در قسمت قبلی آموزش زبان سی شارپ با مفاهیمی مانند کلاس، شئ، فضای نام و
دستور using آشنا شدیم. در این قسمت ابتدا شیوه تعریف کلاس و شئ را مروری
کوتاه کرده و سپس به بررسی شیوه تعریف فیلد و رفتار در کلاس خواهیم پرداخت.
با کلاس Person شروع می کنیم که در قسمت قبل کلاسی با نام Person ایجاد کردیم. شیوه تعریف این کلاس به صورت زیر بود:
public class Person { }
بعد از ایجاد کلاس باید از روی آن یک شئ یا اصطلاحاً Instance یا نمونه بسازیم:
Person person = new Person();
دقت کنید، می توانیم از کلمه کلیدی var که در قسمت های ابتدایی این آموزش با آن آشنا شدیم استفاده کنیم:
var person = new Person();
کلمه کلیدی var را می توان هنگام ایجاد متغیرها و ایجاد شئ از روی کلاس ها استفاده کرد. ما تا اینجا تنها یک کلاس تعریف کردیم. اما این کلاس هیچ خصوصیت یا رفتاری ندارد. زمانی که کلاسی تعریف می کنید باید اعضا یا Member های آن کلاس را مشخص کنید. هر کلاس به طور کلی می تواند شامل موارد زیر باشد:
- Field
- Property
- Method
- Indexer
- Event
- Nested Type
آشنایی با Field ها
در ابتدا به بررسی مفهوم Field پرداخته و شیوه دسترسی به اعضای کلاس را خواهیم گفت. فیلد متغیری است که داخل یک کلاس تعریف شده و امکان ذخیره مقداری را به ما می دهد. این متغیر می تواند از نوع داده های اولیه دات نت یا کلاسی باشد که تعریف کرده ایم. شیوه تعریف Field دقیقاً مشابه تعریف متغیر می باشد. با این تفاوت که ما زمان تعریف یک Field امکان استفاده از کلمه کلیدی var را نداریم. برای کلاس Person دو فیلد با نام های FirstName و LastName تعریف می کنیم:
public class Person { public string FirstName; public string LastName; }
دقت کنید که قبل از مشخص کردن نوع داده فیلد، سطح دسترسی آن مشخص شده است. در اینجا ما فیلدها را از نوع public تعریف کردیم. یعنی این فیلدها خارج از scope کلاس و بیرون از پروژه نیز قابل دسترس میی باشند. حال که فیلدهای مورد نظر را داخل کلاس تعریف کردیم، می توانیم بعد از ایجاد شئ از کلاس، به این فیلدها دسترسی داشته باشیم. برای دسترسی به فیلدها بعد از نوشتن نام شئ از کاراکتر . استفاده می کنیم تا لیستی از اعضای آن کلاس برای نمایش داده شود. تصویر زیر مربوط به کد ما در متد Main است:
کد Main را به صورت زیر تغییر دهید:
var person = new Person(); person.FirstName = "Hossein"; person.LastName = "Ahmadi"; Console.WriteLine(person.Firstname + " " + LastName);
کد بالا از سه بخش نشکیل شده است.
- ایجاد یک شئ از روی کلاس Person
- مقدار دهی فیلد ها
- استفاده از فیلدها برای نمایش خروجی
در همه شرایط، زمانی که میخواهیم به یک عضو کلاس دسترسی داشته باشیم، باید از کاراکتر . استفاده کنیم، برای مثال در فیلدهای بالا، چه زمانی که قصد مقدار دهی فیلد را داریم، چه زمانی که می خواهیم مقداری از فیلد را بخوانیم.
بوسیله فیلدها می توان خصوصیات یک کلاس را تعریف کرد، در مورد خصوصیات در قسمت قبل توضیحاتی دادیم. مورد بعدی تعریف رفتار برای کلاس می باشد. رفتارها همان متدها در کلاس ها هستند. شیوه تعریف متد برای کلاس، تفاوتی با تعریفاتی که در قسمت قبل از متد گفتیم ندارد، به جز اینکه متدهایی که داخل یک کلاس تعریف می شوند static نیستند. می توانیم رفتارهای یک کلاس را static تعریف کنیم، مانند کاری در کلاس Program در قسمت های قبلی می کردیم، اما در حال حاضر، متدها به صورت static تعریف نمی شوند. با اعضای static کلاس ها در قسمت های بعد به صورت کامل آشنا خواهیم شد، اما به صورت خلاصه تفاوت اعضای static و غیر static در این است که برای دسترسی به اعضای static نیازی به ایجاد شئ از روی کلاس نیست، مانند کلاس Console که برای استفاده از اعضای آن مانند WriteLine شئ ای از کلاس Console ایجاد نمی کنیم، اما برای استفاده از اعضای غیر static باید حتماً از روی کلاس یک شئ ایجاد شود.
تعریف رفتار یا Method برای کلاس
در ادامه می خواهیم برای کلاس Person یک رفتار تعریف کنیم. موجودیت Person چه کارهایی می تواند انجام دهد؟ برای مثال یک شخص می تواند صحبت کند، پس رفتاری با نام Speak تعریف می کنیم و در آن یک پیغام مناسب در خروجی چاپ می کنیم:
public class Person { public string FirstName; public string LastName; public void Speak() { Console.WriteLine("Hello, my name is " + FirstName + " " + LastName + "."); } }
در کد بالا، متد یا رفتار Speak پیغامی را به همراه نام و نام خانوداگی مشخص شده توسط فیلدها در خروجی نمایش می دهد. دقت کنید، داخل کلاس هم ما می توانیم از اعضای یک کلاس استفاده کنیم. خیلی وقت ها رفتارهای یک کلاس وابسته به مقادیر خصوصیات یک کلاس هستند. برای مثال شما یک ماشین را در نظر بگیرید، خصوصیتی داریم به نام دنده ماشین، یک خصوصیت دیگر به نام دور موتور و رفتاری داریم به نام حرکت. رفتار حرکت بر اساس دنده و دور موتور سرعت خواهد گرفت. حال کد Main را به صورت زیر تغییر می دهیم:
var person = new Person(); person.FirstName = "Hossein"; person.LastName = "Ahmadi"; person.Speak(); Console.ReadLine();
مثال عملی: کلاس Calculator
در ادامه یک مثال واقعی تر را بررسی می کنیم. کلاسی می نویسیم با نام Calculator که دو فیلد با نام های FirstNumber و SecondNumber دارد. همچنین چهار متد با نام های Sum و Substract و Multiply و Divide تعریف می کنیم که بر اساس مقادیر FirstNumber و SecondNumber، در خروجی حاصل جمع، تفریق، ضرب یا تقسیم را نمایش دهد. کلاس Calculator را به صورت زیر تعریف کنید:
public class Calculator { public int FirstNumber; public int SecondNumber; public int Sum() { return FirstNumber + SecondNumber; } public int Substract() { return FirstNumber - SecondNumber; } public int Multiply() { return FirstNumber * SecondNumber; } public int Divide() { return FirstNumber / SecondNumber; } }
دقت کنید، رفتارهای کلاس همگی مقدار بازگشتی از int دارند. در ادامه متد Main را به صورت زیر تغییر دهید:
var calculator = new Calculator(); calculator.FirstNumber = 12; calculator.SecondNumber = 17; Console.WriteLine("Sum: " + calculator.Sum()); Console.WriteLine("Substract: " + calculator.Substract()); Console.WriteLine("Multiply: " + calculator.Multiply()); Console.WriteLine("Divide: " + calculator.Divide()); Console.ReadLine();
کد بالا، خروجی حاصل جمع، تفریق، ضرب و تقسیم اعداد 12 و 17 را در خروجی چاپ می کند. تا اینجا با مبحث رفتارها و خصوصیات در کلاس ها آشنا شدیم. در بخش بعدی در باره شیوه کنترل دسترسی به مقادیر یک خصوصیات در کلاس ها یعنی مبحث Property ها صحبت خواهیم کرد.
منبعprogramming.itpro.ir
- ۹۶/۰۱/۲۹