|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object de.thaw.ps1.blatt8.Rechteck
public class Rechteck
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
9ausgegeben werden).
Die Klasse Aufgabe7_4
sollte
ursprünglich die Aufgabe korrekt lösen, ist aber (in der Version 1)
ebenfalls nicht korrekt.
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 |
---|
private int laenge
private int breite
private int volumen
Constructor Detail |
---|
public Rechteck(int laenge, int breite)
laenge
und breite
werden entsprechend der Parameter gesetzt.
laenge
- die Länge des neuen Rechtecksbreite
- die Breite des neuen RechtecksMethod Detail |
---|
public int getLaenge()
laenge
public int getBreite()
breite
public boolean isSquare()
laenge
und breite
auf
Gleichheit verglichen.
true
, falls es sich um ein Quadrat handeltpublic int getVolumen()
laenge
und breite
benutzt (und nicht die Instanzvariable volumen
). Das Ergebnis wird nicht gespeichert, sondern nur
zurückgegeben.
public void setLaenge(int neueLaenge)
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:
volumen
wird auf die bisherige (also
innerhalb dieser Methode noch nicht veränderte) Fläche des
Rechtecks gesetzt.
laenge
wird auf die in neueLaenge
übergebene Länge gesetzt.
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.
neueLaenge
- die Länge, die das Rechteck fortan haben sollpublic void setBreite(int neueBreite)
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:
volumen
wird auf die bisherige (also
innerhalb dieser Methode noch nicht veränderte) Fläche des
Rechtecks gesetzt.
breite
wird auf die in neueBreite
übergebene Breite gesetzt.
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.
neueBreite
- die Breite, die das Rechteck fortan haben soll
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |