Master Design Patterns & SOLID Principles in C# - Full OOP Course for Beginners

preview_player
Показать описание
In this comprehensive and beginner-friendly course, you will learn all of the tools that you need to become an advanced OOP programmer, writing clean and maintainable software.

What you will learn:
- Fundamental OOP concepts, such as inheritance, composition, encapsulation, abstraction, composition vs inheritance, fragile base class problem.
- Unified Modeling Language (UML) to model your classes and objects, and the relationships between them in a graphical way.
- All five SOLID Principles.
- All 23 "Gang of Four" software design patterns.

A book and cheatsheet for this course are also available:

⭐️ Contents ⭐️
(0:00:00) Intro
(0:00:33) Course contents
(0:01:34) Gang of Four design patterns
(0:02:39) What are design patterns & why learn them?
(0:05:38) Course prerequisites
(0:06:57) About me
(0:07:32) Book version
(0:08:19) Code repo
(0:08:49) Setup
(0:12:19) OOP concepts intro
(0:12:42) Encapsulation - OOP
(0:25:48) Abstraction - OOP
(0:30:52) Inheritance - OOP
(0:36:40) Polymorphism - OOP
(0:45:04) Coupling - OOP
(0:55:17) Composition - OOP
(0:58:11) Composition vs inheritance - OOP
(1:01:00) Fragile base class problem - OOP
(1:05:24) UML
(1:14:01) SOLID intro
(1:15:01) S - SOLID
(1:21:26) O - SOLID
(1:32:20) L - SOLID
(1:45:20) I - SOLID
(1:54:10) D - SOLID
(2:04:56) Design patterns intro
(2:05:35) Behavioural design patterns
(2:07:37) Memento pattern - behavioural
(2:33:40) State pattern - behavioural
(3:00:27) Strategy pattern - behavioural
(3:26:47) Iterator pattern - behavioural
(3:46:09) Command pattern - behavioural
(4:24:17) Template method pattern - behavioural
(4:56:50) Observer pattern - behavioural
(5:31:20) Mediator pattern - behavioural
(6:10:19) Chain of responsibility pattern - behavioural
(6:42:55) Visitor pattern - behavioural
(7:06:29) Interpreter pattern - behavioural
(7:38:53) Structural design patterns intro
(7:40:32) Composite pattern - structural
(7:56:09) Adapter pattern - structural
(8:13:26) Bridge pattern - structural
(8:33:16) Proxy pattern - structural
(8:51:33) Flyweight pattern - structural
(9:15:25) Facade pattern - structural
(9:27:13) Decorator pattern - structural
(9:55:16) Creational design patterns intro
(9:58:50) Prototype pattern - creational
(10:19:13) Singleton pattern - creational
(10:37:44) Factory method pattern - creational
(10:55:03) Abstract factory pattern - creational
(11:12:26) Builder pattern - creational
(11:46:29) Course conclusion
Рекомендации по теме
Комментарии
Автор

11 hours free lesson. You guys are unsung heroes. Thank you so much

nurburgringkid
Автор

Perfect timing! I was struggling a bit with SOLID principles and OOP. Thanks.

aniketbhalla
Автор

Thank you! Thank you ! Thank My course on OOD c++ starts 25th Sept and this is the exact coursework required for me to work on Thank

Amy-ohfd
Автор

I'm Gratitude for this amazing 11 hours video, keep goin on

حبيبةعمرو-زب
Автор

Builder pattern is useless if you can pass parameters with labels to constructor. I imagine that's why it is at tge end of video. In general it is a great master class video. I love it! ❤

SaySaeqo
Автор

Polymorphism is the most powerful feature of OOP, but we beginners often have hard time grasping the concept. I believe that the problem is that polymorphism examples are ofen not good, they miss the mark or get too convoluted. This example starts ok, but it ends up actually demonstrating what inheritance does, not polymorphism. Polymorphism allows objects/methods to behave differently (hence "polymorphism") depending on the requirement specified at runtime (i.e. unknown on compile time), although being treated the same. So if you run this script each vehicle in vehicles should execute its specific override of Start() and you don't see that in the example. So in the end, sadly, one either already knew what polymorphism was, or one still doesn't...

dererzherzog
Автор

And now after you have learned all of this and mind you this is all very useful, you can just replace everything with a function. You are welcome.

egioch
Автор

Thanks to the world, it's amazing.

نصرذكى-كج
Автор

I'm a bit wondering about the example of EmailService under the topic of "Abstraction" and your explanation Abstraction would hide complexity to user. I think that is more encapsulation while abstraction generalises solutions to reusable blocks (or in OOP create abstract classes to have a "skeleton-structure" for deriving classes)... but maybe I always interpreted it totally wrong (lousy with any kind of terminology)

Babaable
Автор

I think with Single Responsibility Principle, it would have helped if you explained what constitutes a “responsibility” and how it is different from let’s say a utility class with different methods.

johno
Автор

I feel like testing the State Pattern 03:00:15 cases is rather hard because its composed of individual classes, compared to "nesting" the states into a single Document class?
Sure it looks bloated, but it also composes everything into a single place whereas using the State Pattern induces heavy bloat and hard testability?

Even if we have 5 Stages and 7 Roles it would probably still be very managable with if/else and the testability is easy and straight forward where as using a State Pattern makes it quite a challenge ? (Iam farely new tho)
Also, using additional complex Objects over simple Enums to perform State operations introduces slower computational times and memory overhead?
So in the end its heavier and slower?

I would get the concept if it were used in big Systems with multi-dimensional (x*x*x) cases or 10+ Stages & 10+Roles
Would be awesome to get some feedback :-)

skol
Автор

The Abstraction example (Email Sevice 26:06 ) you illustrated looks similar to Encapsulation concept.
I believe Abstraction can be implemented using abstract classes and interfaces, while Encapsulation can be implemented using access modifiers like private, protected, and public. Whats your thoughts?

thesunilrajawat
Автор

Please can you put a subtitle! Please keep this in mind!

danielvisan
Автор

why don't you use an underscore for the private field to make it clearer? Avoiding the need of the .this keyword.

marcuspedersenvlogs
Автор

1:21:21 so domain driven design is against Single Responsibility. Because there are business logic in entity

thesandboxgamingvideos
Автор

make video on advanced wordpress plugin development

MewtwoStar
Автор

would be better if you used more visible theme in visual studio code when you are making presentation, because both the background and the characters are too dark, it is very difficult to read the code.

tamasnagy
Автор

what about DRY, KISS, YAGNI, Law of Demeter

XD

just kidding, this is AMAZING content

spoodermen
Автор

Please make the same video on Java or Python

abhijeetdhumal
Автор

SOLID isnt mandatory, but is good to respect. but never sacrifice performance for readability. Thats what i think. you can leave a comment what it does on each line if its too complex

JokeryEU