۵ میلیون تومان ۳.۷۵ میلیون تومان
ثبت‌نام
سون لرن ثبت‌نام با آفر ویژه
مدرس:
کیوان علی محمدی
طول دوره:
۲۸ ساعت
تعداد جلسات:
۳۰ جلسه
هنر شی گرایی

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

مفاهیم گنگ و غیر قابل درک

 

سال‌ها پیش، خود من خیلی وقت‌ها از خودم می‌پرسیدم که واقعا این شی گرایی چه مزیتی می‌تونه داشته باشه؟! بیشتر به این فکر می‌کردم که مثلا توی زبانی مثل PHP همون نوشتن توابع می‌تونه روش بهتری برای نوشتن کدها باشه و اگه یه سری کلاس و شی داشته باشیم بیشتر می‌خواد پیچیدگی به پروژه اضافه کنه اما خب این تا زمانی بود که هنوز شی گرایی رو به درستی درک نکرده بودم. بعد از اون یکی از لذت‌های واقعی من در کدنویسی، مدل کردن و حل مساله با شی گرایی بوده و هست.

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

برای اینکه ببینیم آیا درک درستی از این موضوع داشتیم یا نه بهتره این سوالات رو از خودمون بپرسیم!

  • آیا درک مناسبی از انواع اشياء در شی گرایی دارم؟
  • می تونم مشخص کنم که در چه زمانی از چه نوعی شی استفاده کنم؟
  • می تونم مشخص کنم چه مقدار کد باید در یک کلاس وجود داشته باشه؟
  • می تونم مشخص کنم چه کدهایی به صورت استاتیک باشه و چه کدهایی غیر استاتیک؟
  • می تونم مشخص کنم تسک‌ها و عملیات‌ها رو به چه صورت بین کلاس‌های مختلف تقسیم کنم؟
  • می تونم یک مدل‌سازی خوب از شی گرایی برای یک مساله با توجه به نیازهای مطرح شده داشته باشم؟

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

خطر در کمین است!

 

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

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

آیا مشکل ما فقط درک اشتباه از شی گرایی است؟

 

خیلی‌ها این سوال براشون میاد که آیا مشکل ما فقط درک نادرست از شی گرایی است؟ آیا این محصول نرم افزاری تنها مشکلی که دارد پیاده سازی نشدن کدهای آن بر اساس یک ساختار درست شی گرایی است؟ هیچ مشکل دیگری ندارد؟

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

خب چرا به شی گرایی اشاره می‌کنیم؟ چون این موضوع نسبت به اکثر موارد بالا (به جز موارد کسب وکار) پایه‌ای‌تر محسوب می‌شه و اگر این رو اشتباه جلو بریم با یه درصد بالایی، در خیلی از موارد دیگه هم راه رو کج می‌ریم.

این دوره قراره چه کمکی بکنه؟

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

دوره به چه شکلی برگزار می‌شه؟

این دوره به صورت ویدیوهای از پیش ضبط شده (تهیه شده از کلاس آنلاین) ارائه خواهد شد و محتوای ارائه شده در دوره به صورت سرفصل به سرفصل هست که در این بخش‌ها صرفا کدهایی رو داریم که به عنوان Sample نوشته می‌شن، اما در بخش انتهایی دوره یک پروژه Meetup داریم که با فریمورک لاراول اون رو پیاده سازی می‌کنیم تا در یک پروژه با هدف مشخص استفاده از روش‌های ارائه شده در دوره مرور بشه.

مدرس دوره کیوان علی محمدی (مهندس نرم افزار در شرکت LTP (هلند))
۳۰ جلسه
فصل ۱ درک شی گرایی
فصل ۲ سرویس‌ها در شی گرایی
فصل ۳ اشیاء غیر سرویسی در شی گرایی
فصل ۴ پیاده سازی پروژه Meetup با لاراول
ضمانت کیفیت دوره
گارانتی یک هفته‌ای گارانتی بازگشت وجه تا یک هفته، ثبت‌نام شما در دوره‌های سون‌لرن بدون ریسک مالی خواهد بود.
امکان تغییر مسیر آموزشی شما تا مدت ۲ ماه توانایی تغییر مسیر آموزشی خود را خواهید داشت.
یادگیری از بهترین‌‌ها از مدرسین متخصص در بهترین شرکت‌های ایران مهارت مورد نیاز بازار کار را یاد می‌گیرید.
مشاوره اختصاصی برای شروع یادگیری و یافتن بهترین مسیر شغلی، مشاوره اختصاصی دریافت خواهید کرد.
مدرسین دوره
کیوان علی محمدی مهندس نرم افزار در شرکت LTP (هلند) روزمه و نمونه تدریس
  • مهندس نرم افزار در شرکت LTP (هلند) 
  • Technical Team Lead در شرکت اسنپ فود 
  • مهندس نرم افزار در سون لرن 
  • مهندس نرم افزار در شرکت کسب و کار ایرانیان - چیلیوری 
  • توسعه دهنده فول استک PHP و JavaScript در استارتاپ فول فکر 
  • 9 سال تجربه حرفه ای در توسعه نرم افزارهای تحت وب 
  • مدرس ۳ دوره متخصص وردپرس سون لرن 
  • تدریس بیش از 22000 هزار نفر/ساعت دوره و کارگاه حضوری 
  • تولید بیش از 11000 هزار ساعت آموزش ویدیویی برنامه نویسی وب
مشاوره دوره اگر نیار به مشاوره داری فرم زیر رو پر کن ثبت درخواست مشاوره
ثبت نام / پرداخت اینترنتی جهت پرداخت، فرم زیر را تکمیل نمایید
روش پرداخت خود را انتخاب کنید