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

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 7 از 7

نام تاپيک: من هنوز مفهوم کلاس و توابع عضو رو در c++ متوجه نشدم...

  1. #1
    پروفشنال Arash_XL7710i_207's Avatar
    تاريخ عضويت
    Aug 2006
    محل سكونت
    Shiraz
    پست ها
    762

    پيش فرض من هنوز مفهوم کلاس و توابع عضو رو در c++ متوجه نشدم...

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

  2. #2
    آخر فروم باز hamidreza_buddy's Avatar
    تاريخ عضويت
    Sep 2004
    محل سكونت
    شریف
    پست ها
    1,167

    پيش فرض

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

    کلاس رو به صورت یه شئ در نظر بگیر. مثلاً فرض کن یه بازی می خایم بنویسیم. یه کلاس داریم به نام MovingObject که کلاس پایه ای برای اشیاء متحرک هست. این اشیاء هر کدام مشخصه های متفاوتی دارند (که در داده های عضو data member ذخیره می شود) و همچنین اعمال متفاوتی دارند (همون توابع عضو) و یا در صورت مشترک بودن یک عمل آن را به صورت های متفاوتی انجام می دن (که بوسیلۀ کد توابع عضو انجام میشود).
    مثلاً حداقل داده های زیر رو دارن: سرعت، جهت حرکت. این داده ها بهتره به صورت خصوصی (private) تعریف شن.
    و عملی که به صورت مشترک انجام می دهند حرکت کردن ( Move ) هستش. چون در خارج از کلاس سرعت و ... در دسترس نیستند فقط می توان با استفاده از این متد باعث به حرکت در آمدن شئ شد. حال فرض کنید کلاس های Car و Human از این کلاس مشتق شده باشند. حال توابع جدیدی به هر یک از این کلاس ها اضافه می کنیم که کار خاصی انجام می دهند. مثلاً تابع Horn برای بوق زدن و یا Accelerate برای شتاب گرفتن ماشین و ... که ربطی به انسان ندارن. و به انسان مثلاً Walk و یا Sleep یا Read و ... .

    وجود این توابع باعص می شه که بر خلاف زبان های غیر شئ گرا (مثل سی) مجبور نباشیم که همۀ داده ها رو در معرض دید عموم بگذاریم و فقط توابعی که مربوط به کلاس باشند (توابع عضو) می توانند به داده ها دسترسی داشته باشند. و ما فقط با اجرای این توابع می توانیم کار مورد نظر را انجام دهیم. و برای اینکه شئ ما بتواند کار جدیدی انجام دهد باید یک تابع عضو عمومی (public) به کلاس اضافه کنیم.

    مثال:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    در این کلاس هیچ راهی برای مقدار دهی داده های a b c وجود ندارد. برای این کا رمی توان از سازنده ها و یا توابع عضو استفاده کرد:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    یکی از مزیت استفاده از توابع برای دسترسی به داده ها (توابعی مثل set_xxx و یا get_xxx که یا مقداردهی می کنند و یا مقداری برمی گردانند) این است که اگر فرمت ذخیرۀ داده ها تغییر کردن، دیگر لازم نیست که همۀ کد برنامه تغییر داده شود بلکه فقط تابع set یا get تغییر می کند و توابعی که از آن استفاده می کنند.

    برای استفاده از کلاس بالا:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    Last edited by hamidreza_buddy; 22-05-2007 at 17:35.

  3. این کاربر از hamidreza_buddy بخاطر این مطلب مفید تشکر کرده است


  4. #3
    پروفشنال Arash_XL7710i_207's Avatar
    تاريخ عضويت
    Aug 2006
    محل سكونت
    Shiraz
    پست ها
    762

    پيش فرض

    خیلی ممنون
    زحمت کشیدی

  5. #4
    داره خودمونی میشه
    تاريخ عضويت
    Mar 2007
    پست ها
    195

    پيش فرض

    سلام

    شايد بعد از دوسال درس و برنامه نويسي اين سوال مسخره باشه ولي واقعيت همينه كه اكثر افرادي كه تازه برنامه نويسي مي كنن همين مشكل را دارن . فرق تابع و كلاس

    من با اين كه مفهوم تابع و كلاس را مي دونم و طريقه استفاده هر كدوم را بلدم ولي واقعا مزيت كلاس را نسبت به تايع نمي دونم و در حقيقت حسي از تابع يا كلاس استفاده مي كنم

    كاربرآرش سوال خوبي پرسيده چون اين علامت سوال سنگين و بزرگ مزيت كلاس روي سر من هم مونده

    اگه قراره كه مزيت كلاس نسبت به تابع اعضاء داده اي(proprteis ) باشه همون هايي كه بعد از فضاي نامي تعريف مي شوند ....؟ كه خوب در تابع هم من مي توانم متغيير هاي محلي تعريف كنم

    يعني private به جاي متغير محلي تابع و public به جاي متغيير هاي سراسر

    حالا اگه قراره كه مزيت كلاس نسبت به تابع به خاطر متد هاي آن باشه كه من مي تونم توي تابع اصلي يكسري توابع محلي هم تعريف كنم يعني در يك تابع يك تابع ديگر را فراخواني كنم

    پس تابع فرا خواني شده توسط تابع اول هم به جاي متد هاي كلاس

    اينو مي دونم كه بالاخره دليلي هست كه اين تفاوت پديد اومده و مسئله مهم شي گرايي الكي به وجود نيومده ولي نمي تونم دليلش را تجزيه تحليل كنم

    غير از مثال لطفا مسئله را بشكافيد
    مرسي

  6. #5
    در آغاز فعالیت
    تاريخ عضويت
    Jan 2008
    پست ها
    4

    پيش فرض

    دقیقا من هم این مشکل رو دارم.

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

  7. #6
    حـــــرفـه ای sin2x=2sinxcosx's Avatar
    تاريخ عضويت
    Dec 2007
    پست ها
    2,234

    پيش فرض

    درسته که اساتيد ، توشيحات کامل تري دادن . ولي من هم به طور خيلي ساده مي گم :
    اين يک نمونه خيلي ساده از کلاسه :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    مشاهده مي کنيد که داخل اين کلاس ، سه تا تابع تعريف و پياده سازي شده اند که کار هر سه به نوعي مربوط به همه . داخل اين کلاس يه متغير از نوع int تعريف شده که توابع داخل اون که اصطلاحا توابع عضو ناميده ميشن و تو ساير زبان ها مثل جاوا بهش متد هم ميگن مي تونن بهش دسترسي داشته باشن . در واقع ما تعدادي داده و تابع رو داخل يک کپسول که اصطلاحا کلاس ناميده ميشه محصور کرديم . (در دنياي شيءگرايي به اين عمل encapsulation ميگن )
    :public هم مشخص ميکنه که تابع ها يا داده هايي که بعد از اين کلمه کليدي تعريف ميشن حالت عمومي دارن و مشتري هاي کلاس تو تابع main شون ميتونن باهاش کار کنن . ولي متغير priv8 زير کلمه کليدي private ( مشخصه دسترسي private يا private access specifier ) تعريف شده . يعني هيچ تابعي به جز توابع عضو کلاس حاضر نمي تونن بهش دسترسي پيدا کنن .

  8. این کاربر از sin2x=2sinxcosx بخاطر این مطلب مفید تشکر کرده است


  9. #7
    در آغاز فعالیت
    تاريخ عضويت
    Apr 2009
    پست ها
    3

    پيش فرض c++

    سلام كتابc++دايتل رو به شما پيشنهاد مي كنم(كتابي ساده ومفيد)

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •