Here are interesting functions to use symbols like objects. (I originally posted these thoughts in What is in your Mathematica tool bag?What is in your Mathematica tool bag?).
You can access the list of keys (or properties) of a symbol using these functions based on what dreeves once submittedsubmitted (I was quite lucky to have found his post early in my Mathematica learning curve, because it allowed me to work on functions working with lots of different arguments, as you can pass the symbol containing the stored properties to a function and see which keys this symbol contains using Keys):
Properties are stored as DownValues and methods as delayed Upvalues (except for the [ ] redefinition also stored as DownValues) in the symbol created by Module that is returned. I found the syntax for function2 that is the usual OO-syntax for functions in Tree data structure in MathematicaTree data structure in Mathematica.