با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، با یکی دیگر از جلسات دوره کامل آموزش ++C در خدمت شما دوستان هستیم . در بخش قبلی با ارسال آرایه به تابع در ++C آشنا شدید، در این جلسه قصد داریم به آموزش شی گرایی در ++C بپردازیم.
++C یک زبان برنامه نویسی چند الگویی است. به این معنی که از سبک های مختلف برنامه نویسی پشتیبانی می کند.
یک از محبوب ترین روش های برنامه نویسی استفاده از اشیا می باشد که به شی گرایی (Object Oriented) معروف است.
شی (Object) مجموعه ای از داده ها و توابعی است که بر روی آن داده ها کار می کنند.
برای تعریف شی نیاز داریم تا قبلا یک کلاس را تعریف کنیم.
در واقع اشیا از روی کلاس ها ساخته می شوند.
می توانیم اینطور فکر کنیم که کلاس ها یک نقشه یا طرح و پروتوتایپی (prototype) که اشیا از روی آن ساخته می شوند.
برای تعریف یک کلاس از کلمه کلیدی class و به دنبال آن نام کلاس استفاده می کنیم.
بدنه کلاس داخل آکولاد تعریف شده و در انتها با ; خاتمه می یابد:
1 2 3 4 5 | class className { // some data // some functions }; |
مثال:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | class Test { private: int data1; float data2; public: void function1() { data1 = 2; } float function2() { data2 = 3.5; return data2; } }; |
کلاس ذو عضو داده (data1 و data2) و دو عضو تابع (function1 و function2) دارد.
کلمه کلیدی private دسترسی داده ها و توابع را شخصی می کند. داده های شخصی یا private فقط در همان کلاس قابل دسترس هستند.
کلمه کلیدی public دسترسی داده ها و توابع را عمومی می کند. داده های عمومی یا public در خارج از کلاس نیز قابل دسترسی خواهند بود.
هنگامی که کلاس تعریف شده است، فقط برای مشخصات و نقشه برای اشیا تعریف شده و هیچ حافظه ای از سیستم اخذ نشده است.
برای استفاده از داده ها و توابع کلاس از اشیا استفاده می کنیم.
ساختار دستور برای تعریف اشیا:
1 | className objectVariableName; |
مثال:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | class Test { private: int data1; float data2; public: void function1() { data1 = 2; } float function2() { data2 = 3.5; return data2; } }; int main() { Test o1, o2; } |
در بالا دو شی o1 و o2 را از کلاس test ایجاد شده اند.
برای دسترسی به اعضا کلاس در ++C از . (نقطع) استفاده می کنیم.
برای مثال:
1 | o2.function1(); |
دستور بالا تابع function1 از شی o2 را فرا می خواند.
توجه داشته باشید که اعضا private فقط داخل کلاس در دسترس هستند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #include <iostream> using namespace std; class Test { private: int data1; float data2; public: void insertIntegerData(int d) { data1 = d; cout << "Number: " << data1; } float insertFloatData() { cout << "\nEnter data: "; cin >> data2; return data2; } }; int main() { Test o1, o2; float secondDataOfObject2; o1.insertIntegerData(12); secondDataOfObject2 = o2.insertFloatData(); cout << "You entered " << secondDataOfObject2; return 0; } |
خروجی به شکل زیر می باشد:
1 2 3 | Number: 12 Enter data: 23.3 You entered 23.3 |
در برنامه بالا دو شی o1 و o2 از یک کلاس تعریف شده اند.
تابع insertIntegerData از شی o1 فرا خوانده شده:
1 | o1.insertIntegerData(12); |
این دستور مقدار data1 شی o1 را به ۱۲ تغییر می دهد.
جلسه آموزش شی گرایی در ++C نیز به پایان رسید.
در جلسه بعد به آموزش سازنده ها در ++C خواهیم پرداخت. با ما همراه باشید.
محمودی
مرسی
Abbas
عالی