Can you explain the core concepts of Object-Oriented Programming (OOP) and how you apply them in your projects?