Notes on Typed Object-Oriented Programming

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. We summarize and compare three object models used in the theoretical literature. We also consider approaches to a few technical problems, including changes in the type of a method (member function) from super (base) class to sub (derived) 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]  Grady Booch,et al.  Object-Oriented Design with Applications , 1990 .

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

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

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

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

[6]  David C. Luckham,et al.  Polymorphism and Subtyping in Interfaces , 1994, Workshop on Interface Definition Languages.

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

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

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

[10]  CastagnaGiuseppe,et al.  A calculus for overloaded functions with subtyping , 1992 .

[11]  Robin Milner,et al.  Definition of standard ML , 1990 .

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

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

[14]  John C. Mitchell,et al.  Abstract types have existential type , 1988, TOPL.

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

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

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

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

[19]  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 .

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

[21]  Henry Lieberman,et al.  Using Prototypical Objects to Implement Shared Behavior in Object Oriented Systems , 1986, OOPSLA.

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

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

[24]  Benjamin C. Pierce,et al.  Object-oriented programming without recursive types , 1993, POPL '93.

[25]  William R. Cook,et al.  A Proposal for Making Eiffel Type-Safe , 1989, Comput. J..

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

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

[28]  O. J. Dahl,et al.  Simula Begin , 1979 .

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

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

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

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

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

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

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

[36]  Bertrand Meyer,et al.  Eiffel: The Language , 1991 .

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

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

[39]  Kim B. Bruce,et al.  A Modest Model of Records, Inheritance and Bounded Quantification , 1990, Inf. Comput..

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

[41]  Craig Chambers,et al.  Customization: optimizing compiler technology for SELF, a dynamically-typed object-oriented programming language , 1989, PLDI '89.

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

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

[44]  Guy L. Steele,et al.  Common Lisp the Language , 1984 .

[45]  R. E. A. Mason,et al.  Information Processing 83 , 1984 .

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

[47]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Information and Computation.

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

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

[50]  Henry Ledgard,et al.  Reference Manual for the ADA® Programming Language , 1983, Springer New York.

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

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

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

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

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

[56]  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.

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

[58]  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.

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

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

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

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