Abstract
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.
Preview
Unable to display preview. Download preview PDF.
References
U.S. Department of Defense, Reference Manual for the Ada Programming Language, January 1983.
Pierre America, “Inheritance and Subtyping in a Parallel Object-Oriented Language”, ECOOP'87, pp. 234–242.
Andrew P. Black, Norman Hutchinson, “Typechecking Polymorphism in Emerald”, Digital Equipment Corporation, July 1991.
D. G. Bobrow, L. G. DeMichiel, R. P. Gabriel, S. E. Keene, G. Kiczales, D. A. Moon, Common Lisp Object System Specification X3J13, In SIGPLAN Notices 23 (Special Issue), September 1988.
Peter Canning, Walt Hill, Walter Olthoff, “Towards a Kernel Language for Object-Oriented Programming”, HP Tech. Report STL-88-21.
Peter Canning, W. Cook, Walt Hill, J. Mitchell, Walter Olthoff, “Fbounded polymorphism for object-oriented programming”, Proc. of Conf. on Functional Progr. Languages and Comp. Arch., 1989.
Peter Canning, William Cook, Walter Hill, Walter Olthoff, “Interfaces for Strongly-Typed Object-Oriented Programming”, OOPSLA'89, pp. 457–467.
Luca Cardelli, “A semantics of Multiple Inheritance”, In Semantics of Data Types (Lecture Notes in CS, 173), 1984, pp. 51–67.
Luca Cardelli, Peter Wegner, “On Understanding Types, Data Abstraction, and Polymorphism”, ACM Computing Surveys 17(4), December 1985, pp. 471–522.
William Cook, Jens Palsberg, “A Denotational Semantics of Inheritance and its Correctness”, OOPSLA'89, pp. 433–443.
William Cook, W.L. Hill, P.S. Canning, “Inheritance is not subtyping”, 17th ACM Symposium on Principles of Programming Languages, 1990, pp. 125–135.
Scott Danforth, Chris Tomlinson, “Type Theories and Object-Oriented Programming”, ACM Computing Surveys 20(1) 1988, pp. 29–72.
Mahesh Dodani, Chung-Shin Tsai, Tami Siu-Pui Lee, “TOPS: An Environment for Developing and Testing Type Systems for Object-Oriented Programming Languages”, submitted for consideration to OOPSLA'92.
Mahesh Dodani, Chung-Shin Tsai, “The Denotational Semantics of the Abstract/Concrete Model in SML”, Technical report, Dept. of Computer Science, The University of Iowa, in preparation.
Giorgio Ghelli, “Modelling features of object-oriented languages in second order functional languages with subtypes”, in Foundations of Object-Oriented Languages (G. Rozenberg ed.), Springer-Verlag, Berlin, 1991.
Giorgio Ghelli, “A Static Type System for Message Passing”, OOPSLA'91, pp. 129–145.
Adele Goldberg and David Robson, Smalltalk-80: The Language and its Implementation, Addison-Wesley, 1983.
Justin Graver, Ralph Johnson, “A Type System for Smalltalk”, POPL'90, 136–150.
Samuel Kamin, “Inheritance in SMALLTALK-80: A Denotational Definition”, Proceedings of the 15th ACM Symposium on Principles of Programming Languages, January 1988, pp. 80–87.
Bertrand Meyer, Object-oriented Software Construction, Prentice Hall, 1988.
John Mitchell, “Toward a typed foundation for method specialization and inheritance”, 17th ACM Symposium on Principles of Programming Languages, 1990, pp. 109–124.
R. Milner, “A Proposal for Standard ML”, Proc. ACM Conf. on Lisp and Functional Programming, Austin, 1984.
Uday Reddy, “Objects as Closures: Abstract Semantics of Object Oriented Languages”, 1988 ACM Conference on Lisp and Functional Programming, pp. 289–297.
Craig Schaffert, Topher Cooper, Bruce Bullis, Mike Kilian, Carrie Wilpolt, “An Introduction to Trellis/Owl”, OOPSLA'86, pp. 9–16.
Alan Snyder, “Inheritance and the Development of Encapsulated Software, Components”, In Research Directions in Object-Oriented Programming, pp. 165–188.
M. Wand, “Type inference for record concatenation and multiple inheritance”, Porc. of LICS, 1989, pp. 92–97.
Peter Wegner, Stanley Zdonik, “Inheritance as an Incremental Modification Mechanism or What Like Is and Isn't Like”, ECOOP'88, pp. 55–77.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1992 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Dodani, M., Tsai, CS. (1992). ACTS: A type system for object-oriented programming based on abstract and concrete classes. In: Madsen, O.L. (eds) ECOOP ’92 European Conference on Object-Oriented Programming. ECOOP 1992. Lecture Notes in Computer Science, vol 615. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0053044
Download citation
DOI: https://doi.org/10.1007/BFb0053044
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-55668-8
Online ISBN: 978-3-540-47268-1
eBook Packages: Springer Book Archive