[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: OO should break when broken

On Monday, September 1, 2003, at 04:05  AM, Geoffrey Knauth wrote:

> On Monday, September 1, 2003, at 06:14 AM, Colin Putney wrote:
>> An ellipse is a circle with additional capabilities - it can have 
>> different radii along each of its dimensions.
> This reminds me of something that bothers me about OO:  the 
> accumulation of unused stuff.  When I extend Circle to make Ellipse, I 
> add x-radius and y-radius, but the original radius instance variable 
> is still there.  Since I'm not going to use Circle's radius any more, 
> I wish I could just ask it to go away, if the compiler or runtime 
> could verify it isn't needed by methods I decide not to override.

That's more a naming issue than anything else. There's no need to have 
the original radius go unused. Just designate it as being the x-radius 
and only add one instance variable for y-radius. With appropriately 
named accessor methods, it won't even look funny in the code.

Ultimately, though, I don't think there's much point in having a Circle 
class at all, since Ellipse would end up overriding most of its methods 
anyway. All you really need is a convenience constructor for creating 
circular ellipses.