On Sat, 17 Feb 2001, Doug Hellmann wrote:
I've yet to see any documentation which sufficiently explains what ZPatterns is and how to use it for me to consider it in any of my projects. I've read the wiki pages and I just don't get it.
Where should I be starting for enlightenment?
Well, if you've read the Wiki, there really isn't anything else to read other than the Coad book for general object design background. I "figured out" zpatterns by starting to build a store using EMarket 0.2.0, which is ZPatterns based. It didn't take very long before I started to really appreciate the power of the ZPatterns approach. Fundamentally think of it as doing the object design of your system without worrying about where the data is going to get stored. If you want a nuts and bolts capsule description, think of it as providing you the ability to easily make just about anything about your objects computed. That is, when any part of your application goes to access one of your objects, there is code that can get triggered to do all sorts of Cool Stuff in order to build the object from arbitrary data sources. This means you can do things like have (my example) a Paradox database of books, authors, and a books-to-authors map, and have Author and Book objects in the system such that a Book has a list of its Author objects and the Author has a list of its Book objects, all in about 20 lines of ZSQL and skinscript. Plus I have a 'long description' field that comes from another database table, and thumbnail and full sized images that are stored in Image objects in the ZODB. All this stuff is seemlessly assembled into Author and Book objects by, like I said, about 20 lines of the skinscript and zsql. The rest of the app has no idea how those objects come to be or where the data comes from (or goes to). You really have to try it to understand, though, I think. It's not as hard as the discusions on the mailing list may make it seem. The learning curve is somewhat steep, but also rather short, at least for the wow-this-is-powerful stuff (I'm still learning the subtleties). --RDM