in reply to How to think.
When thinking about a large system, think that there should be more than one classes in that system. Every class should communicate/interact (sending/receiving messages) with each other, otherwise don't take that class as part of the system. Think of a car, that has 1 engine and 4 wheels (etc). We can simply takeout one wheel, and change with a new one, without affecting other class (engine etc) or even other wheels (same class but different object). I want to suggest an important thing, make sure AN OBJECT DOES NOT (HEAVILY) DEPENDS ON OTHER OBJECT. That's all that i can think of for now! :) ...
I learn OO mostly through C++ book (i meant the good one). Usually the examples are solid enough (or maybe because C++ is the best candidate for OOP? you decide!)