آموزش SOLID C++

SOLID C++

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
توضیحات دوره: یادگیری و تمرین ++C با اصول طراحی شی گرا SOLID کشف نحوه طراحی و نوشتن کدهای شی گرا قوی و قابل نگهداری توسعه درک شهودی از اصول SOLID یاد بگیرید چگونه از اصول SOLID با استفاده از انتزاعات و الگوهای برنامه نویسی مناسب پیروی کنید یاد بگیرید چگونه از اصول SOLID با استفاده از آن پیروی کنید. ویژگی ها و اصطلاحات مختلف زبان C++ بدانید که چگونه پروژه های C++ را ساختار دهید، کدهای شی گرا را آزمایش کنید و اصلاح کنید. اصول SOLID و C++ را در تکالیف و پروژه برنامه نویسی نهایی تمرین کنید (C++17) یاد بگیرید چگونه از کتابخانه های CMake و Boost در پروژه های C++ استفاده کنید. برای استفاده از Google Test برای تست واحد آشنایی با UML (نمودار کلاس و ترتیب) پیش نیازها:C++ مبتدی یا متوسط ​​(برای مثال ها و تکالیف استفاده می شود) درک اولیه OOP (کلاس، چندشکلی، وراثت و غیره) در حالت ایده آل، باید داشته باشید. قبلاً روی چند پروژه سرگرمی کوچک کار کرده اید یا تجربه توسعه نرم افزار تجاری دارید

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

نیاز داریم
  • مسئولیت تکی

  • ای قلم بسته شده

  • جایگزینی L iskov

  • من جداسازی را واسط می‌کنم

  • وارونگی وابستگی D

این احتمالاً کامل‌ترین دوره اصول SOLID در Udemy است. اما از این جهت که بر زبان برنامه نویسی C++ تمرکز می کند نیز خاص است که ما از آن برای مثال ها و تکالیف استفاده می کنیم. و این دوره هم تئوری و هم عملی را پوشش می دهد.


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

  • درکی بصری از همه اصول SOLID ایجاد کنید

  • درک کنید که چه زمانی به اصول SOLID نیاز است و چه زمانی نه

  • با استفاده از انتزاعات و الگوهای برنامه نویسی مناسب، بدون توجه به زبان برنامه نویسی، به طور کلی از اصول SOLID پیروی کنید

  • با نحوه پیروی از اصول SOLID با استفاده از ویژگی ها و اصطلاحات مختلف زبان C++ آشنا شوید

  • با نحوه ساختار پروژه های C++، تست و بازساز

    آشنا شوید

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


بنابراین دقیقاً چه چیزی در دوره پوشش داده می شود؟

  • ارائه ها (نظریه و مفاهیم در مورد اصول)

  • مشابه های بصری از دنیای واقعی (برای درک بهتر و به خاطر سپردن اصول)

  • نمودارهای UML (عمدتاً نمودارهای کلاس با مثال هایی در مورد اصول)

  • نمونه‌های کد مستقل زیادی (حداقل تعدادی برای هر اصل)

  • تقریباً یک پروژه واقعی (برنامه سروری که از طریق اتصال TCP دریافت می‌کند و گزارش‌های مالیاتی را در قالب‌های JSON یا XML پردازش می‌کند) با تست‌های واحد و سطح بالا

  • توضیحاتی درباره نحوه نصب وابستگی‌های پروژه، کامپایل آن و اجرای آزمایش‌ها (استفاده از C++17، CMake، کتابخانه‌های Boost (asio، گزینه‌های برنامه، و غیره)، تست Google)

  • آزمون‌ها و آزمون نهایی (برخی نمونه‌های کد اضافی دارند)

  • تکالیف برنامه نویسی (کار روی پروژه و غیره)


اگر

هستید، این دوره برای شما مناسب است
  • یک برنامه نویس C++ مبتدی یا متوسط ​​هستید (اما مبتدی کامل نیستید)

  • درکی اولیه از OOP (کلاس ها، چندشکلی، وراثت، کپسولاسیون و غیره) داشته باشید

  • می خواهید بیشتر بیاموزید و مهندس نرم افزار بهتری شوید

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

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

