اطلاعیه

Collapse
No announcement yet.

کلاس در سی ++ چیست؟!!

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    کلاس در سی ++ چیست؟!!

    سلام دوستان.
    دارم سی ++ یاد میگیرم رسیدم به کلاس ها.
    میخاستم یه درک درستی از کلاس بهم بدید.
    اصلا چه نیازیه ما بیایم یه شی رو نمونه بسازیم ؟؟!
    اصلا کجا استفاده میشه کلاس؟؟
    فقط میخام بدونم که کلاس چیه منظور سازندگان سی ++ از این کار چی بود.
    یه بدی که دارم تا هدف این کار رو نفهمم هرچی یاد بگیرم در مورد این موضوع،باز یادم میره :cry2:.
    در هر صورت ممنون میشم یه توضیح مفهومی بدید دوستان.
    ممنون
    به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
    (پيش به سوي هدف)

    #2
    پاسخ : کلاس در سی ++ چیست؟!!

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

    دیدگاه


      #3
      پاسخ : کلاس در سی ++ چیست؟!!

      خیلی ساده بخوام بگم یه روش برای دسته بندی توابع و متغییر هاییه که برای انجام یه سری کار مرتبط به هم نوشته میشن.
      مثلا:
      شما فرض کن تو برنامت میخوای از ADC و UART و چیزای دیگه استفاده کنی و برای ADC مثلا یه تابع نوشتی که فعالش کنه و یکی دیگه که غیر فعالش کنه و یکی دیگه که مقدار یه کانال رو بخونه و برای UART هم یه تابع برای ارسال رشته و یه تابع برای ارسال بایت و یه تابع دیگه هم برای دریافت رشته و یکی هم برای دریافت بایت نوشتی، همه این توابع رو اگه با هم تو کد بنویسی مسلما کدت شلوغ میشه و خوندنش یکم سخت.
      شما میای اینجا یه کلاس مثلا به نام ADCManager مینویسی و تمام توابع کار با ADC رو توش پیاده سازی میکنی و یه کلاس دیگه هم به نام UARTManager مینویسی که توش تمام توابع کار با UART رو پیاده سازی کردی، حالا برای استفاد از ADC و UART باید اول یه نمونه از کلاس مربوط بسازی و با استفاده از اون نمونه متدی رو که میخوای فراخونی کنی، (***توابعی که از داخل کلاس فراخونی میشن رو دیگه بهشون تابع نمیگن و بهشون میگن متد)
      کلاس ها امکان استفاده مجدد کد رو هم ساده میکنن.
      این مثالی که زدم ساده ترین کاربرد کلاس ها هست، و اگه بخوای وارد بحث OOP بشی باید یه سری مسائل دیگه کلاس ها هم بدونی که مهمترینشون ارث بری کلاس ها هست با کاربردشون.
      ;()((void (*)(void))0x0000))

      دیدگاه


        #4
        پاسخ : کلاس در سی ++ چیست؟!!

        خیر همه زبانها با کلاس نیستن :biggrin:
        فقط زبانهای شی گرا که سی++ جزوشونه (سی نیست).
        کلاس دقیقا نقطه شروع برنامه نویسی شی گراست (یا بقول دوستمون OOP). بعد ازون هم تمام مفاهیم شی گرایی (کپسوله سازی، وراثت و و و) همشون ابزارهایی جهت کار با کلاسهاست.
        حالا من خیلی ساده و خلاصه بهت بگم که یه کلاس چیه
        ببین شما فرض کن میخوای یه برنامه بنویسی که مشخصات صدها دانشجو رو درش ذخیره و بازیابی کنی یا تغییر بدی.
        خوب چه راهکاری به نظرت میرسه؟
        یه راهکار اینه که به تعداد مورد نیاز رشته بسازی و تو یکی نامها و تو یکی نمره ها و تو یکی شماره ها و...رو دخیره کنی.
        یا یه راهکار اینه که از لیست های پیوندی استفاده کنی و چندین ساختمان ایجاد کنی.
        اما تو تمام این روشها امنیت چندان بالا نیست دلیلشم تا حدودیش کاملا واضحه، مثلا تو روش اول اگه فقط یه الگوریتم کارشو بدرستی انجام نده ممکنه مشکلات زیادی بوجود بیاد.
        اما روش خیلی بهتر و امن تر ایجاد یک کلاسه، که خصایص و متدها و بلوکه هایی رو برای خودش داره.
        مثلا خصایص میتونه نمره، ترم، نام، نام پدر، شماره شناسنامه و... داشته باشه.
        حالا به تعداد مورد نیاز میشه ازین کلاس شی ساخت و داخل هر شی خصوصیات یک دانشجو ذخیره کرد.
        امیدوارم متوجه شده باشی
        کم گوی و گزیده گوی

        دیدگاه


          #5
          پاسخ : کلاس در سی ++ چیست؟!!

          ممنون از راهنمایی هاتون دوستان :applause:
          بله داره کم کم جا میاوفته.
          یه سوال اینکه
          اینطور که معلومه کلاس ها هم شبیه توابع هستند.
          حالا مثلا مثلا این دوستمون،
          ببین شما فرض کن میخوای یه برنامه بنویسی که مشخصات صدها دانشجو رو درش ذخیره و بازیابی کنی یا تغییر بدی.
          با یه تابع هم میشه اینکار رو کرد دیگه.
          چون مثلا ما کلاس تعریف میکنیم بعدش داخلش متغییر و تابع میزاریم،بعدش میآیم دوباره از همون تابع های استفاده می کنیم.
          خوب چه کاریه همون اول میآیم مستقیما از تابع استفاده میکنیم دیگه.
          چرا رفتیم از کلاس استفاده کردیم.!!!!!!
          (البته ناگفته نماند که میدونم این یه مثال ساده بود و کلاس ها هم اگه نباشن کار برنامه نویس ها لنگه و بخش مهمی تو برنامه نویسی هست.خوب چه کنیم واسه ما تازه کارآ انگار بدرد نخوره باید تحقیق کنیم و از شما دوستان کمک بگیریم تا بفهمیم دیگه.)
          بازم تشکر
          به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
          (پيش به سوي هدف)

          دیدگاه


            #6
            پاسخ : کلاس در سی ++ چیست؟!!

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

            دیدگاه


              #7
              پاسخ : کلاس در سی ++ چیست؟!!

              نوشته اصلی توسط محمد مهدی نایبی
              اگر ممکنه فرق عملی( نه دستوری) کلاس ها با استراکچرها رو هم توی توضیحاتتون بگنجونید.
              استراکچر رو بیشتر ازش برای نگهداری دیتا استفاده میکنن و جنبه دیتایی داره ولی کلاس رو برای انجام کار یا دستورات استفاده میکنن و جنبه کدی داره.
              ;()((void (*)(void))0x0000))

              دیدگاه


                #8
                پاسخ : کلاس در سی ++ چیست؟!!

                کلاس ویژگی هایی داره که تابع و Structure ندارن.
                1- Property : مثلاً کلاس Color میتونه سه تا خاصیت R و G و B رو داشته باشه برای دسترسی به Property بعد از نام کلاس، نقطه و بعد نام خاصیت میاد مثلاً Color.R
                2- Method : کار خاصی رو انجام میده مثلاً متد ToHSV در کلاس Color میتونه مبنای رنگ رو از RGB به HSV تغییر بده. نحوه استفاده از متد هم مشابه Property هست مثلاً (HSV =Color.ToHSV(RGBColor که RGBColor و HSV متغیرهایی در برنامه از نوع کلاس Color هستند.
                3- Encapsulation: برنامه های دیگه فقط به مقادیری از یک کلاس دسترسی دارن که بهشون اجازه داده میشه (نیازی نیست به همه مقادیر دسترسی داشته باشن) که احتمال خطا رو کم میکنه و امنیت برنامه رو افزایش میده. مثلاً میشه یک خاصیت رو در کلاس به صورت ReadOnly معرفی کرد تا از بیرون قابل تغییر نباشه ولی بشه خوندش.
                4- وراثت: مثلاً کلاسی که برای کار با انواع شکل های گرافیکی به کار میره میتونه از کلاس رنگ و کلاس چند ضلعی ها استفاده کنه (ارث ببره) و کلاس چند ضلعی ها میتونه از کلاس خطوط ارث ببره به این ترتیب توسعه برنامه ها سازمان یافته تر و راحت تر میشه.
                5- راحتی استفاده: میشه یک یا چند کلاس رو در قالب یک فایل کتابخانه (DLL) در آورد و با افزودن Reference اون در برنامه های جدید ازشون استفاده کرد.
                فعلاً این ویژگی ها رو یادم میاد.
                لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
                لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
                با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
                اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
                يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

                دیدگاه


                  #9
                  پاسخ : کلاس در سی ++ چیست؟!!

                  دیشب یه چند خط نوشتم بعد حسم نگرفت تایپ کنم بیخیال شدم امشب امیدوارم بشه
                  یه وقتی برنامه ها اونقدر کم حجم بود که همه چی تو دل یه تایع نوشته میشد
                  بعد برنامه ها پیچیده تر و بزرگتر شد؛ برنامه نویسی ماژولار پیش اومد؛ شکوندن برنامه های بزرگ به قطعات کوچکتر که هر قطعه وظیفه خاصی رو انجام میداد
                  بعد برنامه ها اونقدر بزگ شدند که دیگه حتی همون ماژولها هم پیچیدگشون از برنامه های ماژولار بیشتر شد؛ کلاسها بوجود اومدند اما کلاس چیه؛ یه مثال میزنم امیدوارم مفهوم باشه
                  شما میخوای برنامه بازی فوتبال رو بنویسی
                  فوتبالیست ها نقاط مشترکی دارند (که بعنوان فوتبالیست شناخته میشن نه والیبالیست) کارهای مشخصی رو در زمین انجام میدن د ؛ شوت میزنند؛ سر مینند؛ اوت میندازن و ....
                  هر فوتبالیست البته خصوصیات خاصی رو هم داره مثلا رونالدو با سرعت 20km/h میدوه ولی مسی 18 تا
                  خب شما میای یه کار کلی میکنی؛ کلاس فوتبالیست رومینویسی ؛ یه موجودیت خام که هم خصوصیت داره و هم وظایف مشخص
                  از این کلاس 11 تا نمونه میسازی و به هر کدوم خصوصیلات خودشون رو نسبا میدی و اینطوری یه تیم کامل داری از تنها یک فوتبالیست اولیه که نوشته بودی
                  البته فوتبالیستها بسته به موقعیت بازیشون وظایفشون ممکنه فرق کنه ؛ یا حتی خصوصیاتشون کم و زیاد بشه مثلا
                  دروازه بان حق داره توپ رو در دست بگیره؛ یا یه پیستون قدرت و دقت سانترش بیشتر از یه دفاعه،
                  اینجا بحث وراثت پیش میاد، شما از فوتبالیست اولیه (تو مایه های انسان اولیه)؛ فرزندانی تولید میکنی که یکیش میشه دروازه بان، یکی میشه ذفاع و ...
                  وراجی دیگه بسه

                  دیدگاه

                  لطفا صبر کنید...
                  X