[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: OO should break when broken
On Thursday, September 4, 2003, at 10:59 AM, John Clements wrote:
>> No. Obviously there isn't. Let me rephrase my claim: "For every valid
>> instance of LinkedList, there is at least one valid instance of
>> LinkedListWithFastSize." The same holds true for
>> LinkedListWithTimeStamp: "For every valid instance of LinkedList,
>> there is at least one valid instance of LinkedListWithTimeStamp." Was
>> your objection to my loose usage of 'valid LinkedList,' or to my
>> broader position on subclassing?
>> The point is that the full range of state that is valid in the
>> superclass is also valid in the subclass. It isn't restricted, which
>> Vesa claimed was "the essence of a subclass."
> No, I disagree. It _is_ restricted. How is it restricted? It is
> restricted because it _must_ contain the extra state. So, for
> instance, the LinkedListWithTimeStamp restricts the LinkedList by
> requiring the presence of the TimeStamp state. Likewise, the
> LinkedListWithFastSize restricts the LinkedList by requiring the
> presence of the cached size state.
> I think the key point is that the set of "LinkedLists" doesn't just
> include direct instances of LinkedList; it also includes instances of
> any possible subclass thereof.
> Here's my argument:
> 1. if B is a subclass of A, then A is the more general one. Always.
This is getting ridiculous.
I'm not interested in debating the meaning of the word restricts, or
the semantics of the set of all possible instances of a hypothetical
class. You're quibbling about minor details of my overall argument, but
completely ignoring my conclusion.
Unless somebody wants to post code in an OO language showing an
implementation of Circle as a useful subclass of Ellipse, this is my
last post in this thread.