و حتی اگر اصولاً در C++ برنامه‌نویسی نکنید، همچنان خواهید دید که بیشتر نمونه‌های کد، و همچنین اصول، برای بسیاری از زبان‌های برنامه‌نویسی دیگر اعمال می‌شوند.


از شما چه انتظاری می رود؟

علاوه بر تماشای سخنرانی‌ها و/یا خواندن سخنرانی‌ها، انتظار می‌رود که

  • نمونه‌های کد و کد منبع پروژه را کامپایل کنید، بخوانید و درک کنید (توانایی خواندن و کار با کد دیگران بسیار مهم است و اغلب دست کم گرفته می‌شود)

  • برخی از نمونه های کد ارائه شده را در حین انجام تکالیف اصلاح کنید

  • در تکلیف نهایی روی کد منبع پروژه کار کنید، عملکرد آن را گسترش دهید و آزمایش‌ها را اضافه کنید


تصاویر در نمونه‌های بصری از وب‌سایت pixabay و صدای ویدیوها از وب‌سایت bensound است.


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

معرفی Introduction

  • SOLID چیست What is SOLID

  • SOLID چیست What is SOLID

  • چرا روی C++ تمرکز کنیم؟ Why focus on C++

  • چرا روی C++ تمرکز کنیم؟ Why focus on C++

  • مخزن، ارائه ها، کد منبع، تست ها، CI Repository, presentations, source code, tests, CI

  • مخزن، ارائه ها، کد منبع، تست ها، CI Repository, presentations, source code, tests, CI

  • شرح پروژه با نمودار توالی Project description with sequence diagram

  • شرح پروژه با نمودار توالی Project description with sequence diagram

  • نمای کلی کد منبع پروژه قبل از SOLID Project source code overview before SOLID

  • نمای کلی کد منبع پروژه قبل از SOLID Project source code overview before SOLID

  • مروری بر کد منبع پروژه پس از SOLID Project source code overview after SOLID

  • مروری بر کد منبع پروژه پس از SOLID Project source code overview after SOLID

  • نکات تکمیلی در مورد پروژه Additional remarks about project

  • نکات تکمیلی در مورد پروژه Additional remarks about project

  • مقدمه تست Test introduction

  • مقدمه تست Test introduction

معرفی Introduction

نصب، ساخت و تست Installing, building and testing

  • ویندوز: دانلود و باز کردن پروژه Windows: download and open project

  • ویندوز: دانلود و باز کردن پروژه Windows: download and open project

  • ویندوز: توزیع MinGW را نصب کنید (gcc، g++، کتابخانه های تقویت، و غیره) Windows: install MinGW distro (gcc, g++, boost libraries, etc.)

  • ویندوز: توزیع MinGW را نصب کنید (gcc، g++، کتابخانه های تقویت، و غیره) Windows: install MinGW distro (gcc, g++, boost libraries, etc.)

  • ویندوز: CMake را نصب کنید Windows: install CMake

  • ویندوز: CMake را نصب کنید Windows: install CMake

  • ویندوز: gtest و gmock را نصب کنید Windows: install gtest and gmock

  • ویندوز: gtest و gmock را نصب کنید Windows: install gtest and gmock

  • ویندوز: کامپایل پروژه و اجرای تست های واحد Windows: compile project and run unit tests

  • ویندوز: کامپایل پروژه و اجرای تست های واحد Windows: compile project and run unit tests

  • ویندوز: تست های سطح بالا را اجرا کنید (اختیاری، با استفاده از Python3) Windows: run high-level tests (optional, using Python3)

  • ویندوز: تست های سطح بالا را اجرا کنید (اختیاری، با استفاده از Python3) Windows: run high-level tests (optional, using Python3)

  • لینوکس: دانلود و باز کردن پروژه Linux: dowload and open project

  • لینوکس: دانلود و باز کردن پروژه Linux: dowload and open project

  • لینوکس: وابستگی ها را نصب کنید Linux: install dependencies

  • لینوکس: وابستگی ها را نصب کنید Linux: install dependencies

  • لینوکس: کامپایل پروژه و اجرای تست های واحد Linux: compile project and run unit tests

  • لینوکس: کامپایل پروژه و اجرای تست های واحد Linux: compile project and run unit tests

  • لینوکس: تست های سطح بالا را اجرا کنید (اختیاری، با استفاده از Python3) Linux: run high-level tests (optional, using Python3)

  • لینوکس: تست های سطح بالا را اجرا کنید (اختیاری، با استفاده از Python3) Linux: run high-level tests (optional, using Python3)

