[Zope-dev] Re: ZPatterns, ObjectDomain, UML and all that.....

Steve Spicklemire steve@spvi.com
Tue, 5 Dec 2000 07:14:55 -0500 (EST)


Thanks Roche!

>>>>> "RC" == RC Compaan <sparroy@adept.co.za> writes:

    RC> Hi Steve

    RC> I'm also a babe in the woods when it comes to object
    RC> modelling, but here's my pennie's worth.  Since code
    RC> generation was not really required in the models I recently
    RC> did for Zope Apps and the terrible exchange rate on the South
    RC> African Rand I decided to use to very light weight Playground
    RC> modelling tool.  I agree with Steve Alexander that Coad
    RC> notation serves ZPatterns *better* and this is exactly what
    RC> Playground uses.

Ahh.. alas Playground is Win only (if I'm thinking correctly that it's
the software that came in Coad's book), and I loaned tbe book and CD
to someone else ... grrrr... ;-)

    RC> Take the Customer with Address property example: I create
    RC> Customer and Address Dataskins.  For Customer I have an
    RC> external method setAddress which sets the Address property of
    RC> my Customer object and this is how I would create a new
    RC> Customer: newCustomer = customerRack.newItem( CustomerCounter
    RC> ) newAddress = addressRack.newItem( AddressCounter )
    RC> newCustomer.setAddress( newAddress )

    RC> I prefer the simplicity this brings when I have to access the
    RC> properties of a Customer (without having to call a getter each
    RC> time I need an address): myCustomer.Address.Street

    RC> This also maps quite simply to SQL storage.

    RC> So although instances of Address are properties of Customer
    RC> they live on their own Rack and instances of Customer simply
    RC> refers to their Address through assignment.

Thanks... is that working between transactions? It has me a little
confused.  I've been snooping through the implementation of ZPatterns
for a clue.... and it looks to me like:

 a) the data manager for a DataSkin is a non-persistent attribute.
    (self._v_dm_). I think this means that it needs to be set
    somehow in every Zope transaction before you can do much of
    anything with the instance.

 b) For Rack mounted DataSkins this should happen when the item is
    retrieved from the Rack, and basically should be set to the Rack
    itself.

 c) If an object is set as an attribute of another DataSkin won't
    its data manager be lost at the end of the transaction?
    How does it find its rack again at the next transaction?

 I too like the simplicity of setting attributes rather than
 saving IDs, and that may lead me to experiement with the
 folder/customizer stuff.... but right now I'm still doing
 specialists/racks ( for some reason... that's where I started! )

    RC> With Container/Content type objects I do roughly the same - I
    RC> have setContainer methods for the Content objects.

So most of your objects are defined in Python products, or are these
methods ExternalMethods?

thanks!
-steve

    RC> Roché