Hi John-Reed.
In addition to the other fine responses to your question (ProtoObject is the superclass of Object, et. al), I believe that people also define Proxy objects by subclassing nil (UndefinedObject), rather than Object. Proxy objects are common in systems with large, complex objects that are stored in a database.
Cheers!
---==> Chris
At 14:22 -0500 2000.2.28, Norton, Chris wrote:
In addition to the other fine responses to your question (ProtoObject is the superclass of Object, et. al), I believe that people also define Proxy objects by subclassing nil (UndefinedObject), rather than Object. Proxy objects are common ...
Unfortunately, since UndefinedObject is itself a subclass of Object, making Proxy a subclass of UndefinedObject does not achieve the desired effect. (It does achieve one _undesired_ effect -- making all the Proxy objects print as nil!
I believe that the reasons for the creation of ProtoObject include the need to have a place to put Proxy objects that is not a subclass of Object. ObjectOut and ImageSegmentRootStub are two proxy objects in the image that are subclsses of ProxyObject. Marcel's Trampoline code should probably be modified so that Trampoline is a subclass of ProtoObject rather than UndefinedObject.
squeak-dev@lists.squeakfoundation.org