Whenever you're ready, walk me through how you'd approach this.
Explain SOLID principles and key OOP concepts, and how you apply them in your work.
Keep the answer focused on what each principle means, how it changes class design, and where you have used it to improve maintainability or testability. Assume Java or Kotlin on the JVM, and do not drift into framework-specific patterns.