Should Superclasses be 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.

[1]  Barry W. Boehm,et al.  A spiral model of software development and enhancement , 1986, Computer.

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

[3]  Mahesh H. Dodani,et al.  ACTS: A Type System for Object-Oriented Programming Based on Abstract and Concrete Classes , 1992, ECOOP.

[4]  L. P. Deutsch,et al.  Design reuse and frameworks in the smalltalk-80 system , 1989 .

[5]  Corrado Böhm,et al.  Flow diagrams, turing machines and languages with only two formation rules , 1966, CACM.

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

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

[8]  Jean Sammet,et al.  Farewell to Grace Hopper—end of an era! , 1992, CACM.

[9]  Bjarne Stroustrup,et al.  The Annotated C++ Reference Manual , 1990 .

[10]  Daniel C. Halbert,et al.  Using Types and Inheritance in Object-Oriented Programming , 1987, IEEE Software.

[11]  Markku Sakkinen,et al.  A Critique of the Inheritance Principles of C++ , 1992, Comput. Syst..

[12]  Norman Wilde,et al.  Maintaining object-oriented software , 1993, IEEE Software.

[13]  Wilf R. LaLonde,et al.  Smalltalk: subclassing subtyping is-a , 1991 .

[14]  Sonya E. Keene,et al.  Object-oriented programming in COMMON LISP - a programmer's guide to CLOS , 1989 .

[15]  Bertrand Meyer,et al.  Eiffel: The Language , 1991 .

[16]  Ronald J. Brachman,et al.  What IS-A Is and Isn't: An Analysis of Taxonomic Links in Semantic Networks , 1983, Computer.

[17]  Peter Wegner,et al.  Concepts and paradigms of object-oriented programming , 1990, OOPS.

[18]  Karl J. Lieberherr,et al.  Formal Foundations for Object-Oriented Data Modeling , 1993, IEEE Trans. Knowl. Data Eng..

[19]  Jim Waldo Controversy: The Case for Multiple Inheritance in C++ , 1991, Comput. Syst..

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

[21]  Jürgen F. H. Winkler,et al.  Objectivism: 'class' considered harmful , 1992 .

[22]  Bipin Indurkhya,et al.  The notion of inheritance in object-oriented programming , 1994, CACM.

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

[24]  B Boehm A spiral model of software development and enhancement , 1986, SOEN.