Off-campus Eastern Washington University users: To download EWU Only theses, please use the following link to log into our proxy server with your EWU NetID and password.

Non-EWU users: Please talk to your local librarian about requesting this thesis through Interlibrary loan.

Date of Award

Summer 1993


Access perpetually restricted to EWU users with an active EWU NetID

Document Type

Thesis: EWU Only

Degree Name

Master of Science (MS) in Computer Science


Computer Science


In this paper, two fundamental techniques (subtyping and inheritance) for reusing existing components in the design of complex systems are investigated. The objective is to raise the level of abstraction of our understanding of each technique by more rigorously defining them at an abstract level, thereby helping to clarify the choices available when creating realizations of each technique in less abstract contexts. Currently, a wide disparity exists between the deftnitions and approaches employed for implementing subtyping and inheritance, or S/ for short. Having created an abstract model explaining these two techniques, we seek to articulate it. We also survey popular realizations of the abstract notions of SI in the process of seeking to generalize and explain them in terms of our model. Abstraction plays the central role in any scheme supporting Sl. Most manifestations of subtyping are seen as partial orders on abstractions. Behavioral subtyping is the logical abstraction of the forms of subtyping surveyed. Behavioral subtyping is seen as a binary relation on a subset of abstraction representations -namely, those that are declared as types. One representation is related to another if it can be substituted for the other with no undesirable effects. The forms of subtyping, as portrayed in the surveyed literature, are then interpreted as modelling a more abstract idea. Speciftcally, they more, or less, attempt to model behavioral subtyping. This helps to explain the wide variety of sometimes, seemingly disparate interpretations of subtyping in the literature. They may simply be different implementations of the same basic idea. The forms of inheritance, as portrayed in the literature surveyed, are also interpreted as realizations of a more abstract relation. Numerous techniques exist, from mixin-based composition to multiple inheritance, for creating a new abstraction representation from existing ones. Furthermore, different taxonomies of these techniques result in the exclusion or inclusion of various techniques under the broad classification of inheritance. These taxonomies arise, at least in part, from limiting a broad interpretation of inheritance (i.e. any technique for creating something from existing things) to various relations (e.g. specialization, generalization, extension-of, restriction-of, etc.). We explained that in some models, the domain of the "things" that inheritance can be applied to can be expanded to include other kinds of abstraction representations (not necessarily present in the model). Thus, inheritance in these models might be considered overly restrictive. The classical object model (e.g. Smalltalk) limits inheritance to classes. Inheritance has been used not only with objects and classes, but also with interfaces (witness the implicit interface inheritance of Eiffel [Canning et al89], and that found in Portlandish [Porter92]). We observed that inheritance need not be limited to these kinds of abstractions, but can also be applied to a wide variety of abstraction representations (as defined by our abstract model of abstractions). Finally, we conclude that a unified view of SI exists from the perspective of an abstract sharing relationship. Specifically, behavioral subtyping is a sharing relationship based upon the behavior of abstractions, while inheritance is a sharing relationship between abstraction representations. Inheritance mechanisms can be used to induce specific kinds of inheritance relationships between an inheritor and its inherited representations. These inheritance relationships might model other relationships. Subtyping can be modelled by inheritance relationships when an inheritance mechanism is constrained so as to induce relationships that preserve the desired subtype relationships. Another important result is that our work supports the idea that the use of a single inheritance relation to model multiple kinds of relationships (e.g. those mentioned above) may not be as effective as using multiple inheritance relations, where each could be tailored specifically for modelling one kind of relationship. We hope that capturing the quint-essential nature of subtyping and inheritance in a philosophical model of abstractions can facilitate construction of models applying each of these reuse techniques. Furthermore, widening the scope of usage (the kinds of abstractions) to which each can be applied may offer opportunities to improve productivity in the development of representations for abstractions.