ACTS: A Type System for Object-Oriented Programming Based on Abstract and Concrete Classes

The inheritance mechanism facilitates incremental modification and is the basis for the many advantages and popularity of the object oriented paradigm. The overloading of inheritance to describe different relationship requires a semantic model to facilitate “safe” redefinition between classes. Current approaches use type systems to ensure “safe” redefinitions, and are not capable of handling all the different uses of inheritance naturally. This paper develops a uniform type system built on a hierarchy which distinguishes between abstract and concrete classes. We show how such a structure on the hierarchy can be exploited to describe all common uses of inheritance in a natural way. Finally, we develop the formalism to define abstract and concrete classes and their relationships; and the type system along with the static type checker and the semantic model to interpret type safety.

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

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

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

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

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

[6]  Mitchell Wand,et al.  Type inference for record concatenation and multiple inheritance , 1989, [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science.

[7]  Giorgio Ghelli A static type system for message passing , 1991, OOPSLA 1991.

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

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

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

[11]  Robin Milner,et al.  A proposal for standard ML , 1984, LFP '84.

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

[13]  Pierre America,et al.  Inheritance and Subtyping in a Parallel Object-Oriented Language , 1987, ECOOP.

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

[15]  Giorgio Ghelli,et al.  Modelling Features of Object-Oriented Languages in Second Order Functional Languages with Subtypes , 1990, REX Workshop.

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

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

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

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

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

[21]  Daniel G. Bobrow,et al.  Common lisp object system specification , 1988, SIGP.