Lecture notes in computer science vol:2072 pages:53-76
ECOOP edition:15 location:Budapest date:June 2001
Containment of objects is a natural concept that has been poorly supported in object-oriented programming languages. For a predefined set of object contexts, this paper presents a type system that enforces certain containment relationships for run-type objects. A fixed ordering relationship is presumed between owners. The formalisation of ownership types has developed from our work with flexible alias protection together with an investigation of structural properties of object graphs based on dominator trees. Our general ownership type system permits fresh ownership contexts to be created at run-time. Here we present a simplified system in which the ownership contexts are predefined. This is powerful enough to express and enforce constraints about a system's high-level structure. Our formal system is presented in an imperative variant of the object calculus. We present type preservation and soundness results. Furthermore, we highlight how these type theoretic results establish a containment invariant for objects, in which access to contained objects is only permitted via their owners. In effect, the predefined ownership ordering restricts the permissible inter-object reference structure.