فیلدهای دادهای در پاسکال شیگرا

فیلدهای دادهای در پاسکال شیگرا
به متغیرهایی که در تعریف کلاس مورد استفاده قرار میگرند
فیلدهای داده ای یا Data fields اطلاق میشود
در حقیقت فیلدهای دادهای متغیرهایی هستند که در حوزه دید کلاس قرار دارند
بهتر است بدانید که فیلدهای داده ای کلاس ها مشابه با فیلدهای داده ای رکوردها هستند
با این تفاوت که در کلاس میتوان با استفاده از سطوح دسترسی Private,Protected,Public دسترس پذیری فیلدها را کنترل کرد
بدون توجه به دسترسی پذیری فیلدهای تمامی داده ای درون تمام متدهای کلاس قابل دسترس خواهند بود
و دسترس پذیری فیلدها فقط برای خارج از کلاس اعمال میشود
برای مثال فیلدهای Private و Protected برای کلاس محرمانه هستند و از بیرون کلاس قابل دسترس نخواهند بود
هم چنین فیلدهای Public عمومی هستند و از بیرون کلاس نیز قابل دسترس خواهند بود
با توجه به این که درتعریف کلاس TMyRect هیچ فیلدی به صورت Public وجود ندارد
لذا درصورتی که از این کد استفاده کنید با خطای کامپالیر مواجه خواهید شد
Rect : = TMyRect.CreateVal(0, 0, 100, 100); Rect.Left := 20 // کامپایلر از این عبارت خطا می گیرد
در حقیقت کامپایلر با اعلام خطا به شما میگوید که فیلد Left به صورت Public معرفی نشده است
لذا شما نمیتوانید به آن دسترسی پیدا کنید
درصورتی که فیلد Left درون قسمت Public معرفی شود کد فوق بدون خطا اجرا خواهد شد
در زبان پاسکال شیگرا برای کنترل دسترس پذیر فیلدهای Private از خواص استفاده میشود
یک خاصیت یا Property میتواند ( خواندنی / نوشتنی ) فقط خواندنی یا فقط نوشتنی باشد
یک خاصیت میتواند شامل متد read باشد که درموقع خواندن خاصیت فراخوانی خواهد شد
هم چنین یک خاصیت میتواند شامل متد Write باشد که در موقع نوشتن خاصیت فراخوانی میشود
تعجب کرده اید ؟ ! تعجب نکنید با توجه به این که خواص به طور مستقیم به فیلدهای Private دسترسی دارند
لذا متدهای Read و Write در هنگام دسترسی به خواص فراخوانی خواهند شد
متد Write بسیار مهم است زیرا میتوانید از آن برای بررسی معتبر بودن و ورودی یا انجام هر عمل دیگری در هنگام مقداردهی خاصیت استفاده کنید
با استفاده از این روش فیلدهای Private هرگز به صورت مستقیم مورد دسترسی قرار نخواهند گرفت
و همیشه فقط از طرق خواص مورد دسترسی قرار خواهند گرفت
در رابطه با خواص Properties در پست های اینده توضیحات کاملی ارایه خواهد شد
نکـــــــــته |
---|
بعضی از برنامه نویسان OOP اعتقاد دارند که باید تمامی فیلدها را از طریق خواص در دسترس قرار داده و آن ها را Public نکنید در مقالب عده دیگری عقیده دارند که باید تمامی فیلدها را Public کرده در دسترس قرار دهید به اعتقادمن باید توجه به نوع فیلد یکی از دو روش را استفاده کنید برای مثال بعضی از فیلدها از خاسیت خاصی برخورداند که درچنین موارد باید دسترس پذیری آنها را کنترل کرد |
در صورتی که شما نمونه های از یک کلاس را به وجود آورید
هر نمونه داده ای خاص خود را خواهد داشت
برای مثال شما میتوانید به متغییر Left یکی از نمونه ها مقداری را تخصیص داده و به متغییر left نمونه دیگری مقدار متفاوتی را تخصیص دهید
Rect1.Left : =100; Rect2.Left :=0;
حال به کد زیر توجه کنید
Rect1 : =TMyRect.CreateVal(100, 100, 500, 500); Rect2 : =TMyRect.CreateVal(0, 0, 100, 100);
این کد باعث ایجاد دو نمونه ازکلاس TMyRect خواهد شد
با توجه به این که هر دو نمونه از لحاظ ساختاری یکسان هستند
اما درحافظه کاملا ازیکدیگر مجزا هستند و هرنمونه داده های خاص خود را دارد
برای مثال اولین نمونه میتواند فیلد Left با مقدار 100 را داشته باشد و دومین نمونه میتواند فیلد Left با مقدار 0 را داشته باشد