Dear Zopers, I read Chris McDonough's How To on Gaining Zope Enlightenment by Grokking Object Orientation. It raised a few questions in my RDBMS-oriented head. So I mailed Chris with these questions but Chris explained he just couldn't answer them right now and asked me to post them to the list. They seem very basic, very fundamental questions to me. So here is my email to Chris - If I get any answers here I would like to include my questions and your answers in a How-To to help those who come after me ! Thanks for any help ! Here's the original email ---------------------------------------------------------------------------- ---------------------------------------------------------- Chris, I enjoyed your How-To on Gaining Enlightenment very much. I've been using Zope for a couple of months now and I've made some progress - my first project has been to use it to give access to established databases over an Intranet. Like you I think its wonderful, but like you I keep getting stuck. Never mind, with the help of the mailing lists and long hours reading books on Python etc I've made progress. BUT ... (there's always a but isn't there) - no matter how much I read and play around with OO - I still don't 'get it'. My background is many years working with relational databases on Unix - (and there are thousands like me). I just don't get the bit about storing data as objects. Could we discuss this a bit more and perhaps publish my questions and your answers on Zope.org ?? This may help me and the thousands like me. OK, you create your class of Spam, which has attributes of cansize and texture and it has methods that display these attributes. No doubt you could add other attributes, such as selling price and develop a method to increase the price by a percentage. OK so far ? Now we create an object (which is an instance of the class Spam) - which we call myfirstcan. We can define the attributes for that object when we create it or later and we can use the methods defined in the Spam class to do so. OK so far ? What I don't get is how you store and retrieve the objects you create. Let's go to a more realworld example - how would you implement a stock system using objects ? Let's take the simple table Stock which has three columns Product_code Description Price and we could enter rows of data into it, for example - ABC Spluggifier 20.00 CDE Super-spluggifier 25.00 Now if I was writing a conventional database system I would maintain the above by defining a program which perhaps prompted the user for the required columns (Product, Description,Price) and then I would store the users input in a row in a table. Perhaps another program (the price change program) would use a stored procedure to allow price change. OK ? Now in OO terms I see that I could create a class of Stock with attributes Product, Description and Price. I could create a method to allow price changes. Very neat. Then I can create an object( i.e a particular stock item) by saying something like product_1 = Stock(product_code="ABC", Description="Spluggifier", Price-"20.00") Now I can create another object by saying product_2 = etc but that is not the way you would do it surely. You would be effectively 'hard-coding' each product in your system. Surely you would have a program which did something like WHILE the user is entering data PROMPT user for data VALIDATE data WRITE data to database END WHILE How do you do that in OO terms ? How then do you search and retrieve an object with a particular value of product_code ? How do you write a program which updates the price of all stock items where the product_code begins with AB by 2%.? Thanks for reading this far. Hope you can stop my head spinning ! Regards Richard Richard Moon richard@dcs.co.uk