نمایش نتایج 1 تا 38 از 38

نام تاپیک: شئ گرا یعنی چی؟

  1. #1

    شئ گرا یعنی چی؟

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

  2. #2
    این سوال می‏دونی یعنی چی؟
    جوابش شاید اندازه 1 کتاب باشه.

  3. #3
    (OOP(Object Oriented Programming یعنی این که شما همه چیز رو بصورت شی و کلاس ببینی.
    روش برنامه‏نویسی با مدل اسپاگتی شروع شد. و زبانهایی مثل GW-Basic از این روش استفاده می‏کردن.
    به این ترتیب که برنامه با شرطهای بسیار راه خودشو پیدا می کرد. مثلا:

    05 CLS
    10 INPUT "Please enter your name:";A$
    20 IF A$ = "Mohammad" THEN GOTo 100
    30 IF A$ = "Maryam" THEN GOTo 200
    20 GOTo 300
    100 PRINT "You are a male"
    110 END
    200 PRINT " You are a female"
    210 END
    300 PRINT "Undetected gender"
    310 END

    این روش خیلی سخت و نتیجه کار خیلی پیچیده بود.

  4. #4
    بعد از اون procedural شدن یعنی برنامه حاوی Procedure (یا Function) می‏شد. (این دوتا با هم فرق دارن.) دیگه کدها یه کم قابل فهم‏تر بودن. زبونهایی مثل C از این روش اسفاده می‏کردن. مثلا:

    void fastcall SayHello()
    {
    cout >> "Hello"
    };
    main()
    {
    SayHello();
    }

    خب این بهتر شد. ولی باز هم کد نویسی سخت بود و کد نویسا احساس امنیت کمی می‏کردن.
    (علت اینکه اینقدر سریع از این بحثا رد شدم، رسیدن به OOP بود.)

  5. #5
    بقیشو اگه دوست داری بعدا می‏گم.
    آخه الان باید برم.

  6. #6
    دوست دارم که بگید
    ممنون

  7. #7
    وقتی شما می‏خواین با ماشین به جایی برید، کافیه بعد از روشن کردنش با کمک گاز، ترمز، فرمون، ... اونو هدایتش کنید. ولی اینکه مثلا چطور پدال گاز باعث حرکت ماشین می‏شه برای شما اهمیت نداره.
    به عبارت دیگه شما از یک شیء به نام ماشین استفاده کردید که فرمون و پدال گاز و ... رو برای شما قابل دسترس قرار داده(public)و نحوه کار موتور رو از شما پوشونده(private). حالا فرض کنید قسمتهایی از این ماشین برای تولید ماشین دیگه استفاده کنیم(inheritance). مثل ماشین RD با موتور دستکاری شدةپیکان و بدنه پژو.(virtual protected)
    تو مثال ما تقریبا تمام مفاهیم OOP خلاصه شده.
    حالا بیا با هم تفسیرش کنیم...

  8. #8
    ما یک نوع شی (کلاس) به نام ماشین داریم.
    class CCar;

    که ماشین شما یه نمونه از این نوع هستش
    CCar* Car;

    ماشین شما یه مشخصه (property) داره به نام "اسم" که اینجا برابر "peykan" هست:
    class CCar{...
    String Name;...
    };...
    Car->Name = "Peykan"

  9. #9
    لطفا حتما نظر بدین
    ادامه دارد...
    تا بعد...

  10. #10
    این خصوصیت واسه همه قابل مشاهده‏ست. هرکی ماشین رو ببینه می‏فهمه که ماشین پیکانه پس خصوصیت "Name" یه خصوصیت عمومی (public) هست:

    class CCar{...
    public:
    String Name;
    ...
    };...

  11. #11
    ولی اشیائی هم هستن که شاید شما (نه به عنوان یه شخص آشنا) از وجودشو هیچ خبری نداشته باشین. مثل تسمه پروانه. این نوع خصائص، خصوصی برای این ماشین هستن:
    class CTasmeParvaneh;
    class CCar{...
    public:
    String Name;
    private:
    CTasmeParvaneh* TasmeParvaneh;
    ...
    };...

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

  12. #12
    Time Over.
    [b]نظر[\b] یادتون نره.
    تا بعد...

  13. #13
    نظر بدین لطفا

  14. #14
    کاربر دائمی آواتار Touska
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    ایران زمین
    سن
    39
    پست
    1,988
    ای ولا آقای میر مصطفی ادامه بدید. :flower: :flower:

  15. #15
    :mrgreen: چه عجب یکی پیدا شد مارو تحویل بگیره. :mrgreen:

  16. #16
    جمع‏بندی تا اینجا:
    تا حالا با چند نوع دسته‏بندی در کلاسها آشنا شدیم: public و private. در ++C، یک نوع دسته‏بندیه دیگه هم وجود داره: protected. ولی قبلش باید یه آشناییه مقدماتی با ارث‏بری (Inheritance) پیدا کنیم.
    دیدیم که ما یه نوع شیء داریم به نام CCar. یک نمونه (Instnace) ازش گرفتیم و اسمشو گذاشتیم Car. این Car یه سری اشیاء خصوصی‏سازی شده (private) داشت و یه سری خصوصیات عمومی (public)که واسه همه ( علی‏الخصوص کاربر) قابل دسترسی بود. ولی این Car ما خوش می‏تونه یه کلاس باشه. فرض کنید اسم این کلاس رو بزاریم CPeykan. پس تعریفش به این ترتیب می‏شه.

    [b]class[/b] CCar : [b][i]public[/i][/b] CObject
    {
    [b]private[/b]:
    ...
    [b]public[/b]:
    ...
    }

  17. #17
    جمع‏بندی تا اینجا:
    تا حالا با چند نوع دسته‏بندی در کلاسها آشنا شدیم: public و private. در ++C، یک نوع دسته‏بندیه دیگه هم وجود داره: protected. ولی قبلش باید یه آشناییه مقدماتی با ارث‏بری (Inheritance) پیدا کنیم.
    دیدیم که ما یه نوع شیء داریم به نام CCar. یک نمونه (Instnace) ازش گرفتیم و اسمشو گذاشتیم Car. این Car یه سری اشیاء خصوصی‏سازی شده (private) داشت و یه سری خصوصیات عمومی (public)که واسه همه ( علی‏الخصوص کاربر) قابل دسترسی بود. ولی این Car ما خودش می‏تونه یه کلاس باشه. فرض کنید اسم این کلاس رو بزاریم CPeykan. پس تعریفش به این ترتیب می‏شه:

    [b]class[/b] CCar : [b][i]public[/i][/b] CObject
    {
    [b]private[/b]:
    ...
    [b]public[/b]:
    ...
    }

  18. #18
    *کلی طول کشید تا من متنم رو Bold و Italic کنم. حالا که "پیش نمایش" گرفتم، می‏بینم هیچکدوم لحاظ نشدن. :(

  19. #19

    class CPeykan : public CCar
    {
    private:
    public:
    }

    ما اینجا یه قسمت جدید داریم: publicL CObject. (همینطور در تعریف کلاس CPeykan).
    ببینید، CCar یه شیء هستش پس تمام خصوصیات public شیء رو باید به ارث ببره. مثل قابل لمس و مشاده بودن، فضا گرفتن و ... چون اگه ما در مورد ...ی بخوایم حرف بزنیم (نمی‏دونستم اسمشو چی بزارم) که این خصوصیات رو نداشته‏باشه. اون ...، اصلا شیء محسوب نمی‏شه. پس CCar یه CObject هست و CPaykan یه CCar.
    *درک شی بودن هر چیزی مهمه چون حرف اصلی #C همینه: تمام کلاسهای ما بطور ضمنی از کلاسی بنام Object ارث برده می‏شن.*
    وقتی ما جلوی تعریف یه کلاس، اسم یه کلاس دیگه رو می‏بریم، در واقعا داریم کلاس والد (Parent) اون رو معرفی می‏کنیم:
    class CPeykan : public CCar {...};

  20. #20
    خب. گفتیم قسمت public حتی توسط کاربر هم قابل استفاده شدنه. ولی در بحث فنی، یه کلاس باید از سه قانون پیروی کنه:
    Inheritance, Isolation, Polymorphism

    Inheritance (ارث‏بری): که کمی باهاش آشنا شدیم. البته دوتا مفهوم و یه سری ملاحظات رو هم باید یاد بگیریم: protected و interface که آسیا به نوبت.
    Isolation (Encapsulatin) یعنی کلاس ما کپسوله و ایزوله باشه. یعنی به کاربر باید فقط و فقط امکاناتی رو بدیم که لازم داره. نi بیشتر و نه کمتر. مثلا تو مثال ماشین کاربر بی پدال ترمز نمی‏تونه از ماشین استفاده کنه. و در عین حال لزومی نداره خودشو درگیر همزمان‏سازی کار شمع و پیستون بکنه.
    Polymorphism (چندشکلی بودن): که ارث‏بری منشاءشه، یعنی شیء ما ممکنه در قابل یک سری شرایط یه سری عکس‏العمل نشون بده ولی child همون شیء (یا حتی خود همون شیء) در برابر همون شرایط ولی در زمان دیگه یه عکس‏العمل دیگه نشون بده. مثلا CPayekan کاربراتورش معمولیه ولی CPride کاربراتش انژکتوریه.

  21. #21
    Time Over
    ادامه دارد...
    (نظر یادتون نره)

  22. #22
    اقا من تازه به این فروم اومدم و امیدوارم از تجارب شما استفاده کنم مقاله شما در مورد oop جالب بود و پی گیری خواهم کرد ممنون

  23. #23
    اصلا کسی اینجا رو می‏خونه؟ چرا چیزی نمی‏گین؟

  24. #24
    سلام
    امیدوارم از کار خسته نشده باشین
    من از این صفحه خوب استفاده کردم :flower:
    خوشحال میشم کارتون رو ادامه بدین :flower: :موفق:

  25. #25
    با عرض ادب
    ممنون . منهم امیدوارم خسته نباشید :flower: :flower:
    اگر ممکنه در رابطه با اینکه آیا کلاسها در تمام زبانها یک تعریف را دارند یا خیر و اگر متفاوتند این تفاوت به چه صورت میباشد هم توضیح بدهید ممنون میشم .

  26. #26
    oop یه تکنولوژی برنامه‏نویسی و ارتباطی به زبان نداره. فقط توانایی زبانها در پیاده‏سازی مفاهیم اون، با هم فرق داره همین.

  27. #27
    کاربر دائمی آواتار Armanprogrammer
    تاریخ عضویت
    خرداد 1384
    محل زندگی
    کرج
    پست
    109
    شی گرایی یعنی استفاده کردن از CLASS ها که اولین نوع آن ++C بود

  28. #28
    کاربر دائمی آواتار Armanprogrammer
    تاریخ عضویت
    خرداد 1384
    محل زندگی
    کرج
    پست
    109
    مطالب شما در مورد شی گرایی بسیار جالب بود ممنون

  29. #29
    با سلام.
    oop فقط اسفاده از کلاس نیست. بنیانگذارش هم Pascal بود.

  30. #30
    خیلی عالی بود
    لطفا ادامه بدید تا استفاده کنیم

  31. #31
    کاربر جدید آواتار محمد صادق
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    اصفهان
    پست
    26
    سلام
    من جوابت را میدهم
    فقط بدانم که شما در باره شیء گرایی و برنامه نویسی چقدر می دانی؟
    آخرین ویرایش به وسیله محمد صادق : سه شنبه 29 فروردین 1385 در 12:16 عصر

  32. #32
    مطلبتون بسیار جالب ، پرمحتوا و قابل درک برای هر کسی است که ندونه شی گرا یعنی چه.
    از شما ممنونم و دوست دارم مطالب بیشتری را در این زمینه برای استفاده بنویسید
    باز هم ممنون

  33. #33
    کاربر دائمی آواتار sasan_vm
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    زاهدان
    پست
    494
    عضو جدید Mafia C

    شما که جواب هیچ یک از دوستان را نمی توانید بدهید لطف کنید هیچ پستی
    انجام ندهید و این قدر ادب و نزاکت خود را به رخ نکشید.

  34. #34
    نقل قول نوشته شده توسط محمد میرمصطفی
    بقیشو اگه دوست داری بعدا می‏گم.
    آخه الان باید برم.
    آقای محمد میرمصطفی,کاربر دایمی:اگه کسی سوالی پرسید مجبور نیستی جواب بدی.ولی اگه
    جواب دادی درست جواب بده.دوست داری بچه ها التماس کنن!؟!؟

  35. #35
    راستیش oop تو #C منو گرفت. انصافا خیلی قویتر شده. واسه همین داشتم اونو یاد می‏گرفتم. قواعد همونه، اوماکان و نحوه پیاده‏سازی تغییر کرده.

  36. #36
    کاربر جدید آواتار HASSELBLAD
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    Milano
    پست
    13
    سلام

    دوست عزیز آقای محمد مصطفی ،

    آموزش خیلی خوبی بود ، فقط نمی دونم چرا یه دفعه شبیه مناظره شد!!!

    راستش داشتم فکر می کردم که ای کاش اینقدر در کاوش نظرات دیگران اصرار نمی کردید و به توضیحات خودتون ادامه می دادید. شما که می دیدید این پست چند بار مشاهده شده و برخی دوستان در میان راه از شما تمجید و تشکر کردند.!

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

    باز هم متشکرم

  37. #37
    به چشم من با کمال میل این بحث رو ادامه می دم.ولی اگه اجازه بدین با کدهای #C چون C++‎Builder به مقدار زیادی فراموشم شده.اگه دوستان موافقن من قول می دم تا جایی پیش برم که OOP دیگه چیز ناگفته باقی نمونه.با عرض معذرت که هی من نظرخواهی می کنم.

  38. #38
    کاربر جدید آواتار HASSELBLAD
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    Milano
    پست
    13
    ممنون از شما به خاطر زحمتی که می کشید.

تاپیک های مشابه

  1. این خطا یعنی چی؟
    نوشته شده توسط javad3151 در بخش SQL Server
    پاسخ: 2
    آخرین پست: سه شنبه 14 شهریور 1385, 10:56 صبح
  2. کلاس بندی و شی گرا کردن یعنی چی؟(توضیح مختصر)
    نوشته شده توسط active66 در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 7
    آخرین پست: سه شنبه 02 خرداد 1385, 17:19 عصر
  3. مشخص کردن محل قرار کرفتن مکان نما یا tab از طریق کد نویسی؟
    نوشته شده توسط oghab در بخش برنامه نویسی در Delphi
    پاسخ: 5
    آخرین پست: دوشنبه 16 آبان 1384, 19:05 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •