Explain the core concepts of Object-Oriented Programming (OOPs) and how they apply to test automation design.