GBGames has a nice introduction to object oriented design for game development.
GB does a nice job of summarizing some basic concepts that can be incredibly powerful for simplifying your object model as well as future-proofing your design.
I’ve used these techniques extensively for application development in my day job as a C# developer. As GB mentions, it’s very easy and tempting to fall into the deep class design mode, but if you can resist and take the time to turn your classes sideways, your classes will grow in power and flexibility right before your eyes.
Thanks to GB’s reminder, I’ll now remember to use these techniques in my games.