اطلاعیه

Collapse
No announcement yet.

توضیح مفهوم شیئ گرایی در برنامه نویسی

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

    توضیح مفهوم شیئ گرایی در برنامه نویسی

    سلا م من منظور از شیئی گرایی در برنامه نویسی نم دونم چیه مثلا می گن این برنامه به صورت شیئی گرا نوشته شده لطفا در این مورد راهنمایی بفرمایید پیشاپپیش از راهنماییتون ممنون

    #2
    پاسخ : توضیح مفهوم شیئ گرایی در برنامه نویسی

    من زیاد وارد نیستم اما ساده بگم یعنی مثلا تو یک فرم رو در نظر بگیر به عنوان یک شیئ فیزیکی! طول داره عرض داره رنگ داره فعال یا .. بودن داره و ...

    دیدگاه


      #3
      پاسخ : توضیح مفهوم شیئ گرایی در برنامه نویسی

      داداش من یه pdf دارم برای آموزش c#
      توش یه چیزایی درباره شی گرایی گفته
      اما حجم کلش بالاست (12 مگابایته ما هم که دایل پ داریم و . . . :redface
      خوب من چند صفحه ای که در این باره نوشته رو واست میزارم
      میدونم، زیاد چیز خاصی نگفته
      اما همین قدر از دستم بر می اومد
      ایشالا که کمک کنه :nerd:

      http://santooristan.persiangig.com/eca/LearnVisualCsharpFarsi.pdf
      هستم اگر می روم گر نروم نیستم

      دیدگاه


        #4
        پاسخ : توضیح مفهوم شیئ گرایی در برنامه نویسی

        نوشته اصلی توسط BAMDAD 86
        سلا م من منظور از شیئی گرایی در برنامه نویسی نم دونم چیه مثلا می گن این برنامه به صورت شیئی گرا نوشته شدهلطفا در این مورد راهنمایی بفرمایید پیشاپپیش از راهنماییتون ممنون
        شی گرائی چه ربطی به AVR داره ؟!
        شئ گرائی یک شیوه برنامه نویسی هست که در اون برنامه نویس ملزک به رعایت یکسری از قوانین از پیش تعریف شده ( وراثت ، چند ریختی ، نهان سازی و ... ) هست که استفاده از اونها در پروژه ها بزرگ باعث صرف هزینه و وقت کمتر و بازدهی بیشتر میشه و جزء اصولی ترین روش های برنامه نویسی هست که زبان هایی چون #C و Delphi و Java ازش پشتیبانی میکنن ، دقت کنیند که VB یا ... از شئ گرائی پشتیبانی نمیکنند ، زمانی به یک زبان برنامه نویسی میگن شئ گرا که تمام اون چند مورد ذکر شده ( چند ریختی ، وراثت ، نهان سازی و ... ) برای شئ گرائی رو شامل بشه .

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

        مثلا فرض کنید نیاز به پیاده سازی تابعی دراید که هم بتونه عدد صحیح به عنوان ورودی بگیره و هم رشته ، در این نوع موارد در زبان های برنامه نویسی معمول باید 2 تابع جدا بنویسید که یکی عدد صحیح دریافت کنه و دیگری رشته و نام های متفاوتی هم براشون در نظر یگیرید ولی در برنامه نویسی شئ گرا مفهومی به نام چند ریختی باعث میشه یک تابع بتونه چندین نوع عملکرد متفاوت از خودش نشون بده ، مثلا با Overload کردن یک تابع میشه پارامترها یا عملکردش رو تغییر داد .

        یا اینکه فرض کنید در یک برنامه بزرگ ( مثلا مدریریت مدرسه ) میخواین برای هر کلاس سیستمی با عنوان زیر پیاده کنید :

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

        خوب فرض کنید مدرسه مورد نظر ما 20 تا کلاس داره ، شما چی کار میکنی ؟ اون ساختار بالا رو 20 بار پیاده میکنی ؟! اگر این کار رو بکنی و یک برنامه نویس مجرب کدت رو ببینه از خنده روده بر میشه !

        برای عملیات بالا ما یک کلاس طراحی میکنیم ، البته نه کلاس درس ، کلاس در برنامه نویسی شو گرا مفهموم خاصی داره ، به مجموعه ای از اشیاء و توابع مرتبط با اونها میگیم کلاس ، مثلا در مورد بالا یک کلاس مینویسید شامل موارد ذکر شده ( نام دبیر ، نام دانش آموز ، شماره کلاس و ... ) حالا برای هر کلاس لازم نیست کد نویسی کنید و کافیه با توجه به قوانین شئ گرائی از اون کلاس نوشته شده یک کلاس جدید به ارث ببرید ، کلاس به ازثارث برده شده دقیقا مثل کلاس والد هست و با توجه به قوانین و قدرت شئ گرائی میتونید تغییرایتی هم درش بدید ، هر تغییری در کلاس جدید به ارث برده شده در کلاس والد اعمال نمیشه چون کلاس جدید یک شئ جدید هست و فقط خصوصیات کلاس والدش رو مثل یک فرزند به ارث برده ؛ اگر شما یزنی تو گوش یکی میان به باباتون میگن چرا زدی تو گوش یکی ؟ نه !

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

        * اون طول و اندازه فرم که علی جان ذکر کرد به طور مستقیم به شئ گرائی ربطی نداره ، طول و عرض و ... بخشی از خصوصیات یک کلاس هست که به فرزندان به ارث میرسه ، همون فرم در زبان ها برنامه نویس یک کلاس هست ، مثلا در دلفی کلاسی به نام TForm داریم که همه فرم های ساخته شده از اون مشتق میشن و خصوصیاتشون مثل ( طول ، عرض ، عناون ، رنگ زمینه و ... ) رو ازش به ارث میبرن و تغییر در این خصوصیات روی کلاس جاری اعمال میشه ولی روی کلاس TForm اعمال نمیشه چون اون فقط والد کلاس ها هست و خصوصیات و ویژگی های اولیه مورد نیاز برنامه نویس رو برای کمتر شدن کدنویسی و سریعتر شدن روند نوشتن برنامه در اختیار برنامه نویس گزاشته .

        موفق باشید .

        دیدگاه


          #5
          پاسخ : توضیح مفهوم شیئ گرایی در برنامه نویسی

          قصه حسن کچل کفترباز!

          قدیما همه اسپاگتی مینوشتن. توی این روش ممکن بود برنامه نویس بعد از 5 دقیقه هم نفهمه چه غلطی کرده. بنابراین توسعه و رفع اشکال برنامه خیلی خیلی سخت بود.
          یعد یکی پیدا شد گفت: اوهوی! برنامه تو مرتب بنویس. اولین دردسر اینه که عادت کردی از هر جا به هرجایی که دلت میخواد بری. اینجوری نه. و برنامه نویسی ساختیافته مد شد.
          این فرم ساختیافتگی بعدا هم شامل کد و هم شامل اطلاعات شد.
          خیلی بعد ها یکی بیکار تر از قبلی ها پیداش شد و گفت: میگم حالا هم یه خطر وجود داره. و اونم اینه که اگه در طی زمان ایده اصلی برنامه کم رنگ بشه؛ هر کی هرکی میشه. یعنی من میتونم به اطلاعاتی دسترسی پیدا کنم که حقم نیست. و ایده حفاظت وسط اومد.
          بیکارهای دیگه ای هم پیدا شدن و چیز هایی نظیر ارث برای توسعه یک ساختار رو پیش کشیدن.
          و نهایتا یک آدم زرنگ پیداش شد و همه اینا رو به اسم خودش ثبت داد. اسمش رو هم گذاشت OOP!

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

          اما برای یک آجر دو تا مفهوم وسط میاد. یکی آجر به عنوان یک مفهوم انتزاعی اونجوری که من شما راجع بهش حرف میزنیم. که بهش میگیم "کلاس". و دوم اون جسم سنگینی که یک بنا با هزاران هزارش سر و کله میزنه و به هر کدومشون میگیم یک شیئ یا object. اما از یک نوع آجر (کلاس آجر) میشه هر تعداد آجر (شیئ آجر) تولید کرد. ممکنه از این نوع حتی یک آجر هم تولید نشه (abstraction). و الی آخر....

          به این میگن شیئ گرایی.

          کلاغه هم به خونش نرسید.

          دیدگاه


            #6
            پاسخ : توضیح مفهوم شیئ گرایی در برنامه نویسی

            علی چاوشی خدائی راست میگن آخه شی گرایی چه ربطی به AVr داره
            ولی کلا داستان اینه
            برای برنامه نویسی شی گرا در هر زبانی ابتدا باید مفهوم اصلی شی گرایی را درک کرد. شی گرایی ابزار و یا خصوصیت خاص یک زبان برنامه نویسی نیست؛ حتی در زبانی مثل C هم که از امکانات شی گرایی برخوردار نیست، باز هم امکان برنامه نویسی شی گرا وجود دارد. نمونه ای بارز از یک همچین برنامه هایی کتابخانه ی معروف GTK است که به صورت شی گرا در C پیاده سازی شده است. در حقیقت شی گرایی نوعی طرز تفکر خاص در پیاده سازی برنامه هاست. به این صورت که برنامه نویس با قسمت های مختلف برنامه اش دقیقا همانند اشیای عادی در دنیای حقیقی رفتار میکند، و سعی میکند با کنار هم قرار دادن آن ها برنامه ی خود را به سرانجام برساند.
            مثالی از دنیای واقعی مثال1: نجاری را در نظر بگیرید که برای ساخت یک میز باید از اشیای مختلفی مثل میخ، چکش، اره و... استفاده کند. هر کدام از این ابزارها اشیای جدا گانه ای هستند که بدون دخالت در کار یکدیگر به ساخت میز مورد نظر نجار کمک میکنند. چکش میخ را میکوبد بدون این که از ماهیت میخ با خبر باشد... اره چوب را تکه تکه میکند بدون این که در کار چکش دخالت کند.... در نهایت حاصل کار میزی خواهد بود که نجار با استفاده از این ابزارها پدید آورده است. در حقیقت نجار برای ساخت میز خود از اشیای مختلفی که هر کدام ماهیت و خصوصیات خاص خودشان را دارند کمک گرفت.
            مثال2: فرض نمایید که ما قصد داریم قطعه ای را به طور انبوه تولید نماییم یک روش آنست که ما این قطعات را یک به یک تراش دهیم ولی این کار ممکن است ماهها و شاید سالها طول بکشد و اگر نتیجه کار را هم بررسی نماییم ملاحظه می کنیم که قطعات همگی یک شکل و یک دست نیستند همچینین هزینه تمام شده آن هم بسیار بالا خواهد بود اما روش بهتری نیز وجود دارد و آن این است که ما یک قالب برای آن قطعه بسازیم و بعد با استفاده از آن قالب قطعات مورد نیاز خود را تولید نماییم. پس اگر ما فقط در ساختن قالب دقت لازم را به خرج دهیم در پایان کار مشاهده می کنیم که قطعات تولید شده همگی یک شکل و یک دست از آب درآمده اند. در برنامه نویسی شی گرا هم در واقع از این روش استفاده می شود ما یک قالب (کلاس) می سازیم و آن را امتحان می نماییم تا از درستی طرز کار آن مطمئن شویم و بعد از آن بارها استفاده می نماییم. 123
            مزایای شی گرایی شی گرایی در دنیای برنامه نویسی هم به همین صورت است. برنامه نویس در طول کار خود اشیای مورد نیاز خود را ایجاد میکند و یا از اشیای آماده ای که توسط برنامه نویسان دیگر ایجاد شده است استفاده میکند — تا با در کنار هم قرار دادن آن ها برنامه ای را به وجود آورد که از اشیای مختلفی تشکیل شده است. این روش مزیت های زیادی دارد که در زیر چند نمونه از اصلی ترین آن ها را با هم مرور میکنیم:
            • [li] بهینه شدن ساختار برنامه : شی گرایی باعث تولید برنامه های ساخت یافته تری می شود که امکان تغییر و توسعه در برنامه را ساده تر میکند. مثال: اگر بخواهید قسمت خاصی از برنامه را تغییر دهید، دیگر لازم نیست تمام کدهای برنامه را ویرایش کنید چون می دانید که تغییرات شما فقط در همان قسمت مد نظرتان اعمال میشود و خللی در کار قسمت های دیگر به وجود نمی آید. [/li]
            • [li] استفاده مجدد از کدها : وقتی شما یک شی جدید را خلق میکنید میتوانید تا مدت ها از آن استفاده کنید و یا آن را با دیگران به اشتراک بگذارید. این مزیت هنگام ساخت کتابخانه های شی گرا بسیار کارآمد است. مثال: یک دوچرخه می تواند تا مدت زمان زیادی به شما سواری دهد. تازه میتوانید برای سواری آن را به دوستانتان هم قرض بدهید. [/li]
            • [li] کپسوله سازی : در برنامه نویسی هر چه اشیای تشکیل دهنده ی یک برنامه از طرز کار یکدیگر بی خبرتر باشند، برنامه شما ساختار بهتری پیدا خواهد کرد زیرا در این شرایط اشیا در کار یکدیگر دخالت نمی کنند؛ با استفاده از شی گرایی قسمت های مختلف برنامه ی شما از نحوه ی کار همدیگر بی خبرند و این مساله در حالی اتفاق می افتد که شما به عنوان برنامه نویس از طرز کار آن ها اطلاع دارید. مثال: یک نجار می داند که فرو رفتن میخ در چوب، به خاطر نوک تیز آن است. اما چکشی که روی میخ می کوبد از نحوه ی فرو رفتن میخ در چوب بی خبر است. وظیفه ی چکش فقط کوبیدن میخ است. در حقیقت وظیفه ی چکش فقط کوبیدن است، یک کوبیدن خالص! یعنی بهتر است که چکش حتی از شی ای که به آن نیرو وارد می کند هم بی خبر بماند. به زبان دیگر چکش فقط باید ضربه بزند، این که شی ضرب دیده میخ باشد یا دیوار، دیگر در حیطه ی معلومات چکش نمی گنجد! [/li]
            • [li] وراثت : این قابلیت دقیقا متناسب با نامش عمل میکند. یعنی اگر یک شی "الف" از شی "ب" ارث ببرد، یک سری از خصوصیات شی "ب" به شی "الف" وارد می شود. در برنامه نویسی به شی "الف" فرزند، و به شی "ب" والد گفته می شود. [/li]
            مثال فرزندی که به دنیا می آید اصولا یک سری از خصوصیات ظاهری و یا رفتاری پدر خودش را به ارث خواهد برد حالا که با تعدادی از مزایای اصلی شی گرایی آشنا شدید، مطمئنا اشتیاق برنامه نویسان به برنامه های شی گرا را درک خواهید کرد.
            معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

            دیدگاه


              #7
              پاسخ : توضیح مفهوم شیئ گرایی در برنامه نویسی

              آقا نیما (john lock)
              ربطش به avr اینه که :
              1-من مجبورم هر سوالی که دارم در انجمن avr مطرح کنم چون تجربه دو سال عضو بودن من در این سایت ثابت کرده که هرجا به جز اینجا تاپیک ایجاد می کنم پاسخ داده نمیشه که این تاحدی به با سواد بودن اعضای انجمن avr وتاحدی هم به کم لطفی اساتید سایر انجمن های سایت مربوط میشه
              2- اگر هم فرض کنیم اینجا همه فقط avr بلد هستندو تاپیکی که من ایجاد کردم خیلی بی ربط هست کاربران محترمی که لطف کردن واین شئ گرایی در برنامه نویسی را برای من توضیح دادن از جمله خود شما قاعدتا نباید قادر به توضیح چنین مفصل وجامعی باشند پس نتیجه می گیریم که چندان هم بی ربط نیست در پایان از توضیحاتی که همه شما در مورد شی گرایی ارائه فرمودید متشکرم

              دیدگاه


                #8
                پاسخ : توضیح مفهوم شیئ گرایی در برنامه نویسی

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

                دیدگاه


                  #9
                  پاسخ : توضیح مفهوم شیئ گرایی در برنامه نویسی

                  اگر دقت کنی در پایان پست قبلی به صورت لفظی و نوشتاری تشکر کردم در ضمن بابت اون وبسایتی که قرار بود زحمت بکشی و طراحی کنی من یک تشکر به شما بدهکارم حق با شماست

                  دیدگاه

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