Keynote address - data abstraction and hierarchy
OOPSLA '87 Addendum to the proceedings on Object-oriented programming systems, languages and applications (Addendum)
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
Making the future safe for the past: adding genericity to the Java programming language
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
The Java programming language (2nd ed.)
The Java programming language (2nd ed.)
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
A Theory of Objects
Hi-index | 0.00 |
In the past, object-oriented design focused on encapsulation and inheritance as primary concepts. Therefore, there has been a lot of work in the domain of inheritance and the problems coming up, i.e. with covariant type systems. Recently, parameterized (generic) classes become more popular in object-oriented design. While the use of genericity in functional languages is well known and delivers no major problems, the situation in object-oriented languages differs: The combination of inheritance with genericity raises problems. This paper describes the theoretical foundations of designing and using generic classes in object-oriented systems. It discusses the possible relationships between generic subclasses as well as those between specialized instances of one generic class. The ideas presented here use the concept of context dependent subtypes, so-called weak subtypes, to define criteria for correctness, well formedness and substitutability.