آموزش پایتون: اصول جامد و الگوهای طراحی برتر

Python: SOLID Principles and Top Design Patterns

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
توضیحات دوره: یاد بگیرید که چگونه کد پایتون خود را از طریق تسلط بر اصول S.O.L.I.D و الگوهای طراحی برتر GoF بهبود بخشید. *مسلط* به مهمترین و اساسی ترین الگوهای طراحی در مهندسی نرم افزار مدرن در اکوسیستم *Python* اصول طراحی S.O.L.I.D را یاد بگیرید و آن را درونی کنید، مانند *توسعه دهندگان ارشد*. درک عمیقی از چه، چرا و چگونه برای آن *الگوهای طراحی اساسی* داشته باشید. یک نمایشگاه کامل معماری (با UML) از هر الگو و همچنین سناریوهای *دنیای واقعی* با مثال های کدگذاری عملی برای هر الگو دریافت کنید. روی تکالیف *پایتون* شی گرا کار کنید و آنها را کامل کنید که درک شما از آن الگوها را عمیق تر و اساسی تر می کند. بیاموزید که چگونه *بهترین الگو* را برای چالش معماری داده شده شناسایی کنید. پیش نیازها: فرض بر این است که شما راه خود را در اطراف پایتون می دانید. فقط تجربه اولیه مورد نیاز است. اگر به آن نیاز دارید، یک تجدید کننده OOP داریم. شما باید بتوانید کد پایتون را که همراه با دوره ارائه شده است اجرا کنید. ما از کد ویژوال استودیو به عنوان IDE خود استفاده می کنیم، اما شما می توانید از هر IDE که دوست دارید استفاده کنید. دسترسی به کامپیوتر. یک سیستم عامل مک، ویندوز یا لینوکس به همان اندازه خوب است. همه ابزارها مستقل از سیستم عامل هستند.

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

این دوره شما را در مسیر رسیدن به آن مقصد قرار می دهد.

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

اما به جای یادگیری همه الگوهای طراحی، مهم‌ترین و برترین الگوهای طراحی GoF را برای شما انتخاب کرده‌ایم.


همه اینها در زمینه پایتون شی گرا .


ما با درک کامل از اصول طراحی S.O.L.I.D و نحوه ارتباط آنها با آن الگوهای طراحی شروع می کنیم. ما همه چیز را در زمینه مشکلات دنیای واقعی و همچنین نمونه‌های کد خاص توضیح می‌دهیم.

اگر به یک تجدید کننده OOP Python نیاز دارید، ما آن را برای شما داریم. همه چیز از کلاس ها تا رابط ها و کلاس های انتزاعی پوشش داده شده است. همچنین نحوه کدنویسی با استفاده از pygame (پلتفرم بازی پایتون.)

را به شما نشان خواهیم داد

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


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

  1. زمان‌بندی‌ها با تغییر نیازمندی‌ها طولانی می‌شوند.

  2. چند برنامه‌نویس برای هماهنگ کردن تلاش‌های خود مشکل دارند.

  3. افزونگی کد.

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

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


به این ترتیب، همه همان دیدگاه را می‌فهمند و دنبال می‌کنند.


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

همه این عناصر مشترک از استانداردهای خاصی پیروی می کنند که در طی سالیان متمادی و در بسیاری از پروژه ها بهبود یافته اند. آنها به خوبی درک شده اند و تقریباً مانند دستور العمل ها قابل استفاده هستند.

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

شناخته می شوند


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

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


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

ما این را به روشی کمی متفاوت از آنچه احتمالاً قبلاً آموزش داده اید به شما آموزش خواهیم داد. ما یک رویکرد عملی (یعنی نمونه‌های خاص) خواهیم داشت، اما قدرت الگوهای طراحی از «مفهوم» آن‌ها نشأت می‌گیرد و مفهوم آن الگوهای طراحی را به شما آموزش می‌دهیم تا کاملاً بتوانید آنها را تغییر دهید و مطابق با نیاز خود تغییر دهید. علاوه بر این، نحوه ترکیب همه آن الگوها را در چیزی بزرگتر بررسی خواهیم کرد: یک معماری.


یک معماری خوب طراحی شده این چیز جادویی است که در آن کل بزرگتر از مجموع اجزای آن است.

این چیزی است که ما سعی خواهیم کرد به شما آموزش دهیم.


سرفصل ها و درس ها

