0
logo

آموزش ++C | بخش یازدهم – کلاس در c++

++C, برنامه‌نویسی

۱۳۹۷/۰۸/۲۸

توسط : محمد نصر

176 بازدید

کلاس ها در ++C

درود فراوان به شما همراهان عزیز. در قسمت دهم آموزش، اولین قسمت از سری OOP در ++C رو براتون گفتیم. اما در این مطلب به مهمترین بخش قسمت شی گرایی یعنی کلاس در c++ و نحوه کار با آنها می‌پردازیم. اما قبل از شروع این مبحث بهتر است نوعی دیگر از داده‌ها به نام string بیان شود. همراه ما باشید.

نوع داده‌ای string

string یا رشته در واقع نوعی متغیر است که می توان در آن یک عبارت رشته‌ای قرار داد. برای استفاده از string باید کتابخانه‌ی string به اول برنامه الحاق شود.

نوع داده‌ای string هم مانند بقیه متغیرها مقداردهی می شود. هم می‌تواند مقدار اولیه بگیرد و یا اینکه هرجای برنامه که احتیاج بود مقدار آن را تغییر داد. برای مقدار دادن هم باید عبارت رشته‌ای خود را بین ” ” نوشت.

برنامه‌نویسی شیء گرایی چیست؟

دو دسته‌ی حیوان و انسان را در نظر بگیرید. به فرض مثال بنده محمد نصر خصوصیات پایه یک انسان را دارم. چشم دارم، دماغ دارم، دهان دارم و … اما انسان دیگری را در نظر بگیرید. آن انسان باز هم مثل من چشم، دماغ و دهن دارد با این تفاوت که رنگ چشم ها، انحنای دماغ و اندازه‌ی دهان ما دو نفر کاملا متفاوت است.

حال به حیونات توجه کنید. برای مثال ببر و گربه را در نظر بگیرید. هر دو خصوصیاتی مشترک دارند. هر دو پا دارند، سر دارند و چشم هم دارند. اما اندازه و شکل هر قسمت از این دو حیوان به کلی متفاوت است.
اما منظور از برنامه نویسی شیء گرایی چیست؟ در برنامه‌نویسی شی گرایی، به داده‌هایی که ساختاری پیچیده داشته باشند یک شیء گفته می‌شود و ارتباط میان اشیا توسط قوانین شیء گرایی بیان می‌شود. قوانین مثل : کلاس، وراثت، کپسوله سازی، سطوح دسترسی و …. در این پست ابتدا مفهوم کلاس را بیان می کنیم.

کلاس چیست؟

کلاس نوع جدید داده‌ای ماست. نوعی جدید از داده‌ که ساختار آن توسط ما تعریف می‌شود. برای تعریف کلاس در c++ از کلمه کلیدی class استفاده می شود. ساختار یک کلاس در c++ بصورت زیر است:

برای تعریف باید کلمه class و سپس یک نام برای کلاس نوشته شود. اجزای کلاس از متدها و فیلدها تشکیل شده اند. وقتی تابعی درون کلاس تعریف شود دیگر به آن تابع نمی‌گویند بلکه متد گفته می‌شود. فیلدها منظور نوع های داده‌ای هستند مثل int، float، string و غیره. توجه شود که فیلدها خود می توانند دارای نوعی داده‌ای دیگری باشند که ما تعریف کرده ایم. به عنوان مثال:

کلاسی به نام Person تعریف کردیم که دو فیلد دارد: age از نوع int و name از نوع string. دو نکته باید ذکر شود. اول اینکه هنگام تعریف یک متغیر از نوع string در یک کلاس باید فضای نام std قبل از آن ذکر شود چون کامپایلر موقع کامپایل کردن کلاس string را نمی‌شناسد. دوم اینکه کلمه کلیدی public که اول کلاس گذاشتیم مربوط به سطح دسترسی است که در جلسه دوازدهم به آن می‌پردازیم.

چگونه از کلاس در c++ استفاده کنیم؟

تا اینجای کار ما کلاس را تعریف کردیم. استفاده از آن همانند تعریف و مقداردهی متغیرها است. به کد زیر دقت کنید.

