
Why This Course
A lot of courses talking about object oriented programming but they use the academic approach of illustrating the content, but here we are going beyond that highlights the science behind each concept.
This course is a summary of multiple books in object oriented area like Object The Object-Oriented Thought Process, 5th Edition & Clean Architecture: A Craftsman's Guide to Software Structure and Design
This course is taking a simple manner, show case based & problem first then let’s check the solution.
This course is combining OOP, SOLID & Design Patterns and how they are related.
How?
This course is going through the object oriented programming paradigm and its' principles (encapsulation, inheritance, abstraction & polymorphism) from real engineering perspective that shows exactly what is the purpose and the right implementation of each principle apart from the academic content.
We are starting with looking into a problem statement and looking first how we can implement it with non OOP solution and then going through each OOP principle and how we can apply it in the right way with highlighting on pitfalls developer can fall into in daily work with discussing how developer can break dependency between classes/modules and reducing the coupling and increasing the cohesion of his implementation.
While we are moving from principal to another we will highlight one of the SOLID principles that relates to OOP principle and show how they are connected, and show how some design patterns are existed to help us to follow OOP and SOLID, patterns like Strategy, Factory, Builder, Singleton.
There is an opportunity to hands on with course lectures, write your own code and apply the design patterns, as there is an initial repo for the project you can clone and work with me while I am moving from topic to topic.
For Who?
This course designed mainly for computer science students or fresh graduates who is taking a baby steps on their career path to help them taking a real sensation of how these academic concepts affect professional daily work activities, but it will also help any developer who is still having problem dealing with these concepts to tackle them.
Prerequisites
Not much prerequisites for this course, it’s just a little experience with any programming language and awareness of object oriented programming.
What you will gain & able to do after taking the course
Deep understanding of object oriented programming paradigm
Gain more confidence while you working on your daily tasks and being able to identify wrong implementation and what is the fix.
Beat the fear and ambiguity about SOLID and how to apply them properly.
How to build more sustainable and maintainable solutions and breaking dependencies.
Getting little hands on experience with design patterns