|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectde.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 Rechtecks| Method Detail |
|---|
public int getLaenge()
laengepublic int getBreite()
breitepublic 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 | ||||||||