کلاس ها و اشیا در ++C — راهنمای جامع

۴۸۲۸ بازدید
آخرین به‌روزرسانی: ۱۲ مهر ۱۴۰۲
زمان مطالعه: ۳ دقیقه
کلاس ها و اشیا در ++C — راهنمای جامع

در این مقاله طرز کار با کلاس‌ها و اشیا در ++C را خواهیم آموخت. ++C یک زبان برنامه‌نویسی چند پارادایمی است. یعنی از سبک‌های برنامه‌نویسی مختلف پشتیبانی می‌کند. یکی از روش‌های رایج برای حل مسائل برنامه‌نویسی ایجاد شیء است که به نام سبک برنامه‌نویسی شی‌گرا نامیده می‌شود. پیش از ادامه مطلب، یادآور می‌شویم برای مطالعه قسمت قبلی این مجموعه آموزشی می‌توانید روی لینک زیر کلیک کنید:

++C از سبک برنامه‌نویسی شیءگرا پشتیبانی می‌کند که با ایجاد اشیا، امکان تقسیم مسائل پیچیده به مجموعه‌های کوچک‌تر را فراهم می‌سازد. شیء به مجموعه‌ای از داده‌ها و همچنین تابع‌هایی که روی آن داده‌ها عمل می‌کنند، گفته می‌شود.

کلاس در ++C

پیش از آن که یک شیء در ++C ایجاد کنید، باید یک کلاس تعریف کنید. کلاس نقشه اولیه‌ای از یک شیء است. کلاس را می‌توان یک طرح (یا پروتوتایپ) از یک خانه تصور کرد. این طرح شامل همه جزییات در مورد قطعات، درها، پنجره‌ها و غیره است. بر اساس این توصیف‌ها می‌توان خانه را ساخت. خانه یک شیء است. همان طور که می‌توان از روی یک نقشه بی‌نهایت شیء ساخت، از روی یک کلاس نیز می‌توان تعداد نامحدودی از اشیا ساخت.

تعریف کلاس در C++‎

کلاس در ++C با استفاده از کلیدواژه class تعریف می‌شود که در ادامه آن نام کلاس می‌آید. بدنه کلاس درون آکولادها تعریف می‌شود و در انتها یک نقطه ویرگول می‌آید.

1class className
2   {
3   // some data
4   // some functions
5   };

مثالی از کلاس در ++C

1class Test
2{
3    private:
4        int data1;
5        float data2;  
6    public:  
7        void function1()
8        {   data1 = 2;  } 
9        float function2()
10        { 
11            data2 = 3.5;
12            return data2;
13        }
14   };

ما در کد فوق کلاسی به نام Test را تعریف کردیم. این کلاس دو عضو به نام‌های data1 و data2 دارد. همچنین این کلاس دو تابع عضو به نام‌های ()function1 و ()function2 دارد.

کلیدواژه‌های private و public

احتمالاً در کدهای فوق متوجه دو کلیدواژه private و public شده‌اید. کلیدواژه private موجب می‌شود که داده‌ها و تابع‌های کلاس خصوصی شوند. داده‌ها و تابع‌های خصوصی تنها از درون همان کلاس قابل دسترسی هستند.

کلیدواژه public موجب عمومی شدن داده‌ها و تابع‌های کلاس می‌شود. داده‌ها و تابع‌های عمومی می‌توانند خارج از کلاس نیز مورد دسترسی واقع شوند. در کد فوق data1 و data2 اعضای خصوصی هستند در حالی که ()function1 و ()function2 اعضای عمومی محسوب می‌شوند.

اگر تلاش کنید به داده‌های خصوصی از خارج از کلاس دسترسی یابید، کامپایلر خطایی ایجاد می‌کند. این ویژگی در برنامه‌نویسی شیءگرا به نام «پنهان‌سازی داده‌ها» نامیده می‌شود.

اشیا در ++C

زمانی که کلاس تعریف شد، تنها مشخصه‌های مورد نیاز برای ایجاد شیء تعریف شده‌اند و هنوز هیچ حافظه یا فضای ذخیره‌سازی تخصیص نیافته است. برای استفاده از داده‌ها و دسترسی به تابع‌های تعریف‌شده در کلاس باید اشیایی ایجاد کنید.

ساختار تعریف شیء در ++C

1className objectVariableName;