نصب، ساخت و تست Installing, building and testing

اصول اولیه UML UML basics

  • معرفی UML UML introduction

  • معرفی UML UML introduction

  • نمودارهای کلاس Class diagrams

  • نمودارهای کلاس Class diagrams

  • ایجاد نمودار کلاس با Umbrello Creating class diagrams with Umbrello

  • ایجاد نمودار کلاس با Umbrello Creating class diagrams with Umbrello

  • مبانی UML را تست کنید Test UML basics

  • مبانی UML را تست کنید Test UML basics

اصول اولیه UML UML basics

اصل مسئولیت واحد (SRP) Single Responsibility Principle (SRP)

  • معرفی Introduction

  • معرفی Introduction

  • نحوه پیگیری How to follow

  • نحوه پیگیری How to follow

  • قیاس بصری Visual analogy

  • قیاس بصری Visual analogy

  • نمودارهای کلاس UML UML class diagrams

  • نمودارهای کلاس UML UML class diagrams

  • مثال ویرایشگر متن نقض SRP Text editor example violating SRP

  • مثال ویرایشگر متن نقض SRP Text editor example violating SRP

  • مثال مراقبت از گیاه که SRP را نقض می کند Plant care example violating SRP

  • مثال مراقبت از گیاه که SRP را نقض می کند Plant care example violating SRP

  • تمرین SRP Practicing SRP

  • تمرین SRP Practicing SRP

  • نمونه مراقبت از گیاه بازسازی شد Plant care example refactored

  • نمونه مراقبت از گیاه بازسازی شد Plant care example refactored

  • کد منبع پروژه قبل از اعمال SRP Project source code before applying SRP

  • کد منبع پروژه قبل از اعمال SRP Project source code before applying SRP

  • کد منبع پروژه پس از اعمال SRP و refactoring Project source code after applying SRP and refactoring

  • کد منبع پروژه پس از اعمال SRP و refactoring Project source code after applying SRP and refactoring

  • تست SRP Test SRP

  • تست SRP Test SRP

اصل مسئولیت واحد (SRP) Single Responsibility Principle (SRP)

اصل باز-بسته (OCP) Open-Closed Principle (OCP)

  • معرفی Introduction

  • معرفی Introduction

  • نحوه پیگیری How to follow

  • نحوه پیگیری How to follow

  • اظهارات اضافی Additional remarks

  • اظهارات اضافی Additional remarks

  • قیاس بصری Visual analogy

  • قیاس بصری Visual analogy

  • نمودارهای کلاس UML UML class diagrams

  • نمودارهای کلاس UML UML class diagrams

  • پلی مورفیسم پویا و وراثت Dynamic polymorphism and inheritance

  • پلی مورفیسم پویا و وراثت Dynamic polymorphism and inheritance

  • پلی مورفیسم ایستا و الگوها Static polymorphism and templates

  • پلی مورفیسم ایستا و الگوها Static polymorphism and templates

  • تخصص قالب Template specialization

  • تخصص قالب Template specialization

  • محدودیت ها و مفاهیم (C++20) Constraints and concepts (C++20)

  • محدودیت ها و مفاهیم (C++20) Constraints and concepts (C++20)

  • الگوی دکوراتور (پویا) Decorator pattern (dynamic)

  • الگوی دکوراتور (پویا) Decorator pattern (dynamic)

  • الگوی دکوراتور (استاتیک) Decorator pattern (static)

  • الگوی دکوراتور (استاتیک) Decorator pattern (static)

  • الگوی روش الگو Template method pattern

  • الگوی روش الگو Template method pattern

  • ترکیب بر ارث Composition over inheritance

  • ترکیب بر ارث Composition over inheritance

  • اصطلاح مفهومی زمان اجرا (پیشرفته) Run-time concept idiom (advanced)

  • اصطلاح مفهومی زمان اجرا (پیشرفته) Run-time concept idiom (advanced)

  • کد منبع پروژه قبل از اعمال OCP Project source code before applying OCP

  • کد منبع پروژه قبل از اعمال OCP Project source code before applying OCP

  • کد منبع پروژه پس از اعمال OCP و refactoring Project source code after applying OCP and refactoring

  • کد منبع پروژه پس از اعمال OCP و refactoring Project source code after applying OCP and refactoring

  • تست OCP Test OCP

  • تست OCP Test OCP

  • OCP را تمرین کنید Practice OCP

  • OCP را تمرین کنید Practice OCP

