Abstract
In object-oriented design and languages, abstractness of classes is a concept whose relationship to other concepts is not yet fully understood and agreed upon. This paper clarifies the concept of abstractness and examines the relationship between abstractness and inheritance. It does this by discussing several aspects of the so-called abstract superclass rule, a design rule for object-oriented programming which requires that all superclasses be abstract. In the course of this discussion, we evaluate in which situations this rule should be considered beneficial.
Preview
Unable to display preview. Download preview PDF.
References
Kenneth Baclawski and Bipin Indurkhya. The notion of inheritance in object-oriented programming. Communications of the ACM, 36, 1994. Technical correspondence; accepted for publication.
Corrado Böhm and Giuseppe Jacopini. Flow Diagrams, Turing Machines and Languages with only Two Formation Rules. Communications of the ACM, 9(5):366–371, May 1966.
B. W. Boehm. A Spiral Model of Software Development and Enhancement. Software Engineering Notes, 11(4), 1986.
Ronald J. Brachman. What IS-A Is and Isn't: An Analysis of Taxonomic Link in Semantic Networks. IEEE Computer Magazine, 16(10):30–36, October 1983.
Peter S. Canning, William R. Cook, Walter L. Hill, and Walter G. Olthoff. Interfaces for strongly-typed object-oriented programming. In Norman Meyrowitz, editor, Object-Oriented Programming Systems, Languages and Applications Conference, pages 457–467, New Orleans, Louisiana, October 1989. ACM Press. Special Issue of SIGPLAN Notices, Vol.24, No.10.
William R. Cook. A Proposal for Making Eiffel Type-Safe. The Computer Journal, 32(4):305–311, 1989. A preliminary version of this paper appeared in the proceedings of ECOOP '89.
L. Peter Deutsch. Reusability in the Smalltalk-80 Programming System. In Proceedings of the Workshop on Reusability in Programming, pages 72–76. ITT, 1983.
L. Peter Deutsch. Design Reuse and Frameworks in the Smalltalk-80 System. In Ted J. Biggerstaff and Alan J. Perlis, editors, Software Reusability; Volume II, Applications and Experience, chapter 3, pages 57–71. ACM Press, 1989. ISBN 0-201-50018-3.
Mahesh Dodani and Chung-Shin Tsai. ACTS: A Type System for Object-Oriented Programming Based on Abstract and Concrete Classes. In O. Lehrman Madsen, editor, European Conference on Object-Oriented Programming, pages 309–324, Utrecht, The Netherlands, June/July 1992. Springer Verlag, Lecture Notes in Computer Science. Vol. 615.
Margaret A. Ellis and Bjarne Stroustrup. The Annotated C++ Reference Manual. Addison-Wesley, Reading, MA, 1990. ISBN 0-201-51459-1.
Adele Goldberg and David Robson. Smalltalk-80, the Language and its Implementation. Addison-Wesley, Reading, MA, 1983. ISBN 0-201-11371-6.
John A. Grosberg. Comments on considering ‘class’ harmful. Communications of the ACM, 36(1):113–114, January 1993. Technical correspondence.
Daniel C. Halbert and Patrick D. O'Brien. Using types and inheritance in object-oriented programming. IEEE Software, 4(5):71–79, September 1987.
Walter L. Hürsch. Covariance in the presence of the abstract superclass rule. Technical Report NU-CCS-94-04, College of Computer Science, Northeastern University, Boston, MA, March 1994.
Ralph E. Johnson and Brian Foote. Designing reusable classes. Journal of Object-Oriented Programming, pages 22–35, June/July 1988.
Ralph Johnson. Abstract superclasses in object-oriented libraries. Private communication, November 1993.
Sonya E. Keene. Object-Oriented Programming in Common Lisp: A Programmer's Guide to CLOS. Addison-Wesley, Reading, MA, 1989. ISBN 0-201-17589-4.
Wilf LaLonde and John Pugh. Subclassing ≠Subtyping ≠Is-a. Journal of Object-Oriented Programming, 3(5):57–62, January 1991.
Karl J. Lieberherr and Cun Xiao. Formal Foundations for Object-Oriented Data Modeling. IEEE Transactions on Knowledge and Data Engineering, 5(6), June 1993.
Bertrand Meyer. Object-Oriented Software Construction. International Series in Computer Science. Prentice-Hall, Englewood Cliffs, NJ, 1988. ISBN 0-13-629049-3.
Bertrand Meyer. Eiffel: The Language. Object-Oriented Series. Prentice-Hall, Englewood Cliffs, NJ, 1992. ISBN 0-13-247925-7.
Arthur J. Riel. Object-Oriented Design Heuristics: Gateways for Design Transformation Patterns. Submitted for publication, February 1994.
Markku Sakkinen. A Critique of the Inheritance Principles of C++. Computing Systems, The Journal of the USENIX Association, 5(1):69–110, Winter 1992.
Ignacio Silva-Lepe, Walter L. Hürsch, and Greg Sullivan. A Report on Demeter/C++. C++ Report, 6(2):24–30, February 1994.
Chung-Shin Tsai. Corrections to the Abstract Concrete Type System. Private communication, March 1994.
Jim Waldo. Controversy: The Case for Multiple Inheritance in C++. Computing Systems, The Journal of the USENIX Association, 4(2):157–171, 1991.
Peter Wegner. Concepts and paradigms of object-oriented programming. OOPS Messenger, 1(1):7–87, January 1990.
Jürgen F. H. Winkler. Objectivism: ‘class’ considered harmful. Communications of the ACM, 35(8):128–130, August 1992. Technical correspondence.
Norman Wilde, Paul Matthews, and Ross Huitt. Maintaining object-oriented software. IEEE Software, 10(1):75–80, January 1993.
Peter Wegner and Stanley B. Zdonik. Inheritance as an Incremental Modification Mechanism or What Like Is and Isn't Like. In S. Gjessing and K. Nygaard, editors, European Conference on Object-Oriented Programming, pages 55–77, Oslo, Norway, August 1988. Springer Verlag, Lecture Notes in Computer Science.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1994 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Hürsch, W.L. (1994). Should superclasses be abstract?. In: Tokoro, M., Pareschi, R. (eds) Object-Oriented Programming. ECOOP 1994. Lecture Notes in Computer Science, vol 821. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0052174
Download citation
DOI: https://doi.org/10.1007/BFb0052174
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-58202-1
Online ISBN: 978-3-540-48567-4
eBook Packages: Springer Book Archive