هنگام کار با اشیا and و سایر موارد یک کلاس ، دسترسی به ویژگی ها یکی از عملیات معمول یک برنامه نویس است. دستیابی به برخی از داده های ذخیره شده در اشیا با توجه به روش های امنیتی مورد استفاده در آنها دشوار است. بنابراین ، ویژگی هایی که توسط مشخص کننده های خصوصی و محافظت شده بسته می شوند ، فقط در یک روش متعلق به یک شی از همان کلاس یا یک کودک (برای محافظت شده) می توانند از یک نمونه کلاس خارج شوند.
دستورالعمل ها
مرحله 1
برای نمونه ای از کلاس که به ویژگی آن در برنامه خود نیاز دارید ، یک شی یا اشاره گر ایجاد کنید. ساختار استاندارد برای چنین عملیاتی CMyClass myObj1 است. گاهی اوقات ، برای مقداردهی اولیه یک شی ، باید پارامترهای خاصی را به سازنده کلاس منتقل کنید. در این حالت ، رکورد ایجاد شی ممکن است به این شکل باشد: CMyClass myObj1 (param1 ، param2 ، param3) ، جایی که CMyClass نام کلاس است ، myObj1 نام شی of ایجاد شده است ، و تمام پارامترهای درخواست شده توسط سازنده ذکر شده است. در داخل پرانتز. یک اشاره گر برای نمونه کلاس به صورت زیر ایجاد می شود: CMyClass * pObj1 = CMyClass جدید (param1 ، param2 ، param3).
گام 2
ساده ترین راه برای فراخوانی یک ویژگی ، مراجعه مستقیم به آن در هر کجای برنامه است. با این حال ، این فقط برای داده های باز توصیف شده در یک کلاس با اصلاح کننده عمومی امکان پذیر است. دسترسی مستقیم از طریق یک شی شبیه این است: myObj1.attr1 ، جایی که attr1 صفتی از این کلاس است. برای یک اشاره گر ، تماس به این صورت است: pObj1–> attr1.
مرحله 3
اگر صفتی که باید به آن مراجعه کنید وضعیت پنهان دارد و در یک کلاس با اصلاح کننده خصوصی توصیف می شود ، دسترسی به آن فقط از روشی متعلق به همان کلاس امکان پذیر است. روش یا عملکرد کلاس باید دارای وضعیت عمومی عمومی باشد. یک روش جدید به کلاس اضافه کنید ، جایی که پردازش ویژگی مورد نیاز را بنویسید. در این حالت ، بسته به مقدار اعمال خاصی که انجام می شود ، می توان پارامترها را به تابع منتقل کرد. این تابع همچنین می تواند داده ها را بازگرداند ، مانند محتوای یک ویژگی. کد برنامه C ++ که هر دو عملکرد را برای کار با یک ویژگی خصوصی پیاده سازی می کند: کلاس CMyClass {protection: int attr1؛ // ویژگی عمومی: void funcA1 (int param) {attr1 = param؛ } int funcA2 () {return attr1؛ }}
مرحله 4
بنابراین ، برای تنظیم ویژگی خصوصی attr1 بر روی مقدار مورد نیاز خود ، یک روش از همان کلاس را با استفاده از شی object ایجاد شده قبلی فراخوانی کنید: myObj1.funcA1 (10) - با یک عملکرد ضمنی مشابه ، مقدار 10 در ویژگی attr1 قرار می گیرد. هنگام کار با اشاره گر بر روی نمونه ای از کلاس ، یک عملکرد مشابه به این شکل خواهد بود: рObj1–> funcA (10). برای بازیابی ویژگی خصوصی attr1 و یافتن مقدار ذخیره شده در آن ، با روش دیگری از کلاس تماس بگیرید: int Res = myObj1.funcA2 (). در این حالت به متغیر عدد صحیح Res مقدار متغیر کلاس مخفی اختصاص داده می شود.
مرحله 5
اگر لازم است یک ویژگی با وضعیت محافظت شده را در همه اشیا of کلاسهای کودک فراخوانی کنید ، مستقیماً به متغیر آن مراجعه کنید. با این وجود ، هنگام کار در توابع کلاسهای خارجی ، دسترسی به داده های محافظت شده باید به روشی که در بالا توضیح داده شد ، حاصل شود.
مرحله 6
برای فراخوانی یک ویژگی بدون ایجاد یک شی، ، متغیر آن را در کلاس با استفاده از ساختار زیر به صورت استاتیک اعلام کنید: static int attr1. در این حالت ، با مشخص کردن ورودی می توانید ویژگی را در هر کجای برنامه بیرون بکشید.