
// ...

public class Rechteck {

   // ...

   /**
    * Gibt an, ob dieses Rechteck einem bestimmten Objekt "gleich" ist.
    * Dies ist der Fall, wenn auch das Objekt ein Rechteck ist
    * und die gleiche Lnge und Breite wie dieses Rechteck hat.
    *
    * @param o das Objekt, mit dem dieses Rechteck verglichen werden soll.
    */
   public boolean equals(Object o) {
      return o != null                            &&
             this.getClass() == o.getClass()      &&
             this.laenge == ((Rechteck) o).laenge &&
             this.breite == ((Rechteck) o).breite;
   }

   /**
    * Liefert den Hashcode dieses Rechtecks.
    */
   public int hashCode() {
      /* eine mgliche Lsung: */
      long bits = Double.doubleToLongBits(laenge) * 31 + 
                  Double.doubleToLongBits(breite);
      return (int) ((bits >> 32) ^ bits);
      /* eine andere mgliche Lsung: */
      /* return (int) laenge * 6161.616161 + breite * 7.27272; */
   }

}
