Static Typing for Object-Oriented Programming

Abstract We develop a theory of statically typed object-oriented languages. It represents classes as labeled, regular trees, types as finite sets of classes, and subclassing as a partial order on trees. We show that our subclassing order strictly generalizes inheritance, and that a novel genericity mechanism arises as an order-theoretic complement. This mechanism, called class substitution, is pragmatically useful and can be implemented efficiently.

[1]  Michael I. Schwartzbach,et al.  Static Correctness of Hierarchical Procedures , 1989, Theor. Comput. Sci..

[2]  Peter Wegner,et al.  Dimensions of object-based language design , 1987, OOPSLA '87.

[3]  Gill Smith,et al.  Object-oriented analysis , 1988, WADAS '88.

[4]  G. Grätzer General Lattice Theory , 1978 .

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

[6]  Alfred V. Aho,et al.  The Design and Analysis of Computer Algorithms , 1974 .

[7]  Luca Cardelli,et al.  Typeful Programming , 1989, Formal Description of Programming Concepts.

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

[9]  Jens Palsberg,et al.  Object-oriented type systems , 1994, Wiley professional computing.

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

[11]  Bent Bruun Kristensen,et al.  Classification of Actions, or Inheritance also for Methods , 1987, ECOOP.

[12]  Niklaus Wirth,et al.  Programming in Modula-2 , 1985, Texts and Monographs in Computer Science.

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

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

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

[16]  Luca Cardelli,et al.  Subtyping recursive types , 1993 .

[17]  Stanley B. Zdonik,et al.  Inheritance as an Incremental Modification Mechanism or What Like Is and Isn't Like , 1988, ECOOP.

[18]  Uday S. Reddy,et al.  Objects as closures: abstract semantics of object-oriented languages , 1988, LISP and Functional Programming.

[19]  Ronald L. Rivest,et al.  The Design and Analysis of Computer Algorithms , 1990 .

[20]  Luca Cardelli,et al.  Operations on records , 1989, Mathematical Structures in Computer Science.

[21]  John C. Mitchell,et al.  F-bounded polymorphism for object-oriented programming , 1989, FPCA.

[22]  David Sandberg,et al.  An alternative to subclassing , 1986, OOPLSA '86.

[23]  William Cook,et al.  A Proposal for Making Eiel Type-safe , 1989 .

[24]  Bent Bruun Kristensen,et al.  The BETA Programming Language , 1987, Research Directions in Object-Oriented Programming.

[25]  Peter Buneman,et al.  OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications , 1989 .

[26]  Ralph Johnson,et al.  Type-Checking Smalltalk , 1986, OOPSLA.

[27]  Jens Palsberg,et al.  A Denotational Semantics of Inheritance and its Correctness , 1989, OOPSLA.

[28]  Craig Schaffert,et al.  An introduction to Trellis/Owl , 1986, OOPSLA 1986.

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

[30]  Claus H. Pedersen,et al.  Extending ordinary inheritance schemes to include generalization , 1989, OOPSLA '89.

[31]  Al Stevens,et al.  C programming , 1990 .

[32]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[33]  William R. Cook,et al.  Mixin-based inheritance , 1990, OOPSLA/ECOOP '90.

[34]  Ole Lehrmann Madsen,et al.  Virtual classes: a powerful mechanism in object-oriented programming , 1989, OOPSLA '89.

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

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

[37]  Ralph E. Johnson,et al.  A type system for Smalltalk , 1989, POPL '90.

[38]  Ralph E. Johnson,et al.  Type-checking Smalltalk , 1986, OOPLSA '86.

[39]  Bertrand Meyer Genericity versus inheritance , 1986, OOPSLA 1986.

[40]  Jens Palsberg,et al.  What is Type-Safe Code Reuse? , 1990, ECOOP.

[41]  H. Kästner Niklaus Wirth: Programming in Modula-2: Springer Verlag, 1982, 176 pages. DM 29.80; approx. US $ 12.50 , 1983 .

[42]  Ronald J. Brachman,et al.  "I Lied About the Trees", Or, Defaults and Definitions in Knowledge Representation , 1985, AI Mag..

[43]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[44]  Brad J. Cox,et al.  Object-oriented programming ; an evolutionary approach , 1986 .

[45]  Justin O. Graver,et al.  Type checking and type inference for object-oriented programming languages , 1989 .

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

[47]  WegnerPeter,et al.  On understanding types, data abstraction, and polymorphism , 1985 .

[48]  Peter Buneman,et al.  Static type inference for parametric classes , 1989, OOPSLA 1989.

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

[50]  Robin Milner,et al.  A Theory of Type Polymorphism in Programming , 1978, J. Comput. Syst. Sci..

[51]  Michael I. Schwartzbach,et al.  Type Inference with Inequalities , 1990, TAPSOFT, Vol.1.

[52]  Karl J. Lieberherr,et al.  Contributions to Teaching Object Oriented Design and Programming , 1989, OOPSLA.

[53]  Jens Palsberg,et al.  Object-oriented type inference , 1991, OOPSLA '91.

[54]  Bruno Courcelle,et al.  Fundamental Properties of Infinite Trees , 1983, Theor. Comput. Sci..

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

[56]  David S. Touretzky,et al.  The Mathematics of Inheritance Systems , 1984 .

[57]  Scott Danforth,et al.  Type theories and object-oriented programmimg , 1988, CSUR.

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

[59]  Samuel N. Kamin Inheritance in smalltalk-80: a denotational definition , 1988, POPL '88.

[60]  William R. Cook,et al.  Interfaces for strongly-typed object-oriented programming , 1989, OOPSLA '89.

[61]  Jens Palsberg,et al.  Type substitution for object-oriented programming , 1990, OOPSLA/ECOOP '90.

[62]  Ole Lehrmann Madsen,et al.  Strong typing of object-oriented languages revisited , 1990, OOPSLA/ECOOP '90.

[63]  Karl Lieberherr,et al.  Contributions to teaching object-oriented design and programming , 1989, OOPSLA 1989.