شی گرایی در 20 دقیقه

شی گرایی چیست ؟

 احتمالا یک تیتر مربوط به شی گرایی را در هر کتاب یا ویدئویی که قرار است برنامه نویسی را یاد بدهد، خواهی دید.

علاوه بر آن اکثر زبان های برنامه نویسی به سمت شی گرا بودن می روند.

پس می توان گفت موضوع بسیار مهمی است.

در واقع شی گرایی چیزی است که باعث می شود در 3 ماه برنامه نویس شوی و پروژه های تجاری را انجام دهی.

ادعایی که به نظر بعضی از افراد امکان پذیر نیست. 

در ویدئو زیر مفهوم شی گرایی توضیح داده شده و خواهی دید چطور “برنامه نویس شدن در 3 ماه ” را امکان پذبر می کند.

ما ناخودآگاه تمام موجودات را به صورت شی گرا نگاه می کنیم…

۱۷ پاسخ

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

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

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

  3. سلام . ممنون بابت توضیحاتتون درباره شی گرایی (خیلی خوب بود).
    چند سوال داشتم فرق بین نمونه سازی با شی چیه ؟ وقتی میگیم به تعداد زیادی نمونه تولید میکنیم همون منظور این هست که به تعداد زیادی شی تولید میکنیم؟
    کمی درباره کپسوله سازیencapsulation و abstract و interface در جهان واقعی صحبت کنید.
    با تشکر فراوان

    1. نگاه کنید ما دو مفهوم داریم یکی کلاس و دیگری شی هست
      برای ایجاد اشیا از کلاس از مفهوم نمونه گیری استفاده می کنیم. برای نمونه گیری از متد سازنده یا Constructor استفاده می کنیم.
      کپسوله سازی برای این استفاده می شود که ما مستقیما به چیزی دسترسی نداشته باشیم مثلا دقت کنید ما نمی تونیم به معده خودمون دسترسی داشته باشیم بلکه با واسطه ای به نام دهان غذا را می گیریم چک می کنیم و سپس اگر داده درست بود بازهم تبدیل می شود به غذای خرده و بعد وارد معده می شود. حالا ما در کپسوله سازی یک متغیر داریم که سن را نگه می دارد و نمی خواهیم افراد زیر ۱۸ سال ثبت شوند این متغیر را با کلمه private در اشیا غیر قابل دسترس می کنیم. و بعد توسط یک متد با بررسی داده مثل همان دهان امکان دسترسی به متغیر را می دهیم.

      Abstract class یا کلاس انتزاعی کلاسی است که برای وراثت استفاده می شود و برای خلق شی استفاده نمی شود چون به اندازه کافی به تکامل نرسیده.

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

      مثال یک رستوران دو نوع مشتری دارد
      مشتری حقیقی
      مشتری حقوقی

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

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

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

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

  4. سلام آقای مدحج وقت بخیر
    میخواسم بدونم برخی کتاب های الگوریتم و ریاضیات گسسته چقدر در تفکر برنامه نویسی نقش دارن.
    و اینکه دنیای هوش مصنوعی هم که مباحثش داغ شده چشم اندازتون در این مورد چی هست.

    1. سلام و درود به قول عرفا پای عقلا چوبین بود.
      در زمانی که در دانشگاه تدریس می کردم برخی از همکاران معتقد بودن ریاضی گسسته نقش بسیار مهمی برای برنامه نویس شدن دارد و انصافا هم در این دروس قوی بودن اما وقتی دیدن درآمد ما در شرکت نرم افزاری بالاست برای خودشان دفتر گرفتن و شرکت زدن اما به ۸ ما نکشیده بود با کلی مشتری ناراضی جمع کردن شرکت شان را. نرم افزار چیزی نیست جز شبیه سازی جهان هستی و ماها هر چیزی رو شبیه سازی می کنیم و ممکنه یکی از آن چیزها ریاضیات باشد، پزشکی باشد، مکانیکی باشد ، عمرانی یا صنعت آرایشی باشد و برای هر کدام نیاز داریم دانشور آن رشته کنار ما باشد وقتتون را برای ریاضیات تلف نکنید جون مجبور می شوید حسابدار پزشک معمار یا هرچیز دیگری هم بشوید به جای آموختن این موارد فلسفه نگاه به جهان را در خود تقویت کنید و در زمان پروژه گرفتن مثل یک بازیگر در آن شغل باشید و آن پروژه را بسازید.
      در رابطه با هوش مصنوعی که قطعا عالیه و آینده و الان هم نیازه اما در ابتدا فرهنگ برنامه نویسی و تولید نرم افزار تجاری را در خود تقویت کنید

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

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

    1. خوب دوست عزیز مشکلتون را توضیح ندادید که در فرانت مشکل دارید یا بکند. اگر در فرانت باشد باید اصول کار با div و Box modeling را خوب بدانید و بدنه یک وبسایت را یک بار خوب یاد بگیرید. اگرم با بکند مشکل دارید احتمالا فرهنگ برنامه نویسی شما قوی نیست ویدئو فرهنگ برنامه نویسی را ببینید سوال دیگری داشتید دقیق بپرسید در خدمتم

  7. با سلام
    من مدت ۲ سال که هم بکند و هم فرانت اند و دارم یاد مگیرم و اینطور بگم که دنیایی از کد رو واقعا بلدم و حفظم اما واقعا حتی هنوزم میخوام یک پروژه بگیرم میترسم و وقتی میخوام مثلا یک سایت ساده طراحی کنم کل ذهنم دچار سردرگمی میشه و با اینکه اکثر کدها رو میدونم ، نمیدونم از چه کدی ، کجا باید استفاده کنم یا بهتر بگم ترتیب برنامه نویسیی رو اصلا نمیدونم و کاملا سردرگم میشم
    بلد نیستم برای طراحی یک سایت باید چه اطلاعاتی داشته باشم ؟ چطور اطلاعاتم رو ترتیب دهی کنم ؟ و از کجا شروع کنم با این اطلاعات ؟و چه طوری تمومش کنم؟

    1. مشکلتون مکانیزم طبیعی ذهنه و کدنویسی یاد گرفتید و هنوز برنامه نویس نشدید. با تشکر از شما

  8. سلام چیزیی که من از گفته های شما فهمیدم این بود مثلا جهان یک حیوان رو خلق میکنه و این حیوان شامل پرنده ها دوزیستان آبزیان وقتی ما انسانها مثلا با یک ماهی روبرو میشیم اولین چیزی که به ذهنمون میاد حیوان است مثال دیگه من خودم هیچ بار سفره ماهی از نزدیک ندیدم ولی اگر ببینم سریع میفهمم این یک حیوان است از نوع آبزیان چرا به خاطر اینکه از قبل نوع حیوان و نوع انسان در ذهن من نقش بسته و سریع تشخص میدم
    بعد چیزی که میمونه همین انسانهای خودمون اومدن با نگاه کردن مثلا به پرندگان به ذهنشون خطور کرده که بیان از این پرنده یک نمونه بگیرن و تمام ویژگی هاش و سیستم زمین و آسمان رو رعایت کنند تا بتونند یک شی هواپیما که مانند پرنده است را به وجود بیارن مثلا دیدن چطوری این پرنده وقتی پر میزنه تو آسمون میتونه رفت و آمد داشته باشه مثلا براساس قانون جاذبه فلان اگر شی ایی وزنش و سرعتش با هوا برابری داشته باشد میتونه تو آسمون باشه و بر این اساس یک شی هواپیما ساختن بعد اومدن از همین شی هواپیما .هلیکوپتر ساختن و..

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *