Classes, objects, encapsulation, and the pillars of OOP.
When to inherit, when to compose, and the Liskov Substitution Principle.
Ad-hoc, parametric, and subtype polymorphism in practice.
Creational, structural, and behavioral patterns with modern examples.
Single Responsibility, Open/Closed, Liskov, Interface Segregation, Dependency Inversion.