آموزش کلاس ها و اشیا در C++ (به زبان کاملا ساده)
در این آموزش، یاد می گیرید که با اشیاء و کلاس ها در برنامه نویسی C++ کار کنید.
C++ یک زبان برنامه نویسی چند پارادایمی است. یعنی از سبک های برنامه نویسی مختلف پشتیبانی می کند.
یکی از راه های محبوب برای حل مشکلات برنامه نویسی، ایجاد اشیاء است که به سبک برنامه نویسی شی گرا شناخته می شود.
شی گرایی در OO سی پلاس پلاس
سبک برنامه نویسی است که این امکان را فراهم می کند مشکلات پیچیده را با ایجاد اشیاء، به مجموعه های کوچک تر تقسیم کنیم.
تعریف ساده شیء مجموعه ای از داده ها و توابع است که روی داده ها عمل می کند.
کلاس C++
قبل از ایجاد شی در C++، باید کلاس آن را تعریف کنید.
کلاس یک طرح برای شی است.
به عنوان مثال به عنوان طرح (نمونه اولیه) به خانه فکر کنید که شامل تمام جزئیات در مورد طبقات، در ها، پنجره ها و غیره است. بر اساس این توصیفات ما خانه را می سازیم. خانه شی است.
همانطور که بسیاری از خانه ها می توانند از این توصیف ساخته شوند، می توانیم بسیاری از اشیا را از یک کلاس ایجاد کنیم.
چگونه در C++ کلاس تعریف کنیم؟
در C++ با استفاده از کلید واژه class می توان کلاس تعریف کرد.
بدنه کلاس بین براکت ها تعریف می شود و در نهایت با ; به پایان می رسد.
class className
{
// some data
// some functions
};
مثال : کلاس در C++
- class Test
- {
- private:
- int data1;
- float data2;
- public:
- void function1()
- { data1 = 2; }
- float function2()
- {
- data2 = 3.5;
- return data2;
- }
- };
در قطعه کد بالا کلاسی با نام Test ایجاد کرده ایم.
این کلاس دارای دو عضو داده است: data1 و data2 و دو تابع:
function1() و function2()
کلمات کلیدی: private و public
احتمالا در مثال بالا به دو کلمه کلیدی دقت کردید: private و public .
کلید واژه های private باعث می شود داده ها و توابع خصوصی شوند. داده ها و توابع خصوصی تنها در داخل کلاس خود قابل دسترسی هستند.
کلید واژه public باعث می شود که داده ها و توابع عمومی شوند. داده ها و توابع عمومی در خارج از کلاس هم قابل دسترسی هستند.
در اینجا data1 و data2 عضو private هستند و ()function1 و ()function2 اعضای public هستند.
اگر بخواهید به داده های خصوصی در خارج از کلاس دسترسی پیدا کنید، کامپایلر خطا می دهد. این ویژگی در OOP (برنامه نویسی شی گرا) به عنوان data hiding (مخفی کردن اطلاعات) شناخته می شود.
اشیا در C++
به هنگام تعریف کلاس، تنها مشخصات برای اشیا آن تعریف شده است؛ هیچ حافظه یا ذخیره سازی اختصاص داده نمی شود.
برای استفاده از داده ها و دسترسی به توابع تعریف شده در کلاس، باید شی ایجاد کنیم.
نحو تعریف شی در C++
className objectVariableName;
می توان اشیاء کلاس Test (تعریف شده در مثال بالا) را به صورت زیر ایجاد کرد:
- 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 ایجاد می شوند.
در کلاس بالا، data1 و data2 عضو های داده ای (متغیر) هستند و ()function1 و ()function2 توابع عضو هستند.
نحوه دسترسی به متغیر ها و توابع کلاس در C++ چگونه است؟
می توان به متغیر ها و توابع با استفاده از . (نقطه) دسترسی پیدا کنید. مثلا
o2.function1();
خط بالا تابع ()function1 درون کلاس Test را برای شی o2 فراخوانی می کند.
متغیر ها هم به همین روش قابل دسترسی هستند:
o1.data2 = 5.5;
توجه داشته باشید که اعضای private تنها داخل همان کلاس قابل دسترسی هستند.
بنابراین می توان ()o2.function1 را هر جا استفاده کرد؛ در هر تابع یا کلاس. با این حال، کد
o1.data2 = 5.5
فقط داخل کلاس Test قابل دسترسی است.
مثال : شی و کلاس در C++
- // Program to illustrate the working of objects and class in C++ Programming
- #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;
- }
خروجی
Number: 12
Enter data: 23.3
You entered 23.3
در این برنامه، دو متغیر data1 و data2 و دو تابع ()inserertIntegerData و ()insertFloatData در کلاس Test تعریف می شوند.
دو شی o1 و o2 از همان کلاس اعلان می شوند.
تابع ()insertIntegerData برای شی o1 با استفاده خط کد زیر صدا زده می شود:
o1.insertIntegerData(12);
مقدار data1 را برای شیء o1 برابر با ۱۲ قرار می دهد.
سپس تابع ()insertFloatData برای شی o2 صدا زده می شود و مقدار بازگشتی با استفاده از خط کد زیر در متغیر secondDataOfObject2 ذخیره می شود :
secondDataOfObject2 = o2.insertFloatData();
در این برنامه data2 از o1 و data1 از o2 استفاده نمی شود و حاوی مقدار آشغال یا garbage هستند.