Explain the difference between procedural and object-oriented programming
Design classes with clear interfaces and hidden implementations
Apply encapsulation, inheritance, and polymorphism in code
Use composition and inheritance to build class hierarchies
Create and use constructors effectively, including multiple constructors
Implement error handling using exceptions in object-oriented languages