Skip to main content

Should superclasses be abstract?

  • Conference paper
  • First Online:
Object-Oriented Programming (ECOOP 1994)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 821))

Included in the following conference series:

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Kenneth Baclawski and Bipin Indurkhya. The notion of inheritance in object-oriented programming. Communications of the ACM, 36, 1994. Technical correspondence; accepted for publication.

    Google Scholar 

  2. 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.

    Article  Google Scholar 

  3. B. W. Boehm. A Spiral Model of Software Development and Enhancement. Software Engineering Notes, 11(4), 1986.

    Google Scholar 

  4. 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.

    Google Scholar 

  5. 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.

    Google Scholar 

  6. 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.

    Article  Google Scholar 

  7. L. Peter Deutsch. Reusability in the Smalltalk-80 Programming System. In Proceedings of the Workshop on Reusability in Programming, pages 72–76. ITT, 1983.

    Google Scholar 

  8. 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.

    Google Scholar 

  9. 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.

    Google Scholar 

  10. Margaret A. Ellis and Bjarne Stroustrup. The Annotated C++ Reference Manual. Addison-Wesley, Reading, MA, 1990. ISBN 0-201-51459-1.

    Google Scholar 

  11. Adele Goldberg and David Robson. Smalltalk-80, the Language and its Implementation. Addison-Wesley, Reading, MA, 1983. ISBN 0-201-11371-6.

    Google Scholar 

  12. John A. Grosberg. Comments on considering ‘class’ harmful. Communications of the ACM, 36(1):113–114, January 1993. Technical correspondence.

    Google Scholar 

  13. Daniel C. Halbert and Patrick D. O'Brien. Using types and inheritance in object-oriented programming. IEEE Software, 4(5):71–79, September 1987.

    Google Scholar 

  14. 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.

    Google Scholar 

  15. Ralph E. Johnson and Brian Foote. Designing reusable classes. Journal of Object-Oriented Programming, pages 22–35, June/July 1988.

    Google Scholar 

  16. Ralph Johnson. Abstract superclasses in object-oriented libraries. Private communication, November 1993.

    Google Scholar 

  17. 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.

    Google Scholar 

  18. Wilf LaLonde and John Pugh. Subclassing ≠ Subtyping ≠ Is-a. Journal of Object-Oriented Programming, 3(5):57–62, January 1991.

    Google Scholar 

  19. Karl J. Lieberherr and Cun Xiao. Formal Foundations for Object-Oriented Data Modeling. IEEE Transactions on Knowledge and Data Engineering, 5(6), June 1993.

    Google Scholar 

  20. Bertrand Meyer. Object-Oriented Software Construction. International Series in Computer Science. Prentice-Hall, Englewood Cliffs, NJ, 1988. ISBN 0-13-629049-3.

    Google Scholar 

  21. Bertrand Meyer. Eiffel: The Language. Object-Oriented Series. Prentice-Hall, Englewood Cliffs, NJ, 1992. ISBN 0-13-247925-7.

    Google Scholar 

  22. Arthur J. Riel. Object-Oriented Design Heuristics: Gateways for Design Transformation Patterns. Submitted for publication, February 1994.

    Google Scholar 

  23. Markku Sakkinen. A Critique of the Inheritance Principles of C++. Computing Systems, The Journal of the USENIX Association, 5(1):69–110, Winter 1992.

    Google Scholar 

  24. Ignacio Silva-Lepe, Walter L. Hürsch, and Greg Sullivan. A Report on Demeter/C++. C++ Report, 6(2):24–30, February 1994.

    Google Scholar 

  25. Chung-Shin Tsai. Corrections to the Abstract Concrete Type System. Private communication, March 1994.

    Google Scholar 

  26. Jim Waldo. Controversy: The Case for Multiple Inheritance in C++. Computing Systems, The Journal of the USENIX Association, 4(2):157–171, 1991.

    Google Scholar 

  27. Peter Wegner. Concepts and paradigms of object-oriented programming. OOPS Messenger, 1(1):7–87, January 1990.

    Google Scholar 

  28. Jürgen F. H. Winkler. Objectivism: ‘class’ considered harmful. Communications of the ACM, 35(8):128–130, August 1992. Technical correspondence.

    Google Scholar 

  29. Norman Wilde, Paul Matthews, and Ross Huitt. Maintaining object-oriented software. IEEE Software, 10(1):75–80, January 1993.

    Article  Google Scholar 

  30. 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.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Mario Tokoro Remo Pareschi

Rights and permissions

Reprints 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

Publish with us

Policies and ethics