Introduction
Object-oriented C++
()
Prerequisites: What you need to know
()
Using GitHub Codespaces
()
From unstructured code to OOP
()
1. Classes and Objects
Defining classes
()
Access specifiers
()
Separating class declaration from class definition
()
Creating and using objects
()
Constructors and destructors
()
Challenge: Implementing a smart home thermostat class
()
Solution: Implementing a smart home thermostat class
()
2. Encapsulation and Data Hiding
Why should we hide information?
()
Doorways to data: Getters and setters
()
Applying the DRY principle
()
Challenging const correctness
()
Friends
()
Challenge: Bank account with audit system
()
Solution: Bank account with audit system
()
3. Inheritance and Code Reuse
Why reinvent the wheel?
()
Extending classes
()
Access control in inheritance
()
Overriding and extending functionality
()
Multiple inheritance
()
Multiple inheritance pitfalls
()
Challenge: RPG character system
()
Solution: RPG character system
()
4. Polymorphism and Virtual Functions
The many faces of objects
()
Virtual functions: The basics
()
Runtime polymorphism
()
Pure virtual functions and abstract classes
()
Virtual destructors: Why, when, and how
()
Challenge: Superhero ability system
()
Solution: Superhero ability system
()
5. Practical OOP: Putting It All Together
Modular design and separation of concerns
()
Dissecting a class
()
Quick overview of SOLID principles
()
Designing for reusability
()
Smart use of smart pointers
()
Quick wins with RAII
()
Conclusion
Course wrap-up and next steps
()