معرفی Introduction

  • الگوهای طراحی چیست و چرا به آنها نیاز داریم؟ What are Design Patterns and why do we need them?

  • الگوهای طراحی پوشش داده شده در این دوره. The Design Patterns Covered in This course.

  • آزمون سریع در مورد خانواده الگوهای طراحی Quick Quiz about design pattern families

  • چرا معماری نرم افزار. The WHY Of Software Architecture.

  • چرا از UML استفاده کنیم؟ Why use UML?

  • کد سازمان‌یافته در مقابل کد سازمان‌یافته. Organized vs. Unorganized code.

  • راه اندازی IDE و محیط پایتون Setting Up the IDE and Python Environment

  • *اختیاری*: تجدید کننده UML. *OPTIONAL*: UML Refresher.

Python OOP *Refresher* Python OOP *Refresher*

  • Python OOP Refresher - Theory Part #1 Python OOP Refresher - Theory Part #1

  • Python OOP Refresher - Theory Part #2 Python OOP Refresher - Theory Part #2

  • Python OOP Refresher - مطالعات کد قسمت شماره 1 Python OOP Refresher - Code Studies Part #1

  • کار با یک کلاس ساده در پایتون Working with a Simple Class in Python

  • Python OOP Refresher - Code Studies Part #2 Python OOP Refresher - Code Studies Part #2

  • کار با Class Aggregation Working with Class Aggregation

  • Python OOP Refresher - مطالعات کد قسمت شماره 3 Python OOP Refresher - Code Studies Part #3

  • کار با کلاس های انتزاعی Working with Abstract Classes

  • Python OOP Refresher - مطالعات کد قسمت شماره 4 Python OOP Refresher - Code Studies Part #4

  • کار با Class Encapsulation Working with Class Encapsulation

  • Python OOP Refresher - مطالعات کد قسمت شماره 5 Python OOP Refresher - Code Studies Part #5

  • Python OOP Refresher - مطالعات کد قسمت شماره 6 Python OOP Refresher - Code Studies Part #6

  • Python OOP Refresher - مطالعات کد قسمت شماره 7 Python OOP Refresher - Code Studies Part #7

  • تمرین شماره 1 کار با قراردادهای رابط Working with Interface Contracts Exercise#1

  • تمرین شماره 2 کار با قراردادهای رابط Working with Interface Contracts Exercise#2

چه چیزی یک معماری عالی را می سازد؟ What makes a Great Architecture?

  • نشانه های معماری خوب Hallmarks of Good Architecture.

  • اصول طراحی S.O.L.I.D. S.O.L.I.D Design Principles.

  • SOLID *جلسه تمرین* - اصل مسئولیت واحد (SRP) SOLID *Practice Session* - Single Responsibility Principle(SRP)

  • جامد *جلسه تمرین* - اصل باز/بسته (OCP) SOLID *Practice Session* - Open/Closed Principle(OCP)

  • جامد *جلسه تمرین* - اصل تعویض لیسکوف (LSP) SOLID *Practice Session* - Liskov Substitution Principle (LSP)

  • SOLID *جلسه تمرین* - اصل جداسازی رابط (ISP) SOLID *Practice Session* - Interface Separation Principle (ISP)

  • جامد *جلسه تمرین* - اصل وارونگی وابستگی (DIP) SOLID *Practice Session* - Dependency Inversion Principle (DIP)

  • آزمون اصول جامد SOLID Principles Quiz

الگوی طراحی Singleton Singleton Design Pattern

  • درک الگوی سینگلتون Understanding the Singleton Pattern

  • الگوی Singleton - ملاحظات معماری قسمت شماره 1 - رویکرد ساده Singleton Pattern - Architectural Considerations Part#1 - Simple Approach

  • الگوی Singleton - ملاحظات معماری قسمت شماره 2 - استفاده از متاکلاس Singleton Pattern - Architectural Considerations Part#2 - Using Metaclasses

  • الگوی Singleton - ملاحظات معماری قسمت شماره 3 - Thread-Safety Singleton Pattern - Architectural Considerations Part#3 - Thread-Safety

  • مسابقه تک تن Singleton Quiz

  • کدنویسی بخش شماره 1 - پیاده سازی الگوی تک تن در پایتون Coding Part#1 - Implementing Singleton Pattern in Python

  • کدنویسی قسمت شماره 2 - نمونه های عملی Singleton در پایتون Coding Part#2 - Practical Examples of Singleton In Python

  • کار با الگوی Singleton Working with the Singleton Pattern

  • تمرینات کدگذاری الگوی تک تن **اضافی** Singleton Pattern Coding **Extra** Exercises

