Results 1 -
2 of
2
A Denotational Semantics of Inheritance
, 1989
"... This thesis develops a semantic model of inheritance and investigates its applications for the analysis and design of programming languages. Inheritance is a mechanism for incremental programming in the presence of self-reference. This interpretation of inheritance is formalized using traditional te ..."
Abstract
-
Cited by 137 (6 self)
- Add to MetaCart
This thesis develops a semantic model of inheritance and investigates its applications for the analysis and design of programming languages. Inheritance is a mechanism for incremental programming in the presence of self-reference. This interpretation of inheritance is formalized using traditional techniques of fixed-point theory, resulting in a compositional model of inheritance that is directly applicable to object-oriented languages. Novel applications of inheritance revealed by the model are illustrated to show that inheritance has wider significance beyond object-oriented class inheritance. Constraints induced by self-reference and inheritance are investigated using type theory and yield a formal characterization of abstract classes and a demonstration that the subtype relation is a direct consequence of the basic mechanism of inheritance. The model is proven equivalent to the operational semantics of inheritance embodied by the interpreters of object-oriented languages like Smalltalk. Concise descriptions of inheritance behavior in several object-oriented languages, including Smalltalk, Beta, Simula, and Flavors, are presented in a common framework that facilitates direct comparison of their features.
Using Interface Inheritance to Address Problems in System Software Evolution
, 1994
"... Two specific problems faced in large distributed systems are: (1) evolving and managing different versions of an interface while minimizing the impact on existing clients; and (2) supporting the addition of auxiliary interfaces that are orthogonal to the main interface of an abstraction. In the cont ..."
Abstract
-
Cited by 10 (0 self)
- Add to MetaCart
Two specific problems faced in large distributed systems are: (1) evolving and managing different versions of an interface while minimizing the impact on existing clients; and (2) supporting the addition of auxiliary interfaces that are orthogonal to the main interface of an abstraction. In the context of the Spring distributed system, we addressed both problems using an object-oriented interface definition language. Different versions of an interface are represented as different types, with an inheritance relationship that minimizes the impact on existing clients, and allows easy management of versions. We distinguish between fundamental and auxiliary properties, each of which is defined as a separate type. Rather than use simple root inheritance, we use a combination of root and leaf inheritance. This provides flexibility in supporting auxiliary properties, and allows us to add new auxiliary properties as the system evolves, without forcing the system to be recompiled. The solutions have been tested and refined through their use in the Spring system.