پس از تعریف کلاس، در داخل main دو شیء از کلاس Person با نام های p1 و p2 ساختیم. مثل این در نظر بگیرد که دو متغیر مثلا از نوع int ساخته شد. اما اینجا p1 و p2 از نوع جدید داده‌ای Person هستند. حال p1 و p2 دو شئ کاملا متفاوت هستند که هر کدام تنها دو فیلد دارند: یکی age و یکی هم name. برای دسترسی به فیلدهای یک شی باید از نقطه و سپس نام فیلد استفاده کرد. دقت شود که هم می‌توان روی فیلد نوشت و هم می‌توان آنها را خواند.

مثالی دیگر از کلاس در c++

به عنوان مثال دوم، یک متد به کلاس Person اضافه می‌کنیم. متد را مانند رفتارهای یک فرد در نظر بگیرید. پس هر کلاس هم می‌تواند رفتارهایی در غالب متد داشته باشد. کلاس Person را بصورت زیر بازنویسی می‌کنیم:

حال کلاس Person از دو فیلد و یک متد تشکیل شده است. فلیدها که تغییری نکرده‌اند. اما متدی به نام WhoAreYou تعریف کردیم که نوع  برگشتی آن string است و هیچگونه پارامتر ورودی ندارد. کار این متد استفاده از اطلاعات age و name است و جمله‌ای به نام answer را برمی‌گرداند. دقت شود که اول متد در داخل کلاس تعریف می‌شود و دوم اینکه بیرون کلاس محتوای آن مشخص خواهد شد.

پس از تعریف کلاس، دو شیء از آنها ساختیم و سپس فیلدهای age و name هرکدام را مقداردهی کردیم. در نهایت متد ()WhoAreYou هر کدام از اشیاء را صدا زدیم. خروجی این متد یک رشته است که برگردانده شده و روی کنسول چاپ می‌شود.

نکته: تابع ()to_string یکی از توابع مهم کتابخانه string است که کار آن تبدیل نوع‌ های داده‌ای مختلف به رشته است. از آنجایی که جنس age از نوع int است، باید ابتدا آن را به رشته تبدیل کرد و سپس استفاده نمود.

جمع بندی

اگر بخواهیم به صورت کلی به برنامه نگاه کنیم، ما نوع داده‌‌ای به نام Person ساختیم که یک انسان را توصیف می‌کند. حال ما قادریم که بی نهایت شیء از آن ایجاد کنیم که هر کدام یک انسان را توصیف می‌کند.

به عنوان جمع بندی، کلاس ساختاری است که ما متناظر با برنامه‌ای که مدنظر داریم تعریف می‌کنیم. به متغیری که از روی کلاس ساخته می‌شوند، شیء می‌گویند و می‌توان بی انتها شیء از روی کلاس ایجاد کرد. در مطلب بعدی آموزش در مورد سازنده‌ی کلاس یا constructor صحبت می‌شود.

امیدوارم که از این مطلب که در مورد کلاس در c++ بود نهایت استفاده رو برده باشید. با رزدینو همراه باشید و نظرات و پیشنهادات خودتون رو با ما در میان بگذارید. 😉

محمد نصر

تاریخ عضویت : ۰۳ خرداد ۱۳۹۸

محمد نصر هستم. 9 سال سابقه کار در حوزه الکترونیک و همینطور برنامه‌نویسی میکروکنترلر به صورت پیشرفته دارم. سعی میکنم هر روز چیزهای جدید یاد بگیرم و خوشحال میشم با شما به اشتراک بگذارم.

راه آسان‌تری برای ارتباط با کاربران‌مان پیدا کرده‌ایم :) عضویت در کانال

چنانچه دیدگاهی توهین آمیز باشد و متوجه اشخاص مدیر، نویسندگان و سایر کاربران باشد تایید نخواهد شد.

چنانچه دیدگاه شما جنبه ی تبلیغاتی داشته باشد تایید نخواهد شد.

چنانچه از لینک سایر وبسایت ها و یا وبسایت خود در دیدگاه استفاده کرده باشید تایید نخواهد شد.

چنانچه در دیدگاه خود از شماره تماس، ایمیل و آیدی تلگرام استفاده کرده باشید تایید نخواهد شد.

چنانچه دیدگاهی بی ارتباط با موضوع آموزش مطرح شود تایید نخواهد شد.