شما می‌توانید اشیای کلاس Test (که در مثال قبلی تعریف شد) را به صورت زیر ایجاد کنید:

1class Test
2{
3    private:
4        int data1;
5        float data2;  
6    public:  
7        void function1()
8        {   data1 = 2;  } 
9        float function2()
10        { 
11            data2 = 3.5;
12            return data2;
13        }
14   };
15int main()
16{
17    Test o1, o2;
18}

در کد فوق اشیای o1 و o2 از کلاس Test ایجاد شده‌اند. در کلاس فوق Test ،data1 و data2 داده‌های عضو و ()fanction1 و ()function2 تابع‌های عضو هستند.

نحوه دسترسی به داده‌ها و تابع‌های عضو کلاس در ++C

با استفاده از عملگر نقطه (.) می‌توان به اعضای داده‌ای و تابع‌های عضو کلاس دسترسی یافت. به مثال زیر توجه کنید:

1o2.function1();

کد فوق تابع ()function1 را درون کلاس Test برای اشیای o2 فرامی‌خواند. به طور مشابه اعضای داده‌ای می‌توانند به صورت زیر مورد دسترسی قرار گیرند:

1o1.data2 = 5.5;

لازم به اشاره است که اعضای خصوصی تنها درون همان کلاس قابل دسترسی هستند. بدین ترتیب می‌توان از ;()o2.function1 از هر تابع یا کلاسی در مثال فوق استفاده کرد. اما کد ;o1.data2 = 5.5 همواره باید درون کلاس Test باشد.

مثال: شیء و کلاس در برنامه‌نویسی ++C

1// Program to illustrate the working of objects and class in C++ Programming
2#include <iostream>
3using namespace std;
4class Test
5{
6    private:
7        int data1;
8        float data2;
9    public:
10       
11       void insertIntegerData(int d)
12       {
13          data1 = d;
14          cout << "Number: " << data1;
15        }
16       float insertFloatData()
17       {
18           cout << "\nEnter data: ";
19           cin >> data2;
20           return data2;
21        }
22};
23 int main()
24 {
25      Test o1, o2;
26      float secondDataOfObject2;
27      o1.insertIntegerData(12);
28      secondDataOfObject2 = o2.insertFloatData();
29      cout << "You entered " << secondDataOfObject2;
30      return 0;
31 }

خروجی

Number: 12
Enter data: 23.3
You entered 23.3

در این برنامه دو عضو data1 و data2 و دو تابع عضو ()insertIntegerData و ()insertFloatData تحت کلاس Test تعریف شده‌اند. دو شیء o1 و o2 از همان کلاس اعلان شده‌اند. تابع ()insertIntegerData برای شیء o1 با استفاده از کد زیر فراخوانی می‌شود:

1o1.insertIntegerData(12);

بدین ترتیب مقدار data1 برای شیء o1 به میزان 12 تعیین می‌شود. سپس با کد زیر تابع ()insertFloatData برای شیء o2 فراخوانی می‌شود و مقدار بازگشتی از تابع در متغیری به نام secondDataOfObject2 ذخیره می‌شود:

1secondDataOfObject2 = o2.insertFloatData();

در این برنامه، data2 از o1 و data1 از o2 استفاده نشده است و حاوی مقادیر بی‌استفاده است. برای مطالعه بخش بعدی روی لیک زیر کلیک کنید:

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

بر اساس رای ۳۸ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
programiz
۲ دیدگاه برای «کلاس ها و اشیا در ++C — راهنمای جامع»

سلام
در c++ آیا میشه تعداد ملاس ها را با الگریتمی محدود کرد که مثلا بیشتر از 5 کلاس نداشته باشیم؟

سلام خسته نباشید مباحث خیلیی خیلی کامل و خوش فهم گفته شده بود و فونت و شکل ظاهری سایت عالیه و ادمو خسته نمیکنه.
فقط یه پیشنهاد اول کار با گفتن کلمه ی مقاله باعث میشه من به عنوان مخاطبتون فک کنم خیلی سخته و از روش رد شم چون مقاله اصولا خیلی بد فهمه. با این محتای عالیی ک دارید بنظرم از لفط مقاله آخر کار برای نشون دادن صحت استفاده کنین بهتره. بازم تاکید میکنم خیلی خیلی خوب بود.

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *