de.thaw.ps1.blatt8
Class Rechteck

java.lang.Object
  extended by de.thaw.ps1.blatt8.Rechteck
Direct Known Subclasses:
Aufgabe8_3

Deprecated. Die Verwendung dieser Klasse wird missbilligt, das sie nicht korrekt funktioniert und und in Zukunft durch eine korrekte Version ersetzt werden könnte.

public class Rechteck
extends Object

Ein Rechteck mit Kantenlängen, die auf ganze Zahlen beschränkt sind.

Entgegen des entsprechenden Hinweises im Übungsblatt 8 ist diese Klasse nicht die Musterlösung der Aufgabe 4 Rechteck revolutions des Übungsblatts 7. Bei dieser Implementierung der Aufgabe Rechteck revolutions treten nennenswerte Rundungsfehler auf, da intern ausschließlich Ganzzahlen (int) verwendet werden. Im Folgenden ist das tatsächliche (falsche) Verhalten der Klasse (im Gegensatz zum beabsichtigten Verhalten lt. Aufgabenstellung Blatt 7) dokumentiert.

Ein Beispiel für das Fehlverhalten der Klasse lautet wie folgt:

Rechteck rechteck = new Rechteck(3, 3);
System.out.println(rechteck.getVolumen());  // gibt 9 aus
rechteck.setLaenge(2);
System.out.println(rechteck.getVolumen());  // gibt 8 aus
 
Laut Aufgabenstellung in Blatt 7 sollte das Volumen des Rechtecks bei diesem Codebeispiel nicht verändert werden (es sollte hier also zweimal 9 ausgegeben werden).

Die Klasse Aufgabe7_4 sollte ursprünglich die Aufgabe korrekt lösen, ist aber (in der Version 1) ebenfalls nicht korrekt.

Version:
1
Author:
Dokumentation: Arne Johannessen; Java-Code: Christoph Weser, Udo Gentner
See Also:
8. Übungsblatt PS1, 7. Übungsblatt PS1, Rechteck, Aufgabe7_4, Rechteck

Field Summary
private  int breite
          Deprecated. Die Breite des Rechtecks.
private  int laenge
          Deprecated. Die Länge des Rechtecks.
private  int volumen
          Deprecated. Die Fläche des Rechtecks (im Gegensatz zum Volumen).
 
Constructor Summary
Rechteck(int laenge, int breite)
          Deprecated. Erstellt ein neues Rechteck.
 
Method Summary
 int getBreite()
          Deprecated. Zugriffsmethode.
 int getLaenge()
          Deprecated. Zugriffsmethode.
 int getVolumen()
          Deprecated. Berechnet die Fläche des Rechtecks.
 boolean isSquare()
          Deprecated. Stellt fest, ob dieses Rechteck quadratisch ist.
 void setBreite(int neueBreite)
          Deprecated. Die Verwendung dieser Methode wird missbilligt, das sie einen Rundungsfehler hat und und in Zukunft durch eine korrekte Version ersetzt werden könnte.
 void setLaenge(int neueLaenge)
          Deprecated. Die Verwendung dieser Methode wird missbilligt, das sie einen Rundungsfehler hat und und in Zukunft durch eine korrekte Version ersetzt werden könnte.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

laenge

private int laenge
Deprecated. 
Die Länge des Rechtecks.


breite

private int breite
Deprecated. 
Die Breite des Rechtecks.


volumen

private int volumen
Deprecated. 
Die Fläche des Rechtecks (im Gegensatz zum Volumen).

Constructor Detail

Rechteck

public Rechteck(int laenge,
                int breite)
Deprecated. 
Erstellt ein neues Rechteck. Die Instanzvariablen laenge und breite werden entsprechend der Parameter gesetzt.

Parameters:
laenge - die Länge des neuen Rechtecks
breite - die Breite des neuen Rechtecks
Method Detail

getLaenge

public int getLaenge()
Deprecated. 
Zugriffsmethode. Liefert die Länge des Rechtecks.

Returns:
den Wert der Instantvariable laenge

getBreite

public int getBreite()
Deprecated. 
Zugriffsmethode. Liefert die Breite des Rechtecks.

Returns:
den Wert der Instantvariable breite

isSquare

public boolean isSquare()
Deprecated. 
Stellt fest, ob dieses Rechteck quadratisch ist. Dazu werden die Instanzvariablen laenge und breite auf Gleichheit verglichen.

Returns:
true, falls es sich um ein Quadrat handelt

getVolumen

public int getVolumen()
Deprecated. 
Berechnet die Fläche des Rechtecks. Zur Berechnung werden die Instanzvariablen laenge und breite benutzt (und nicht die Instanzvariable volumen). Das Ergebnis wird nicht gespeichert, sondern nur zurückgegeben.

Returns:
das Produkt der Länge und der Breite des Rechtecks

setLaenge

public void setLaenge(int neueLaenge)
Deprecated. Die Verwendung dieser Methode wird missbilligt, das sie einen Rundungsfehler hat und und in Zukunft durch eine korrekte Version ersetzt werden könnte.

Berechnet und speichert die bisherige Fläche des Rechtecks, setzt die Länge auf den übergebenen Wert und verändert die Breite.

Hinweis: Diese Methode sollte laut Aufgabenstellung in Blatt 7 eigentlich anders funktionieren, als sie es tatsächlich tut; sie ist insofern nicht korrekt. Das hier beschriebene Verhalten ist allerdings die tatsächliche Funktionalität dieser Methode so, wie sie derzeit implementiert ist.

Diese Methode hat die folgenden drei Auswirkungen auf Instanzvariablen:

  1. volumen wird auf die bisherige (also innerhalb dieser Methode noch nicht veränderte) Fläche des Rechtecks gesetzt.
  2. laenge wird auf die in neueLaenge übergebene Länge gesetzt.
  3. breite wird auf das Ergebnis der ganzzahligen Division (int)(volumen / laenge) gesetzt. Ist volumen ohne Rest durch laenge teilbar, funktioniert diese Methode korrekt; andernfalls treten Rundungsfehler auf.

Parameters:
neueLaenge - die Länge, die das Rechteck fortan haben soll

setBreite

public void setBreite(int neueBreite)
Deprecated. Die Verwendung dieser Methode wird missbilligt, das sie einen Rundungsfehler hat und und in Zukunft durch eine korrekte Version ersetzt werden könnte.

Berechnet und speichert die bisherige Fläche des Rechtecks, setzt die Breiten auf den übergebenen Wert und verändert die Breite.

Hinweis: Diese Methode sollte laut Aufgabenstellung in Blatt 7 eigentlich anders funktionieren, als sie es tatsächlich tut; sie ist insofern nicht korrekt. Das hier beschriebene Verhalten ist allerdings die tatsächliche Funktionalität dieser Methode so, wie sie derzeit implementiert ist.

Diese Methode hat die folgenden drei Auswirkungen auf Instanzvariablen:

  1. volumen wird auf die bisherige (also innerhalb dieser Methode noch nicht veränderte) Fläche des Rechtecks gesetzt.
  2. breite wird auf die in neueBreite übergebene Breite gesetzt.
  3. laenge wird auf das Ergebnis der ganzzahligen Division (int)(volumen / breite) gesetzt. Ist volumen ohne Rest durch breite teilbar, funktioniert diese Methode korrekt; andernfalls treten Rundungsfehler auf.

Parameters:
neueBreite - die Breite, die das Rechteck fortan haben soll