Re: 7.0 wishlist?



Andreas Leitgeb wrote:
Joshua Cranmer <Pidgeot18@xxxxxxxxxxxxxxx> wrote:
Note, for example, that making a Square class extend a Rectangle (since a Square is-a Rectangle) does not actually work since it would fail to match the Rectangle's contract.

I may not understand your example in all its possible deepness, but
what type of rectangle-related contract do you have in mind, that is not met by a square? I hope it is not something like "width!=height
must be allowed": such types of contracts would thwart almost every "is-a" relation.

This is the example I've seen:

void assertContract(Rectangle r) {
int width = r.getWidth();
r.setHeight(5);
assert width == r.getWidth();
}

The idea that changing the height does not change the width is what is violated. A more general way of putting it is that it violates the contract that properties (most of them, in any case) are distinct and individually modifiable without affecting others.

--
Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth
.



Relevant Pages

  • Re: 7.0 wishlist?
    ... making a Square class extend a Rectangle ... what type of rectangle-related contract do you have in mind, ... Square is-a rectangle doesn't work for mutable types: if you modify ...
    (comp.lang.java.programmer)
  • Re: 7.0 wishlist?
    ... making a Square class extend a Rectangle ... does not actually work since it would fail to match the Rectangle's ... what type of rectangle-related contract do you have in mind, ...
    (comp.lang.java.programmer)
  • Re: Why is OO Popular?
    ... Ellipses are circles is horribly wrong and squares are rectangles is ... Circles are ellipses breaks LSP ... > rectangle can be changed independently ... square value in a rectangle variable or a square value in a square ...
    (comp.object)
  • Re: Agile Ecosystems Vs (Rational) Unified Process
    ... > conflict between Rectangle and Square, and not one line of code ... and practice on the other are seen as mostly independent and separate ... Google Home - Advertising Programs - Business Solutions - About Google ...
    (comp.object)
  • Re: SubTyping versus SubClassing
    ... small subset of ones used in mathematics. ... >> which you'd better have a square for each rectangle, ... Operations defined on the types are that theorems we have to prove ...
    (comp.object)