الگوی طراحی روش کارخانه Factory Method Design Pattern

  • درک الگوی روش کارخانه Understanding Factory Method Pattern

  • ملاحظات معماری برای الگوی روش کارخانه Architectural Considerations for Factory Method Pattern

  • کدگذاری الگوی روش کارخانه در پایتون Coding the Factory Method Pattern in Python

  • تمرین با الگوی روش کارخانه شماره 1 Working with the Factory Method Pattern Exercise #1

  • تمرین با الگوی روش کارخانه شماره 2 Working with the Factory Method Pattern Exercise #2

  • آزمون الگوی روش کارخانه Factory Method Pattern Quiz

  • تمرینات کدگذاری الگوی روش کارخانه **اضافی** Factory Method Pattern Coding **Extra** Exercises

الگوی طراحی سازنده Builder Design Pattern

  • درک الگوی طراحی سازنده Understanding Builder Design Pattern

  • ملاحظات معماری برای الگوی طراحی سازنده Architectural Considerations for Builder Design Pattern

  • کدنویسی الگوی سازنده در پایتون Coding the Builder Pattern in Python

  • کار با تمرین الگوی سازنده Working with the Builder Pattern Exercise

  • آزمون الگوی سازنده Builder Pattern Quiz

  • تمرینات کدگذاری الگوی طراحی سازنده **اضافی** Builder Design Pattern Coding **Extra** Exercises

الگوی طراحی آداپتور Adapter Design Pattern

  • آشنایی با الگوی طراحی آداپتور Understanding the Adapter Design Pattern

  • ملاحظات معماری برای الگوی آداپتور Architectural Considerations for the Adapter Pattern

  • کدنویسی الگوی آداپتور در پایتون Coding the Adapter Pattern In Python

  • کار با تمرین الگوی آداپتور Working with the Adapter Pattern Exercise

  • آزمون الگوی آداپتور Adapter Pattern Quiz

  • تمرینات کدگذاری الگوی طراحی آداپتور **اضافی** Adapter Design Pattern Coding **Extra** Exercises

الگوی طراحی استراتژی Strategy Design Pattern

  • درک الگوی طراحی استراتژی Understanding the Strategy Design Pattern

  • ملاحظات معماری برای الگوی طراحی استراتژی Architectural Consideration for the Strategy Design Pattern

  • کدگذاری الگوی طراحی استراتژی Coding the Strategy Design Pattern

  • کار با الگوی استراتژی تمرین شماره 1 Working with the Strategy Pattern Exercise #1

  • کار با الگوی استراتژی تمرین شماره 2 Working with the Strategy Pattern Exercise #2

  • آزمون الگوی استراتژی Strategy Pattern Quiz

  • کدنویسی الگوی طراحی استراتژی ** تمرین اضافی ** Strategy Design Pattern Coding **Extra** Exercise

الگوی طراحی ناظر Observer Design Pattern

  • درک الگوی طراحی مشاهدهگر Understanding the Observer Design Pattern

  • ملاحظات معماری برای الگوی طراحی Observer Architectural Consideration for the Observer Design Pattern

  • کدنویسی با الگوی Observer Coding with the Observer Pattern

  • کار با تمرین الگوی مشاهده گر Working with the Observer Pattern Exercise

  • تمرینات کدگذاری الگوی طراحی مشاهدهگر **اضافی** Observer Design Pattern Coding **Extra** Exercises

الگوی طراحی دولتی State Design Pattern

  • درک الگوی طراحی حالت Understanding the State Design Pattern

  • ملاحظات معماری برای الگوی طراحی دولتی Architectural Consideration for the State Design Pattern

  • کدگذاری الگوی طراحی حالت Coding the State Design Pattern

  • کار با تمرین الگوی طراحی دولتی Working with the State Design Pattern Exercise

  • تمرینات کدگذاری الگوی طراحی حالت **اضافی** State Design Pattern Coding **Extra** Exercises

تکلیف دوره - بازی زندگی Course Assignment - The Game of Life

  • درباره بازی شبیه سازی زندگی جان کانوی About John Conway's Game Of Life Simulation

  • سخنی در مورد معماری "بازی زندگی". A Word about the "Game of Life" Architecture

افکار نهایی Final Thoughts

  • از اینجا کجا میری؟ Where do you go from here?

  • متشکرم! Thank you!

نمایش نظرات

آموزش پایتون: اصول جامد و الگوهای طراحی برتر
جزییات دوره
5 hours
58
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
461
4.8 از 5
دارد
دارد
دارد
Piotr Paweska
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Piotr Paweska Piotr Paweska

مهندس نرم افزار