The Development of Type Systems for Object-Oriented Languages

This paper, which is partly tutorial in nature, summarizes some basic research goals in the study and development of typed object-oriented programming languages. These include both immediate repairs to problems with existing languages and the long-term development of more flexible and expressive, yet type-safe, approaches to program organization and design. The technical part of the paper is a summary and comparison of three object models from the literature. We conclude by discussing approaches to selected research problems, including changes in the type of a method from super class to sub class and the use of types that give information about the implementations as well as the interfaces of objects. Such implementation types seem essential for adequate typing of binary operations on objects, for example.

[1]  Pavel Curtis Constrained qualification in polymorphic type analysis , 1990 .

[2]  Grady Booch,et al.  Object-Oriented Design with Applications , 1990 .

[3]  Craig Schaffert,et al.  Abstraction mechanisms in CLU , 1977, Commun. ACM.

[4]  Kim B. Bruce Safe type checking in a statically-typed object-oriented programming language , 1993, POPL '93.

[5]  Martín Abadi,et al.  On subtyping and matching , 1995, TOPL.

[6]  William R. Cook,et al.  A self-ish model of inheritance , 1987 .

[7]  Benjamin C. Pierce,et al.  Statically typed friendly functions via partially abstract types , 1993 .

[8]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Inf. Comput..

[9]  Jonathan Rees,et al.  T: a dialect of Lisp or LAMBDA: The ultimate software tool , 1982, LFP '82.

[10]  Luca Cardelli,et al.  Subtyping recursive types , 1991, POPL '91.

[11]  Martín Abadi,et al.  An Imperative Object Calculus , 1995, TAPSOFT.

[12]  J. Girard Une Extension De ĽInterpretation De Gödel a ĽAnalyse, Et Son Application a ĽElimination Des Coupures Dans ĽAnalyse Et La Theorie Des Types , 1971 .

[13]  Martín Abadi,et al.  Baby Modula-3 and a theory of objects , 1994, Journal of Functional Programming.

[14]  Alan Borning,et al.  A type declaration and inference system for smalltalk , 1982, POPL '82.

[15]  Martin Hofmann,et al.  Positive subtyping , 1995, POPL '95.

[16]  John C. Mitchell Toward a typed foundation for method specialization and inheritance , 1989, POPL '90.

[17]  Lynn Andrea Stein,et al.  Delegation is inheritance , 1987, OOPSLA '87.

[18]  Henry Lieberman,et al.  Using prototypical objects to implement shared behavior in object-oriented systems , 1986, OOPLSA '86.

[19]  Jean D. etc. Ichbiah Reference Manual for the ADA Programming Language , 1983 .

[20]  Jeffrey D. Ullman Elements of ML programming , 1994 .

[21]  E. Ford,et al.  POLYMORPHISM , 1945, Encyclopedic Dictionary of Archaeology.

[22]  Alan Snyder Encapsulation and inheritance in object-oriented programming languages , 1986, OOPSLA 1986.

[23]  John C. Reynolds,et al.  Types, Abstraction and Parametric Polymorphism , 1983, IFIP Congress.

[24]  Benjamin C. Pierce,et al.  Simple type-theoretic foundations for object-oriented programming , 1994, Journal of Functional Programming.

[25]  John C. Mitchell,et al.  An extension of standard ML modules with subtyping and inheritance , 1991, POPL '91.

[26]  Martín Abadi,et al.  A Theory of Primitive Objects - Untyped and First-Order Systems , 1994, TACS.

[27]  Kim B. Bruce,et al.  PolyTOIL: A Type-Safe Polymorphic Object-Oriented Language , 1995, ECOOP.

[28]  Luca Cardelli,et al.  Extensible records in a pure calculus of subtyping , 1994 .

[29]  David C. Luckham,et al.  A new approach to prototyping Ada-based hardware/software systems , 1990, TRI-Ada '90.

[30]  John C. Mitchell,et al.  A Delegation-based Object Calculus with Subtying , 1995, FCT.

[31]  Gary T. Leavens,et al.  Typechecking and modules for multi-methods , 1994, OOPSLA '94.

[32]  William R. Cook,et al.  Inheritance is not subtyping , 1989, POPL '90.

[33]  Kim B. Bruce,et al.  A modest model of records, inheritance and bounded quantification , 1988, [1988] Proceedings. Third Annual Information Symposium on Logic in Computer Science.

[34]  Edsger W. Dijkstra,et al.  Notes on structured programming , 1970 .

[35]  Ravi Sethi,et al.  Programming languages - concepts and constructs , 1988 .

[36]  Robin Milner The standard ML core language , 1984 .

[37]  Gary T. Leavens,et al.  Typechecking and Modules for Multimethods , 1995, ACM Trans. Program. Lang. Syst..

[38]  John C. Mitchell,et al.  A type system for prototyping languages , 1994, POPL '94.

[39]  William R. Cook,et al.  Interfaces and specifications for the Smalltalk-80 collection classes , 1992, OOPSLA.

[40]  J. Y. Girard,et al.  Interpretation fonctionelle et elimination des coupures dans l'aritmetique d'ordre superieur , 1972 .

[41]  Giuseppe Castagna,et al.  A calculus for overloaded functions with subtyping , 1992, LFP '92.

[42]  William R. Cook,et al.  A denotational semantics of inheritance , 1989 .

[43]  James H. Morris,et al.  Types are not sets , 1973, POPL.

[44]  Jonathan Rees,et al.  Object-oriented programming in scheme , 1988, LFP '88.

[45]  Luca Cardelli,et al.  On understanding types, data abstraction, and polymorphism , 1985, CSUR.

[46]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[47]  John C. Mitchell,et al.  Polymorphism and Subtyping in Interfaces , 1994, Workshop on Interface Definition Languages.

[48]  Craig Schaffert,et al.  CLU Reference Manual , 1984, Lecture Notes in Computer Science.

[49]  Robin Milner,et al.  Commentary on standard ML , 1990 .

[50]  Bjarne Stroustrup,et al.  The Annotated C++ Reference Manual , 1990 .

[51]  John C. Mitchell,et al.  A lambda calculus of objects and method specialization , 1993, [1993] Proceedings Eighth Annual IEEE Symposium on Logic in Computer Science.

[52]  Peter Buneman,et al.  Theoretical Aspects of Object-Oriented Programming , 1994 .

[53]  Kim B. Bruce The Equivalence of Two Semantic Definitions for Inheritance in Object-Oriented Languages , 1991, MFPS.

[54]  Randall B. Smith,et al.  SELF: The power of simplicity , 1987, OOPSLA '87.

[55]  John C. Mitchell,et al.  Notes on Typed Object-Oriented Programming , 1994, TACS.

[56]  John C. Mitchell,et al.  Abstract types have existential types , 1985, POPL.