شما عضو نیستید, برای دسترسی کامل به سایت لطفا از طریق این لینک ثبت نام نمائید.     close
 

تالارهای گفتمان جی تاک

جدیدترین موضوعات انجمنها دانلود تولبار جی تاک


بازگشت   تالارهای گفتمان جی تاک برنامه نویسی , طراحی وب و موضوعات مرتبط برنامه نویسی C, C++ and Visual C
ارسال موضوع جدید  پاسخ
 
لینک مستقیم ابزارهای موضوع جستجو در موضوع
قدیمی 1st July 2009   #1

marjan62

مدیر بازنشسته

 marjan62 آواتار ها

تاریخ عضویت: Jul 2008
نوشته ها: 1,944
تشکر از دیگران: 658
تشکر شده 1,833 بار در 1,039 پست

حالت
Brooding

 

کلاس چیست?(class)

- کلاسها به صورت فايلهايی با پسوند" h " به طور مثال "cat.h " ذخيره ميشوند و برای استفاده از آن در برنامه نياز است که آنرا به برنامه ضميمه کنيد به طورمثال :("include " cat.h#)



2 - اما در داخل فايل کلاس چه چيزهايی نوشته می شود :

در کلاس دو مسئاله تعيين می شود :


الف ) متغييرهای لازم


ب ) توابع مورد نياز


در مورد تعريف متعييرها بايد گفت که همانند تعريف متغيير در بر نامه نويسی غير شئ گرا می باشد اما يک نکته مهم را بايد مد نظر داشت و آن اين است که در برنامه نويسی شئ گرا در کلاس شما حق مقدار دهی به يک متغيير در حين تعريف آن را نداريد . به مثال زير توجه کنيد :


;
inta=10 اين در برنامه نويسی عادی مشکلی ندارد اما در يک کلاس حق چنين کاری نداريم و بايد به شکل زير بنويسيم :

;
int a

چگونگی مقدار دهی به این متغییر در بحث شئ مورد بررسی قرار می گيرد .


و اما توابع مورد نياز نيز روش خاص خود را داراست .


در يک کلاس شما فقط بايد تابع را تعريف کنيد و کد نويسی بدنه تابع در داخل کلاس انجام نمی شود . در ادامه يک نمونه از يک کلاس ساده آورده شده است :


}class cat

;
int age
;
intweight,length

