به همراه مثالها و تمرینهای کاربردی در پایتون


۶۹۰+
کدآموز
۱۰+
تمرین عملی
۳۵+
درسنامه آموزشی
به همراه گواهی معتبر
۶۰ روز مهلت گذراندن دوره
به همراه مثالها و تمرینهای کاربردی در پایتون
۳۰٪
کاهش خطاهای نرمافزاری با استفاده از الگوهای طراحی
متداولترین
نیازمندی برای مصاحبههای تکنیکال شرکتهای حوزه IT
۲۰٪
کاهش زمان توسعه نرمافزار با استفاده از الگوهای طراحی
معرفی
مخاطبین
پیشنیازها
سرفصلها
اساتید
0 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1
در دنیای وسیع توسعه نرمافزار، عبارت «چرخ را دوباره اختراع نکن» بسیار شنیده میشود. الگوهای طراحی یا Design Patterns مانند یک نقشه به ما کمک میکنند که نرمافزارهای بهتری در زمان کمتری تولید کنیم و از چرخهای ساخته شده به شکل بهتری استفاده کنیم. در این دوره از کوئرا کالج با دیزاینپترنهای پرکاربرد در توسعهی نرمافزار آشنا میشوید و به صورت عملی آنها را فرا میگیرید.
این دوره مناسب شما است اگر...
• مشتاقید به بازار پردرآمد برنامهنویسی و حوزهی نرمافزار وارد شده و آیندهی شغلی خود را رقم بزنید.
• علاقهمندید که کدنویسی خود را بهبود داده و کدهای تمیزتر و خواناتری بزنید.
• بازار کار و حقوق بالای برنامهنویسان در داخل و خارج ایران برایتان جذاب است.
• میخواهید دیزاین پترنها را به صورت عملی و یکبار برای همیشه به شکل اصولی بیاموزید.
این دوره مناسب شما نیست اگر...
• هنوز فکر میکنید که شرکتها برای استخدام به مدرک دانشگاهی شما توجه میکنند.
• تجربهی عملی چندین هزار خط کدنویسی برایتان ارزشی ندارد.
• حاضر نیستید در هفته ۵ ساعت برای یادگیری، پیشرفت و رشد درآمدتان زمان بگذارید.
• میخواهید دیزاین پترنها را به طور سطحی و گذرا بیاموزید.
پیشنیازها
لازم است...
علاقه و پشتکار داشته باشید.
به یک زبان برنامهنویسی (ترجیحاً پایتون) مسلط باشید.
لازم نیست...
در رشتهی کامپیوتر تحصیل کرده باشید.
درسنامه
تمرین
اهداف فصل
درسنامه
الگوی طراحی Singleton
درسنامه
الگوی طراحی Iterator
درسنامه
الگوی طراحی Factory Method
درسنامه
ارسال کالا
۱۰۰ امتیاز
تمرین
الگوی طراحی Observer
درسنامه
الگوی طراحی Mediator
درسنامه
الگوی طراحی State
درسنامه
الگوی طراحی Strategy
درسنامه
آف
۱۰۰ امتیاز
تمرین
سیستم مانیتورینگ
درسنامه
الگوی طراحی Visitor
درسنامه
مساحتسنج
۱۰۰ امتیاز
تمرین
اهداف فصل
درسنامه
الگوی طراحی Facade
درسنامه
الگوی طراحی Proxy
درسنامه
الگوی طراحی Command
درسنامه
الگوی طراحی Chain Of Responsibility
درسنامه
الگوی طراحی Template Method
درسنامه
محرّک
۱۰۰ امتیاز
تمرین
الگوی طراحی Adapter
درسنامه
الگوی طراحی Composite
درسنامه
الگوی طراحی Flyweight
درسنامه
تودولیست
۱۰۰ امتیاز
تمرین
الگوی طراحی Prototype
درسنامه
کپیگر
۱۰۰ امتیاز
تمرین
اهداف فصل
درسنامه
معرفی
درسنامه
اصل مسئولیت واحد
درسنامه
ریویو: SRP
۱۰۰ امتیاز
تمرین
اصل باز بسته
درسنامه
ریویو: OCP
۱۰۰ امتیاز
تمرین
اصل جایگزینی لیسکوف
درسنامه
ریویو: LSP
۱۰۰ امتیاز
تمرین
اصل جداسازی اینترفیس
درسنامه
ریویو: ISP
۱۰۰ امتیاز
تمرین
اصل وابستگی معکوس
درسنامه
ریویو: DIP
۱۰۰ امتیاز
تمرین
اهداف فصل
درسنامه
معماری لایهای
درسنامه
معماری MVVM و MVC
درسنامه
تستنویسی و ماکینگ
درسنامه
بدلکاری
۱۰۰ امتیاز
تمرین
تلهها و Bad Smells
درسنامه
جمعبندی و ادامه مسیر
درسنامه

