Acquisition Inheritance

(Really just called Acquisition, but that's not a proper WikiName.)

An inheritance-like abstraction mechanism (the title of an OOPSLA paper on Acquisition from 1996), where objects are bound to methods and attributes based on the environment the objects currently is contained in. This is dynamic: If you move the object to a new environment, its context will change.

Example: You acquire your current telephone number from your environment. When you're at home, your phone number is acquired from your house, and when you're at work, your telephone number is acquired from your office.

Acquisition and "object-oriented inheritance" are not opposed; use the one that fits best. There are similarities between Acquisition and SelfLanguage's Delegation feature, but Acquisition is more like the DecoratorPattern.

Zope (ZopeApplicationServer) is an example where both kinds of inheritance are put to good use; see this introduction ( to Zope, which a lot of this pages' contents were stolen from.

How is this related to DynamicScoping? -- MichaelSchuerig

DynamicScoping's "local context" is the current call stack. Acquisition's "local context" is an instance's current container(s). DynamicScoping allows code to depend on when you call it, Acquisition allows code to depend on where you put it.

To mirror common ScopingRules terminology, Acquisition could perhaps be called "SituationalScoping?".

-- PietDelport

See Also: PredicateClasses

View edit of December 21, 2007 or FindPage with title or text search