Not specifically about SOLID, but worth mentioning as a very interesting OOP-training approach by Jeff Bay: Object Oriented Calisthenics. The idea is that you can try to follow set of very strict rules on a non-real-life, small project.
The Rules
1. One level of indentation per method
2. Don’t use the ELSE keyword
3. Wrap all primitives and Strings
4. First class collections
5. One dot per line
6. Don’t abbreviate
7. Keep all entities small
8. No classes with more than two instance variables
9. No getters/setters/properties
By suspending disbelief, and rigidly applying these rules on a small,
1000 line project, you’ll start to see a significantly different
approach to designing software. Once you’ve written 1000 lines of
code, the exercise is done, and you can relax and go back to using
these 9 rules as guidelines.
This is a hard exercise, especially
because many of these rules are not universally applicable. The fact
is, sometimes classes are a little more than 50 lines. But there’s
great value in thinking about what would have to happen to move those
responsibilities into real, first-class-objects of their own. It’s
developing this type of thinking that’s the real value of the
exercise. So stretch the limits of what you imagine is possible, and
see whether you start thinking about your code in a new way.