What are the core principles of object-oriented programming, and how have you applied polymorphism in your recent projects?