ITSI.IR – در دروس قبلی تمام متغیر های برنامه را در متد Main اعلان کردیم . متغیر های اعلان شده در بدنه تعریف یک متد ، به نام متغیر های محلی ( local Variables ) شناخته می شوند و فقط می توانند در آن متد بکار گرفته شوند . زمانیکه متد به کار خود پایان می دهد ، مقادیر متغیر های محلی از بین می رود . از دروس گذشته به یاد بیاورید که یک شی دارای صفاتی است که آنها را با خود به همراه دارد و در برنامه از آنها استفاده می کند . چنین صفاتی در کل طول عمر یک شی وجود خواهند داشت .
صفات به عنوان متغیر هایی در اعلان کلاس ارائه می شوند . چنین متغیر هایی ، فیلد نامیده می شوند و در درون اعلان کلاس تعریف می شونداما در خارج از بدنه اعلان متد کلاس جای می گیرند . زمانیکه هر شی از یک کلاس کپی صفت متعلق بخود نگهداری می کند .فیلدی که ارائه کننده صفت است ، به عنوان یک متغیر نمونه شناخته می شود ، هر شی ( نمونه ) از کلاس دارای یک نمونه مجزا از متغیر است .
معمولا یک کلاس دارای یک یا چندین خصیصه است که در دستکاری صفات متعلق به یک شی خاص از یک کلاس دست دارند .
حال می خواهیم کلاس GradeBook با یک متغیر نمونه و یک خصیصه را مورد بررسی قرار دهیم.
در ابتدا کلاس GradeBook را مورد بررسی قرار می دهیم :

کلاس GradeBook در این برنامه اقدام به نگهداری نام دوره به صورت یک متغیر نمونه می کند . همچنین در این کلاس اینبار متد DisplayMessage دارای یک خصیصه به نام CourseName می باشد

از خصوصیات برای نگهداری صفت یک شی استفاده می شود .
خصیصه CourseName می تواند برای ذخیره نام دوره و در یک GradeBook بکار گرفته شود ( در متغیر نمونه coursename ) یا نام دوره را بازیابی کند ( از متغیر نمونه courseName ) .
اعلان یک متغیر نمونه در داخل کلاس ولی در خارج از بدنه متد اعلان می شود . هر نمونه ( یعنی شی ) از کلاس GradeBook حاوی یک کپی از متغیر نمونه courseName خود است چراکه هر شی ارائه کننده GradeBook متعلق به یک دوره متفاوت است .
نکته : تمام متد ها و خصوصیات کلاس GradeBook می توانند به صورت مستقیم متغیر نمونه courseName خود را دستکاری کنند .

تصریح کننده دسترسی Public و Private

اکثر اعلان متغیر های نمونه بعد از تصریح کننده دسترسی Private ظاهر می شوند . متغیر ها ، خصوصیات یا متد های اعلان شده پس از Private فقط در متد ها و خصوصیات کلاسی که در آن اعلان شده اند ، در دسترس خواهند بود .
پس متغیر courseName می تواند فقط در خصیصه CourseName و متد DisplayMessage از کلاس GradeBook بکار گرفته می شود .
کپسوله کردن یا پنهان سازی اطلاعات : اعلان متغیر های نمونه با تصریح کننده دسترسی Private را گویند . وقتی که برنامه یک شی از کلاس GradeBook ایجاد میکند ( نمونه سازی ) متغیر نمونه courseName در سی کپسوله ( پنهان ) می شود و فقط می تواند توسط متد ها و خصوصیان آن کلاس در درسترس قرار گیرد .

خصوصیات در C# بهترین راه برای دستکاری متغیر های نمونه یک کلاس هستند که با استفاده از get می توان مقدار یک متغیر را به دست آورد و به استفاده از set می توان آن را تغییر داد .
خصیصه ها به این صورت تعریف می شوند که در ابتدا یک تصریح کننده دسترسی public قرار داده سپس نوع خصیصه و در آخر هم نام آن را قرار می دهیم :

اعلان یک خصیصه می تواند حاوی یک کمک کننده get ، کمک کننده set و یا هر دو آن ها باشد . در این مثال کمک کننده get امکان خواندن مقدار متغیر نمونه courseName را می دهد و کمک کننده Set امکان اصلاح متغیر نمونه courseName را فراهم می کند .
هنگامی که یک خصیصه را تعریف کردید می توانید به راحتی همانند متغیر ها به آن دسترسی داشته باشید.

کمک کننده های Get و Set

در این مثال کمک کننده get با شناسه get شروع شده است و بدنه آن با برکت های محاط شده است .بدنه کمک کننده حاوی یک عبارت return میباشد که متشکل از کلمه ی کلیدی return و بدنبال آن یک رابطه میباشد که مقدار رابطه به کد کلاینت برگشت داده می شود . برای مثال در این جا مقدار courseName زمانیکه خصیصه CourseName مورد مراجعه قرار می گیرد برگشت داده خواهد شد .

کلاینت به صورت مستقیم نمی تواند به متغیر نمونه corseName دسترسی داشته باشد زیرا به صورت private تعریف شده است .
کمک کننده Set نیز با شناسه set تعریف شده است و با براکت ها محاط شده است . هنگامی که خصیصه CourseName در یک عبارت تخصیصی ظاهر می شود

عبارت فوق مبادرت به ارسال اتوماتیک متن به پارامتری به نما value کرده و کمک کننده Set اجرا می شود . دقت کنید که value به صورت ضمنی در کمک کننده set اعلان و مقدار دهی می شود .

اعلان یک متغیر محلی به نام value در این بدنه منجر به خطای کامپایل خواهد شد .
بعد از این که مقدار value در courseName ذخیره شد دقت کنید که هیچ مقداری برگشت داده نخواهد شد .
حال که توضیحات کامل شد می خواهید از خصیصه CourseName در متد DisplayMessage استفاده کنیم .

دقت کنید در ابتدا مقدار CourseName را چاپ کرده ایم و مشاهده خواهید کرد که یک متن خالی برای ما چاپ می کند و در ادامه متن مورد نظر خود را به آن داده ایم و به خوبی بدون اینکه به صورت مستقیم به courseName مراجعه کنیم با استفاده از خصیصه CourseName مقداردهی و سپس چاپ کرده ایم .

دانلود فایل آموزش

پسورد : itsi.ir