Context: object oriented programming

In order to fully understand acquistion, the difference between "is a" and "has a" relationships must first be understood.

"Is a" vs. "Has a"

Consider the following example:

A car:
is a vehicle
has an engine

Notice the difference. An "is a" relationship specifies that the object ("car") is ontologically a special case of a broader class ("vehicle"). "Is a" relationships form the basis of inheritance in object oriented programming.

Contrast the "has a" relationship. Here the relationship specifies that an object ("engine") is componentwise a part of a broader object ("car"). This relationship is the basis of acquisition.

Acqusition and Object Oriented Programming

In inheritance, subclasses automatically defines properties and operations from its superclass. Thus if the class Vehicle defines a property colour, then the class Car would have access to the property colour.

In acquisition, objects (instances of a class) automatically defines properties and operations from its container. Thus if an instance of the class Car defines a property colour, and contains an instance of the class Engine, then the value of the property make of Engine would be identical to the value of the property make of Car.

The most prominent usage of acquisition is in Zope, where one can specify an object within a folder which does not belong to that particular folder. Zope searches the parent folder for the same object, and follows this aquisition tree until the root object.