A New Inheritance-Like Abstraction Mechanism
Nature vs. Nurture? The debate has obsessed the minds of psychologists and philosophers for many years. However, for the object-orienteer, it has never been a problem: an object inherits all of its properties. In this work we ask if an object should not be subject to environment effects and acquire attributes and features from its near and distant neighbors. We answer this question in the affirmative by demonstrating many cases in which the character of an object must be affected by the environment it is put in. We present a new abstraction mechanism–Environmental Acquisition–which allows a component to inherit properties from its enclosing composite(s). The need for environmental acquisition is demonstrated in several application domains. We propose a strongly typed model for environmental acquisition that allows static type checking of programs exploiting this mechanism, and compare it to several other mechanisms including ordinary inheritance and delegation. We develop the theory of acquisition that includes topics such as the kinds of links along which acquisition may occur, the behavior of routine and attribute features under acquisition. Much of the challenge is in allowing acquisition to be used in a type safe manner.