اصل باز-بسته (OCP) Open-Closed Principle (OCP)

اصل جایگزینی لیسکوف (LSP) Liskov Substitution Principle (LSP)

  • معرفی LSP LSP introduction

  • معرفی LSP LSP introduction

  • اصطلاحات و مفاهیم اساسی LSP LSP underlying terminology and concepts

  • اصطلاحات و مفاهیم اساسی LSP LSP underlying terminology and concepts

  • مفاهیم LSP LSP implications

  • مفاهیم LSP LSP implications

  • نحوه پیگیری: IS-A رابطه و زیرتایپ رفتاری How to follow: IS-A relashionship and behavioural subtyping

  • نحوه پیگیری: IS-A رابطه و زیرتایپ رفتاری How to follow: IS-A relashionship and behavioural subtyping

  • نحوه پیگیری: طراحی بر اساس قرارداد (غیر متغیر، پیش شرط، پس شرط) How to follow: design by contract (invariants, preconditions, postconditions)

  • نحوه پیگیری: طراحی بر اساس قرارداد (غیر متغیر، پیش شرط، پس شرط) How to follow: design by contract (invariants, preconditions, postconditions)

  • نحوه پیگیری: ویژگی های زبان برای بیان و تأیید قراردادها How to follow: language features to state and verify contracts

  • نحوه پیگیری: ویژگی های زبان برای بیان و تأیید قراردادها How to follow: language features to state and verify contracts

  • قیاس بصری Visual analogy

  • قیاس بصری Visual analogy

  • نمودار کلاس UML UML class diagram

  • نمودار کلاس UML UML class diagram

  • نمونه کلاسیک Classic example

  • نمونه کلاسیک Classic example

  • نمونه حیوان Animal example

  • نمونه حیوان Animal example

  • مثال کوواریانس Covariance example

  • مثال کوواریانس Covariance example

  • نمونه Queryset Queryset example

  • نمونه Queryset Queryset example

  • نمونه مجموعه Collection example

  • نمونه مجموعه Collection example

  • تغییرات کد منبع پروژه (OCP + LSP) Project source code changes (OCP + LSP)

  • تغییرات کد منبع پروژه (OCP + LSP) Project source code changes (OCP + LSP)

  • تست LSP Test LSP

  • تست LSP Test LSP

اصل جایگزینی لیسکوف (LSP) Liskov Substitution Principle (LSP)