آموزش دیزاین پترنها در پایتون
۱۰+ تمرین عملی
۳۵+ درسنامه آموزشی
سوالات متداول
شما در هر زمانی که بخواهید میتوانید در دوره ثبتنام و دوره را آغاز کنید.
پیشنیاز این دوره، تسلط به یک زبان برنامهنویسی (ترجیحاً پایتون) است.
اگر هنوز به این زبان مسلط نیستید، پیشنهاد میکنیم پیش از شروع این دوره، دورهٔ «برنامهنویسی پایتون پیشرفته و تفکر شیگرا» را بگذرانید.
خیر؛ نیازی نیست!
اگر علاقهمند به یادگیری دیزاین پترنها هستید، میتوانید در این دوره شرکت کنید.
بله؛ شما میتوانید از درسنامههایی که از قبل بلد هستید سریع بگذرید، اما در نکات گفته شده در درسنامهها موارد بسیاری وجود دارد که میتواند دانش شما را تکمیل کند؛ پس پیشنهاد میکنیم که آنها را هم مطالعه کنید.
همچنین حتما میدانید که هرچقدر در برنامهنویسی تمرین کنیم، باز هم کافی نیست؛ پس پیشنهاد میکنیم که تمرینات مربوط به این مباحث را نیز حل کنید تا یادگیری کاملی داشته باشید.
محتوای دوره به صورت درسنامههای متنی و در بعضی قسمتها ویدیوهای آموزشی میباشد.
پس از درسنامهها، نوبت به تمرین و حل مسئله میرسد. تعدادی تمرین مطرح میشود که شما دستورات آنها را نوشته و ارسال میکنید. سامانه داوری خودکار Quera در مدت کوتاهی کد شما را تصحیح میکند و نمره میدهد.
در صورتی که نمرهٔ کامل نگرفتید نگران نباشید، میتوانید کد خود را تغییر دهید و دوباره ارسال کنید.
در طول این دوره تمرینهای متعددی وجود دارد تا شما با انجام آنها، مهارت خود را تقویت کنید.
در کنار این تمرینها، داوری آنلاین نیز وجود دارد. یعنی کد ارسالی شما در همان لحظه توسط سیستم، داوری و امتیازدهی میشود تا اشکالاتتان را پیدا کرده و آنها را رفع کنید.
شما بعد از رسیدن به فصل «دانش پایه»، ۶۰ روز فرصت دارید تا دوره را به اتمام برسانید و بعد از اتمام دوره برای همیشه به تمام محتواهای دوره دسترسی خواهید داشت.
همچنین اگر تا انتهای زمانِ گفتهشده نتوانستید دوره را تمام کنید نگران نباشید، چون امکان تمدید دوره وجود دارد!
در انتهای دوره، انواع مختلف دیزاین پترنها را به خوبی فرا گرفتهاید و میتوانید در پروژههای مختلفی که انجام میدهید، از این الگوها استفاده کنید.
یک الگوی طراحی در برنامهنویسی، راهحلی برای یک مشکل متداول در طول طراحی و توسعه نرمافزار است که میتوان بارها و بارها از آن استفاده کرد. این راهحل، رویکردی ساختارمند برای حل چالشهای طراحی و اجرا ارائه میکند و به توسعهدهندگان این امکان را میدهد تا کدی با انعطافپذیری بالاتر، مقیاسپذیری بیشتر و مدیریت آسانتر ایجاد کنند.
الگوهای طراحی بهترین روشها و راهحلهای اثباتشدهای را که در طول زمان توسط توسعهدهندگان با تجربه بهبود یافتهاند، به تصویر میکشند. آنها یک زبان مشترک و مجموعهای از مفاهیم را برای بحث و ارتباط در مورد تصمیمات طراحی و الگوهای تعامل بین کلاسها یا اشیاء فراهم میکنند.
با استفاده از الگوهای طراحی، توسعهدهندگان میتوانند قابلیت استفاده مجدد، نگهداری و مقیاسپذیری کد را بهبود بخشند و همچنین طراحی و معماری کلی سیستمهای نرمافزاری را بهبود بخشند. با این حال، انتخاب و پیادهسازی الگوهای طراحی با تفکر و بر اساس نیازها و محدودیتهای خاص پروژه بسیار حیاتی است تا از اور-انجینیرینگ یا پیچیدگی غیرضروری جلوگیری شود.
مفهوم الگوها ابتدا توسط کریستوفر الکساندر در کتاب "زبان الگو: شهرها، ساختمانها، ساخت و ساز" توضیح داده شد. این کتاب یک "زبان" برای طراحی محیط شهری توصیف میکند. واحدهای این زبان، الگوها هستند. این الگوها ممکن است بگویند که پنجرهها چقدر باید بلند باشند، یا یک ساختمان چند طبقه باشد، یا نحوه اندازهگیری مناطق سبز در یک محله چطور باشد و غیره.
این ایده توسط چهار نویسنده، اریک گاما، جان ولیسیدس، رالف جانسون و ریچارد هلم، به عنوان گروه چهارگانه (Gang of Four)، ادامه یافت. در سال 1994، آنها کتاب "الگوهای طراحی: عناصر نرمافزار شیءگرا بازمند" را منتشر کردند که پای مفهوم الگوهای طراحی را به برنامهنویسی باز کردند. این کتاب شامل 23 الگو بود که مسائل مختلف طراحی شیءگرا را حل میکرد و به سرعت به یکی از پرفروشترین کتابها تبدیل شد. به دلیل نام طولانی آن، مردم آن را "کتاب گروه چهارگانه" مینامیدند که به زودی به سادگی به "کتاب گواف" کوتاه شد.
از آن زمان، دهها الگوی شیءگرا دیگر کشف شدهاند. "رویکرد الگو" در زمینههای برنامهنویسی دیگر نیز بسیار محبوب شد، بنابراین الگوهای بسیاری خارج از طراحی شیءگرا نیز وجود دارند.
الگوهای طراحی به سه نوع اصلی تقسیم میشوند:
این الگوها بر روی مکانیسمهای ایجاد اشیاء تمرکز دارند و راههایی برای ایجاد اشیاء به گونهای ارائه میدهند که انعطافپذیر بوده و با نیازهای خاص برنامه سازگار باشند. نمونههایی از این نوع الگو شامل الگوی تکنمونه (Singleton)، الگوی کارخانه (Factory) و الگوی سازنده (Builder) هستند.
این الگوها با ترکیب کلاسها و اشیاء برای ایجاد ساختارهای بزرگتر و در عین حال حفظ انعطافپذیری و کارایی سر و کار دارند. این نوع الگوها اطمینان حاصل میکنند که کلاسها و اشیاء به طور مؤثر با یکدیگر کار کنند تا به هدف مشترکی دست یابند. نمونههایی از الگوهای ساختاری شامل الگوی تطبیقدهنده (Adapter)، الگوی تزئینکننده (Decorator) و الگوی ترکیبی (Composite) هستند.
این الگوها بر روی تعاملات و ارتباط بین اشیاء و کلاسها تمرکز دارند. آنها راهحلهایی برای مدیریت موثر جریان کنترل، مسئولیتها و رفتار بین اشیاء فراهم میکنند. نمونههایی از این الگوها شامل الگوی مشاهدهگر (Observer)، الگوی استراتژی (Strategy) و الگوی دستور (Command) هستند.
تضمین میکند که تنها یک نمونه از یک کلاس ایجاد میشود و یک نقطه دسترسی جهانی به آن فراهم میکند. در مواردی کاربرد دارد که میخواهید یک نمونه تک و مشترک از یک کلاس در سراسر برنامه داشته باشید.
این الگو راهی برای ساخت اشیاء پیچیده به صورت مرحله به مرحله ارائه میدهد و به شما این امکان را میدهد که نمایشهای مختلف یک شیء را با استفاده از همان فرآیند ساخت متفاوت ایجاد کنید.
این الگو یک رابط برای ایجاد اشیاء فراهم میکند، اما زیرکلاسها را مجاب میکند که کدام کلاس را نمونهگیری کنند. در مواردی کاربرد دارد که میخواهید فرآیند ایجاد شیء را انتزاعی کنید و اشیاء را بدون مشخص کردن دقیق کلاس ایجاد کنید.
الگوی تطبیقدهنده به عنوان یک پل بین دو رابط عمل میکند و رابط یک کلاس را به رابط دیگر تبدیل کرده و اینترفیس یک کلاس را به اینترفیس دیگری که مشتریان انتظار دارند تبدیل میکند.
این الگو با بستهبندی یک شیء با یک یا چند شیء تزئینکننده، اجازه میدهد که به صورت پویا توابع یا ویژگیهای جدید به آن اضافه شود.
یک رابطه یک به بسیار بین اشیاء را تعریف میکند، بنابراین هنگامی که یک شیء وضعیت خود را تغییر دهد، همه وابستگان آن به طور خودکار بهروزرسانی میشوند.این الگو معمولا در سیستمهای پردازش رویداد، بهروزرسانی واسط کاربری و جداسازی مولفهها استفاده میشود.
الگوهای طراحی یک مجموعه از راهحلهای امتحانشده و موثر برای مسائل رایج طراحی نرمافزار هستند که توسط توسعهدهندگان ماهر و باتجربه در زمینه شیءگرایی ایجاد شدهاند. هر توسعهدهنده نرمافزار باید دانشی از الگوهای طراحی داشته باشد زیرا:
این الگوها زندگی ما را آسانتر میکنند؛ زیرا الگوهای طراحی، سیستمهای شیءگرا را انعطافپذیرتر، مقاومتر در برابر تغییرات و برای نگهداری سادهتر میکنند.
ما میتوانیم تنها با یادگیری الگوهای طراحی، مهارتهای برنامهنویسی شیءگرای خود را بهبود بخشیم؛ زیرا الگوهای طراحی با راهنمایی ما، به ما آموزش میدهند که چگونه مسائل تکرار شونده طراحی شیءگرا را حل کنیم.
الگوهای طراحی یک زبان مشترک تعریف میکنند که یک توسعهدهنده نرمافزار میتواند برای ارتباط و همکاری با سایر توسعهدهندگان از آن استفاده کند. توسعهدهندگان میتوانند از نام الگوی طراحی برای توضیح بهینه ایدئولوژی پشت طراحی برنامه استفاده کنند.
الگوهای طراحی در اکثر زبانهای برنامهنویسی شیءگرا و سطح بالا قابل استفاده هستند و دانستن آنها میتواند به توسعهدهندگان کمک کند تا نرمافزارهایی مقیاسپذیر، قابل نگهداری و انعطافپذیر بنویسند. بسته به زبان برنامهنویسی که استفاده میکنید، پیادهسازی الگوهای طراحی ممکن است اندکی متفاوت باشد، اما اصول کلی آنها یکسان است.
اگر قصد یادگیری زبانهای شیءگرا را دارید، میتوانید با آموزش جاوا یا آموزش سی شارپ شروع کنید، زیرا این زبانها پایه و اساس دیزاین پترنهای کلاسیک را در خود دارند.
در زبانهای سطح پایینتر مانند آموزش C++، الگوهای طراحی اهمیت زیادی دارند، بهویژه در توسعه نرمافزارهای سیستمی و گیمینگ.
همچنین، اگر در حال توسعه اپلیکیشنهای وب و فرانتاند هستید، درک دیزاین پترنها هنگام یادگیری آموزش جاوا اسکریپت به شما کمک میکند تا کدهای بهینهتر و مقیاسپذیرتری بنویسید.
برای کسانی که در زمینه دادهکاوی و یادگیری ماشین کار میکنند، آموزش پایتون میتواند انتخاب مناسبی باشد، زیرا بسیاری از الگوهای طراحی در پایتون برای بهینهسازی کدنویسی و پردازش دادهها استفاده میشود.
در نهایت، دانستن الگوهای طراحی در هر زبان برنامهنویسی میتواند شما را به یک توسعهدهندهی حرفهایتر و کارآمدتر تبدیل کند.