previous next contents top An extensive discussion of subtyping, insidious problems with subclassing, and practical rules to avoid them. Does OOP really separate interface from implementation? The manifestation of a problem: an example of how an implementation inheritance prevents separation of interface and implementation Subtyping vs. Subclassing Explanation why the problem above happened Subclassing errors, OOP style and practically checkable to prevent them Demonstration how statically checkable rules can prevent the problem from occurring [a separate document] A more formal and general presentation of this topic is given in a paper and a talk at a Monterey 2001 workshop (June 19-21, 2001, Monterey, CA): Subtyping-OOP.ps.gz [35K] and MTR2001-Subtyping-talk.ps.gz [67K] Decoupling of abstraction from implementation is one of the holy grails of good design. Object...