;(
void setage(int x
;(
int getage(void
;(
voidMeow(void

{

همانطور که مشاهده کرديد در يک کلاس تنها تعريف متغييرها و توابع صورت می گيرد .

اين نوشته به صورت فايلی با پسوند "
h " ذخيره می شود بطور مثال : cat.h
حالا باید بتونیم توابع تعریف شده رو بصورت کامل بنویسیم .

برای این کار یک فایل هم نام با نام کلاس می سازند با پسوند
cpp مثلا cat.cpp

در این فایل جدید ابتدا نوشته می شود "
i #include "cat.hدیگر هدر فایلهای مورد نیاز نیز که جزء ملزومات برناه نویسی است نیز باید نوشته شود

بعد از آن نوشتن بدنه فایلها شروع می شود که همانند سی معمولی است اما با کمی تفاوت جزئی :


بعد از تعیین نوع تابع باید نام کلاس نوشته شده بعد
۲ تا علامت :: گذاشته و اسم تابع و بقیه مجرا نوشته شود . مثلا :



(void cat::setage (inta
}
;
age=a
{

----------------------------------------------------------------------------------------------------------------------

عشق مانند گرفتن تیغ از دست بچه هاست

marjan62 آفلاين است  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiTweet this Post!
پاسخ با نقل قول
2 کاربر از شما به خاطر پست مفیدتان تشکر کرده اند :
قدیمی 1st July 2009   #2

marjan62

مدیر بازنشسته

 marjan62 آواتار ها

تاریخ عضویت: Jul 2008
نوشته ها: 1,944
تشکر از دیگران: 658
تشکر شده 1,833 بار در 1,039 پست

حالت
Brooding

 

سطح دسترسی در کلاسها


در مورد سطح دسترسی به متغييرها و توابع در يک کلاس بحث خواهيم کرد . سطح دسترسی يعنی چی؟

يعنی يک کلاس برای محتويات خود يکسری دسته بندی را رعايت می کند که هر کسی به هر چيزی نتواند دسرسی داشته باشد که در بعضی موارد اگر رعايت نشود می تواند باعث بسياری مشکلات شود.


در يک کلاس
۳ نوع دسترسی وجود دارد :

۱- Public:در اين نوع دسترسی هيچ محدوديتی اعمال نمی شود و هر چيزی چه داخلی و چه خارجی می تواند از ان استفاده کند .

۲- Private: اين نوع دسترسی بر عکس نوع قبل عمل می کند . يعنی غير از توابع عضو اين کلاس هيچ چيز ديگری نمی تواند به آنها دسترسی داشته باشد . مثلا وقتی يک شئ از اين کلاس تعريف می کنيم از طريق شئ نمی توانيم مستقيما به ايم نوع متغييرها يا توابع دسترسی داشته باشيم اما خود توابع عضو اين کلاس ميتوانند در کد نويسی خود از اين نوع استفاده کنند که در آينده بيشتر آشنا خواهيم شد .

۳- Protected:در این نوع نیز شئی که از کلاس تعریف می شود نمی تواند به این نوع دسترسی داشته باشد . اين نوع تعريف خاص خود را دارد که بعد از بحث ارث بری قابل ذکر است و در اينجا تنها نامی از آن برای تکميل بحث آورده شده است .

*نکته قابل ذکر اين است که غالبا از دو نوع
۱و۲ استفاده می شود و از نوع ۳ خيلی کم استفاده خواهيد کرد .

در کلاس این انواع دسترسی با
۳ کلمه کلیدی ذکر شده تعیین می شوند :

اگر در ابتدای کلاس باشیو و هیچ کدام را ننویسیم متغییرها و توابع تعریفی تا کلمه کلیدی دیگر همه
private محسوب می شوند تا زمانی که از یکی از دو کلمه دیگر استفاده شود . بعد از آن نیز بقیه از این کلمه استفاده شده تبعیت می کنند تا کلمه کلیدی بعدی .

------------------------------------------------------------------------------------------


در ادامه يک نمونه مثال از سطح دسترسی آورده شده و در ادامه آن مثالهای اشتباه و درست نيز آورده شده است :


class Cat
}
;
inta,b
;(
void setage(int age
:
public
;
int c,d
;(
void setlength(intlength
:
protected
;
int e
;(
void setwidth(int width
}


-------------------------------------

در بالا يک نمونه کلاس آورده شده حالا يک شئ از آن تعريف کرده و مثالهای درست و غلط را ذکر ميکنم :



;Cat m

مثالهای درست :

;m.a=10
;
m.b=80
;()
m.setage

مثالهای غلط :

;m.b=20
;
m.c=13
;()
m.setlength
;
m.e=90
;()
m.setwidth

----------------------------------------------------------------------------------------------------------------------

عشق مانند گرفتن تیغ از دست بچه هاست

marjan62 آفلاين است  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiTweet this Post!
پاسخ با نقل قول
3 کاربر از شما به خاطر پست مفیدتان تشکر کرده اند :
قدیمی 1st July 2009   #3

marjan62

مدیر بازنشسته

 marjan62 آواتار ها

تاریخ عضویت: Jul 2008
نوشته ها: 1,944
تشکر از دیگران: 658
تشکر شده 1,833 بار در 1,039 پست

حالت
Brooding

 

سازنده ها و مخربها در يک کلاس



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

دسته اول را سازنده یا
Constractor و دسته دوم را مخرب يا Destractor گويند .


==============


اگر توابعی به عنوان سازنده و مخرب تعريف نشود . کامپايلر توابع پيش فرضی را ايجاد می کند که تنها وجود دارند و هيچ کار خاصی انجام نمی دهند اما شما می توانيد سازنده يا مخرب دلخواه خود را بنويسيد که درست قبل ايجاد شئ اجرا شوند يا درست قبل از تخريب شئ اجرا شوند .

=============


برای روشن شدن مطلب یه مثال می زنم :

شاید شما بخواهید وقتی یک شئ ایجاد می کنید به یه تعداد معلوم یا نا معلومی متغییر به صورت دینامیکی از سیستم بگیرید . برای این کار آن را داخل تابع سازنده خود قرار می دهید .


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


=============


اما چگونه بنویسیم ؟؟؟

در یک کلاس اگر تابعی با نام آن کلاس بنویسید به عنوان سازنده محسوب می شود و قبل ایجاد شئ حتما یک بار اجرا می شود .


مثلا نام کلاس شما
Cat.h باشد :

سازنده شما باید تابعی به نام
Cat باشد که ممکن است ورودی و یا خروجی داشته ویا نداشته باشد که به اختیار شما است .

مخرب نیز مشابه به سازنده است با یک تفاوت در نام آن که در ابتدای نام تابع حرف(~) و سپس نام کلاس نوشته می شود و بقیه ماجرا ...



++++++++++++++++++++++


اگر به یاد داشته باشید دردرسهای قبل گفته شد که در یک کلاس فقط تعریف تابع آورده می شود و خود تابع در یک فایل با پسوند cpp نوشته می شود . اما یک استثنا وجود دارد به نام توابع In Line یا یک خطی ::

می توان توابع کوتاه در حد یکی دو خط را همانجا در کنار تعریف تابع در کلاس مورد نظر نوشت .


این معمولا برای سازنده ها و مخربهای کوتاه کاربرد دارد و لطفا از این سوء استفاده نکنید




مثال :


} class Cat
:
public
{
voidCat(void){int a=10
{
void ~Cat(void){a=20
}

البته اين تنها يک مثال است و هر کار ديگری نيز می توانيد در سازنده و مخرب به عنوان يک تابع انجام دهيد .

----------------------------------------------------------------------------------------------------------------------

عشق مانند گرفتن تیغ از دست بچه هاست

marjan62 آفلاين است  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiTweet this Post!
پاسخ با نقل قول
3 کاربر از شما به خاطر پست مفیدتان تشکر کرده اند :
پاسخ


کاربران در حال دیدن موضوع: 1 نفر (0 عضو و 1 مهمان)
 
ابزارهای موضوع جستجو در موضوع
جستجو در موضوع:

جستجوی پیشرفته

مجوز های ارسال و ویرایش
شما نمیتوانید موضوع جدیدی ارسال کنید
شما امکان ارسال پاسخ را ندارید
شما نمیتوانید فایل پیوست در پست خود ضمیمه کنید
شما نمیتوانید پست های خود را ویرایش کنید

BB code is فعال
شکلک ها فعال است
کد [IMG] فعال است
کد HTML غیر فعال است
Trackbacks are فعال
Pingbacks are فعال
Refbacks are فعال



ست مروارید عشق

بهترین هدیه برای دختران و خانم ها :
زیبا ترین و جذاب ترین هدیه سال برای دختر خانم ها و بانوان محترم

تولد – سالگرد ازدواج –هدیه آشنایی - روز عشق و ....

خودتان مروارید داخل صدف زنده كه در كنسرو شیشه ای بسته بندی شده است را در بیاورید و در قسمت مخصوصش در گردنبند قرار دهید

» برای مشاهده توضیحات و تصاویر بیشتر اینجا را کلیک کنید ...
 

روش خرید: برای خرید پس از کلیک روی دکمه زیر و تکمیل فرم سفارش، ابتدا محصول مورد نظر را درب منزل یا محل کار تحویل بگیرید، سپس وجه کالا و هزینه ارسال را به مامور پست بپردازید. جهت مشاهده فرم خرید، روی دکمه زیر کلیک کنید.

قیمت: 8900 تومان

 


Powered by vBulletin Version 3.8.6 & Our Members
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.5.2
Host & Support By Kimiahost Co
© Copyright 2005-2010 Gtalk.ir
سایت سرگرمی و تفریحی * ثبت هاستینگ و دامنه * سایت سرگرمی و عکس های جالب * فروشگاه تکچین ، فروشگاه اینترنتی تکچین هدایای جالب و لوکس * ست مروارید عشق * سایت یک در یک ، فال و طالع بینی ، عکس ، مقالات آموزشی، پیامک های جالب *آموزش لاغری در 10 دقیقه *شارژ موبایل با باطری قلمی *بهترین هدیه روز مادر و روز زن *راه های افزایش قد + حرکات جادویی *ساعت LED آدیداس adidas *ساعت بدون عقربه Gucci *دستگاه کپی SMS و شماره تلفن *ست چاقوی میراکل بلید *دماسنج عشق *سایت هدفمند سازی یارانه ها *برچسب ضد اشعه امواج مضر موبایل * ساعت و گردنبند جادویی آرامبخش *مجله اینترنتی پی سی پارسی *بزرگترین شهر دانلود *فال و طالع بینی -تاروت *دانلود *پک سفیدکننده دندان اصل Whitelight *پاتوق تفريحي ايرانيان *سرگرمی و تفریحی شهرشب * کرم موبر باله آ اصل - Balea Cream *توپترينها *موبفا-مرجع تخصصی موبایل *قره جه طیار ، انتخابات گنبد *عکسهای بازیگران * درج آگهي و تبليغات *مجله تاپ مگ *هاست ایرانی ، میزبانی ملی *خرید زیور آلات ، بدلیجات ، مروارید *پنل ارسال sms *عکس *پاتوق اینترنتی *عکس *مجله تفریحی خبری فان فارس *تبادل لینک با ما - رنک 3 به بالا