اصل جداسازی رابط (ISP) Interface segregation principle (ISP)

  • معرفی Introduction

  • معرفی Introduction

  • مفاهیم Implications

  • مفاهیم Implications

  • نحوه پیگیری How to follow

  • نحوه پیگیری How to follow

  • قیاس بصری Visual analogy

  • قیاس بصری Visual analogy

  • نمودارهای UML UML diagrams

  • نمودارهای UML UML diagrams

  • نمودارهای UML ادامه یافت UML diagrams continued

  • نمودارهای UML ادامه یافت UML diagrams continued

  • نمونه درب کلاسیک (نقض ISP + LSP) Classic door example (violating ISP + LSP)

  • نمونه درب کلاسیک (نقض ISP + LSP) Classic door example (violating ISP + LSP)

  • مثال درب کلاسیک ادامه یافت (تخصیص، آداپتور، وراثت چندگانه) Classic door example continued (delegation, adapter, multiple inhertance)

  • مثال درب کلاسیک ادامه یافت (تخصیص، آداپتور، وراثت چندگانه) Classic door example continued (delegation, adapter, multiple inhertance)

  • نمونه کلاس چاپگر (ارث بری چندگانه) Printer class example (multiple inheritance)

  • نمونه کلاس چاپگر (ارث بری چندگانه) Printer class example (multiple inheritance)

  • هشدارهای چندگانه وراثت Multiple inheritance caveats

  • هشدارهای چندگانه وراثت Multiple inheritance caveats

  • نمونه مراقبت از گیاه (ISP + LSP) Plant care example (ISP + LSP)

  • نمونه مراقبت از گیاه (ISP + LSP) Plant care example (ISP + LSP)

  • ISP را تمرین کنید Practice ISP

  • ISP را تمرین کنید Practice ISP

  • مثال مراقبت از گیاه ادامه دارد (به دنبال ISP + LSP، وراثت چندگانه، رشته ها) Plant care example continued (follow ISP + LSP, multiple inheritance, threads)

  • مثال مراقبت از گیاه ادامه دارد (به دنبال ISP + LSP، وراثت چندگانه، رشته ها) Plant care example continued (follow ISP + LSP, multiple inheritance, threads)

  • تغییرات کد منبع پروژه (عملکرد جدید + ISP) Project source code changes (new functionality + ISP)

  • تغییرات کد منبع پروژه (عملکرد جدید + ISP) Project source code changes (new functionality + ISP)

  • تست ISP Test ISP

  • تست ISP Test ISP

اصل جداسازی رابط (ISP) Interface segregation principle (ISP)

اصل وارونگی وابستگی (DIP) Dependency Inversion Principle (DIP)

  • معرفی Introduction

  • معرفی Introduction

  • مقدمه ادامه یافت Introduction continued

  • مقدمه ادامه یافت Introduction continued

  • مفاهیم Implications

  • مفاهیم Implications

  • نحوه پیگیری How to follow

  • نحوه پیگیری How to follow

  • قیاس بصری Visual analogy

  • قیاس بصری Visual analogy

  • نمودارهای کلاس UML UML class diagrams

  • نمودارهای کلاس UML UML class diagrams

  • نمونه لامپ کلاسیک Classic lamp example

  • نمونه لامپ کلاسیک Classic lamp example

  • نمونه الگوی مشاهده گر Observer pattern example

  • نمونه الگوی مشاهده گر Observer pattern example

  • مثال الگوی مشاهده گر ادامه یافت Observer pattern example continued

  • مثال الگوی مشاهده گر ادامه یافت Observer pattern example continued

  • نمونه مراقبت از گیاه Plant care example

  • نمونه مراقبت از گیاه Plant care example

  • کد منبع پروژه Project source code

  • کد منبع پروژه Project source code

  • تست DIP Test DIP

  • تست DIP Test DIP

اصل وارونگی وابستگی (DIP) Dependency Inversion Principle (DIP)

آزمون و تکلیف نهایی Final test and assignment

  • تست نهایی Final test

  • تست نهایی Final test

  • تکلیف نهایی Final assignment

  • تکلیف نهایی Final assignment

  • تست Test

  • تست Test

آزمون و تکلیف نهایی Final test and assignment

نمایش نظرات

آموزش SOLID C++
جزییات دوره
9.5 hours
83
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
20,137
3.9 از 5
دارد
دارد
دارد
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Andrii Shostatskyi Andrii Shostatskyi

مهندس نرم افزار من یک مهندس نرم افزار هستم و در حال حاضر در یک پروژه فناوری تلفن همراه 5G کار می کنم و به صورت روزانه در ++ C برنامه نویسی می کنم. مهارت های برنامه نویسی من شامل C ++ ، TTCN3 ، Python ، Django ، JavaScript ، Vue.js ، PostgreSQL ، Elasticsearch و غیره است. در اوقات فراغت خودم روی ساختن بستر شخصی در حوزه legaltech کار می کنم یا فن آوری های جدید و الگوریتم را یاد می گیرم.