I already know the basic principles of OOP, and though most of my code is procedural, I often write simple classes to handle problems that have an obvious object-oriented solution.
However, I'd very much like to get into more advanced OOP techniques, and start exploring design patterns. I've scoured the web, but it seems like most OOP tutorials are either aimed at programmers who are just starting out with OOP, or those who are already gurus. I can't find anything that's intended for programmers (like myself) who are comfortable writing basic classes, but don't know how to push their entire architecture in a more OO direction. I'm gradually learning more about abstract classes, static methods, and so forth, but I can't find much information on architecture from an OO standpoint.
As a learning exercise, I'd like to write a web-based game (patterned after Nethack) that is fully object-based - with the entire game session consisting of a single Game object, which is serialized and stored in a database between accesses.
I'm having a little trouble figuring out the best model to use. It seems to me that each game "turn" will consist of two phases: a player phase, where the user selects an action, and a computer phase, where that action is processed, along with any other activity that needs to happen before the player is allowed to select another action (enemy activity, etc.).
Questions:
Does this sound like a viable and appropriate architecture?
Can you guys recommend any sites/books/other resources that provide the kind of mid-level OO instruction that I need?