آموزش پاسکال شی‌گرا

سطوح دسترسی کلاس در پاسکال شی‌گرا

سطوح دسترسی کلاس در پاسکال شی‌گرا

کلاس ها میتوانند شامل چهار سطح دسترسی باشند

  • Private
  • Public
  • Protected
  • Published

سطوح دسترسی گلاس برای کنترل نحوه استفاده کلاس مورد استفاده قرار می گیرند
برای مثال اگر شما یک برنامه نویس منفرد باشید
ممکن است خود سازنده کلاس و کاربر آن باشید
اما در محیط برنامه نویسی سیستمی ممکن است
یک نفر سازنده کلاس و دیگران کاربران یا به قولی استفاده کننده‌گان کلاس باشند

در حالت کلی این که کاربران کلاس نباید به جزییات پیاده سازی کلاس دسترسی داشته باشند
اما باید بتوانند از کلاس استفاده کنند

نکــــــته
سطوح دسترسی یک کلاس را میتوان با بخش‌های Interface  و  Implemention  یک یونیت مقایسه کرد
در حقیقت با استفاده از سطوح دسترسی میتوان دسترسی پذیری عناصر یک کلاس را طبقه بندی کرد

هر کلاس شامل یک بخش Public است که دنیای خارج کلاس میتوانند به آن دسترسی داشته باشند
هم چنین هر کلاس شامل یک بخش Private است که پیاده سازی داخلی کلاس را شامل میشود
و دنیای خارج از کلاس به آن دسترسی ندارد
در حقیقت مزیت کلاس در این است که میتوان مواردی را که برای کاربران کلاس موردنیاز نیستند از دید آن ها پنهان کرد

نکــــــته
به پنهان کردن پیاده سازی داخلی کلاس از دید کاربران کلاس Data Abstraction گفته میشود

با استفاده از Data Abstraction میتوانید کاربران کلاس را از دانستن مواردی که برای ان ها ضرورتی ندارد
منع کنید همچنین میتوانید بعضی موارد را از دستکاری کاربران مصون بدارید
برای مثال زمانی که شامل اتومبیل خود را روشن میکنید
آیا نیازی هست که تمامی جزئیات عملکرد اتومبیل (نظیر جزییات عملکرد سیستیم کولر ) را بدانید ؟

مطمئنا پاسخ شما منفی است
شما فقط باید بدانید که چگونه میتوان اتومبیل را حرکت داده و از امکانات  آن (نظیر کولر ..) استفاده کرد
با توجه به این امر پدال‌ها دسته دنده کیلومترشمار و … و رابط عمومی میان راننده و اتومبیل هستند
و راننده میداند که از کدام جز برای دستکاری اتومیبل در راستای هدف مورد نظر خود استفاده کند

بر خلاف مواردی که ذکر شد موتور چرخ دنده ها و سیستم الکترونیکی اتومبیل از دید راننده پنهان هستند
و نیازی نیست که راننده به طور دایمی از تمامی جزییات اتومبیل با خبر باشد
با توجه به مواردی که ذکر شد  یک کلاس پیاده سازی داخلی خود را به صورت محرمانه نگهداری میکند
و موارد محرمانه از دید کاربر پنهان هستند اما رابط کاربری خود را صورت عمومی و آشکار عرضه میکند
هم چنین یک کلاس شامل سطح دسترسی Protected نیز می باشد
یک عضو Protected همانند یک عضو Private از دید کاربران کلاس پنهان خواهد بود

اما برای کلاس هایی که از این کلاس منشعب میشوند قابل دسترسی خواهد بود
برای مثال فرض کنید که اتومبیلی وجود دارد و میخواهید اتومبیل با بدنه جدید را به وجود اورید
مطمئنا نیاز است تا اطلاعات بدنه اتومبیل در اختیارشما قرا گیرد

توجه داشته باشید که نحوه عملکرد موتور هم از دید شما پنهان است
به این دلیل که شما برای تغییر دادن بدنه اتومبیل نیازی به دانستن نحوه عملکرد موتور ندارید
با توجه به این امر بسیاری از موارد عمومی به صورت دست نخورده باقی مانده
و فقط شما موارد عمومی جدیدی را به اتومبیل اضافه می کنید
باید بدانید که اکنون با وراثت یا Inheritance که یکی از مهم ترین موارد برنامه نویسی شی‌گراست آشنا شدید
تعجب کرده‌اید؟! بهتر است زیاد متعجب نباشید زیرا وراثت را به طور کامل به صورت جدا گانه تشریح خواهم کرد

 

نکــــــته
به طور خلاصه این که بخش Protected یک کلاس برای کسانی که میخواهند
کلاس را گسترش بدهند مورد استفاده قرار خواهد گرفت

ضمنا یک کلاس میتواند شامل سطح دسترسی Published نیز باشد
سطح دسترسی Published برای نوشتن اجزا مورد نیاز است
در حقیقت مواردی که به صورت Published  معرفی میشوند
در هنگام طراحی برنامه از طریق بازرس اشیا قابل دسترسی خواهند بود

برای مثال به کلاس زیر توجه کنید

Var
private
 Started : Boolean;
 Speed   : Byte;
 Procedure StartEngine;
 Procedure StopEngine;
public
 Procedure Start;
 Procedure ShutDown;
 function GetSpeed : Byte;
end;

همان طور که مشاهده میکنید کلاس فوق شامل دو سطح دسترسی است
شما ملزوم نیستید که در یک کلاس از تمامی سطوح دسترسی استفاده کنید
برای مثال در کلاس فوق از سطوح Protected و Published استفاده نشده است
اما توجه داشته باشید که معمولا حداقل از بخش های Private  و Public استفاده خواهید کرد

اگر بخواهید اطلاعات خود را در ارتباط با سطوح دسترسی به طور خلاصه در اختیار داشته باشید
باید بدانید که وقتی یک عضو جدید (فیلد و متد و ….) را تعریف میکنید
شامل یک نمایانی (Visibility) خواهد بود که با یکی از کلمات کلیدی زیر نشان داده میشود

Private,Protetcted,Published

نمایانی عضو مشخص کننده دسترسی پذیری آن برای اشیا و یونیت های دیگر است

  • یک عضو Private فقط از درون یونیتی که در آن تعریف شده
    قابل دسترس است
    عضو Private اغلب در یک کلاس برای تعریف متدها و خواص دیگر به کار می‌رود
  • یک عضو Protected از درون یونیتی که کلاس آن عضو در آن تعریف شده قابل دسترس است
    و هم چنین از درون کلاس های منشعب شده
    و از آن کلاس بدون توجه به یونیتی که کلاس منشعب شده در آن قرار دارد نیز قابل دسترسی است
  • یک عضو Public از هر جایی که شی حامل آن قابل دسترس باشد در دسترس قرا میگیرد
    به این معنی که عضو Public از درون یونیتیکه کلاس آن عضو در آن تعریف شده است
    یا هر یونیتی که از آن یونیت ساتفاده مرده قابل دسترس خواهد بود
  • یک عضو Published نمایانی شبیه عضو Public خواهد داشت
    با این تفاوت که کامپایلر دلفی در زمان اجرا برای عضو Published  اطلاعاتی از نوع آن عضو خواهد ساخت
    هم چنین عضوی که دارای نمایانی Published باشد
    در زمان طراحی برنامه درون پنجره بازرس اشیا ظاهر خواهد شد
روی لینک کوتاه کلیک کنید

https://wikidelphi.com/b/3Rv/
5/5 - (2 امتیاز)

نوشته های مشابه

اشتراک در
اطلاع از
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
دکمه بازگشت به بالا