Heyho, ich hänge an einer meiner Aufgaben schon ziemlich lange und habe das Gefühl, dass nur eine Kleinigkeit verkehrt ist. Wir sind in die Objektorientierung eingestiegen und hatten folgende Aufgabenstellung:
"Schreiben Sie ein Java-Programm Bucket.java, welches eine Klasse Bucket, deren Objekte Eimer darstellen, mit folgenden Attributen und Methoden deklariert:
• Bucket-Objekte haben jeweils ein Volumen (double volume) und einen Füllstand (double fillLevel) in Liter.
• Die Methoden double getFillLevel() und void setFillLevel(double level) sollen den Füllstand des Eimers zurückgeben bzw. setzen.
• Die Methode void fill() soll den Eimer vollständig füllen.
• Die Methode void merge(Bucket other) soll den Inhalt des Eimers other in diesen Eimer schütten. Würde der Eimer überlaufen, so geht der verschüttete Inhalt verloren. other soll nach Ausführung einen Füllstand von 0 haben.
Schreiben Sie zusätzlich eine main-Methode, welche zwei Eimer jeweils mit einem Volumen von 10 und einem Füllstand von 5 erzeugt. Rufen Sie auf dem zuerst erzeugten Objekt die Methode fill() auf und geben Sie den Füllstand dieses Objekts aus. Nutzen Sie zur Abfrage des Füllstands die getFillLevel()-Methode. Rufen Sie danach die Methode merge auf dem zuletzt erzeugten Objekt, mit dem zuerst erzeugten Objekt als Parameter, auf.
Beispielausgabe:
> java Bucket Fuellstand von Eimer 1 nach fill: 10.0
Fuellstand von Eimer 1 nach merge: 0.0
Fuellstand von Eimer 2 nach merge: 10.0"
Mein bisheriger Versuch sieht folgendermaßen aus:
Hat jemand einen Tipp, oder kann mir bei meinem Problem helfen ?
LG
[CODE lang="java" title="Bucket"]public class Bucket {
double level;
static int numBuckets;
static double fillLevel = 5;
static double volume = 10;
public Bucket(double volume, double fillLevel) {
numBuckets++;
}
double getFillLevel() {
return fillLevel;
}
void setFillLevel(double level) {
fillLevel = level;
}
void fill() {
level = volume;
setFillLevel(level);
}
void merge(Bucket other) {
double o = other.getFillLevel();
double t = getFillLevel();
t = t + o;
if (t > volume) {
t = volume;
}
o = 0;
}
public static void main(String[] args) {
Bucket one = new Bucket(volume, fillLevel);
Bucket two = new Bucket(volume, fillLevel);
one.fill();
Out.println("Fuellstand von Eimer 1 nach fill: " + one.getFillLevel());
two.merge(one);
Out.println("Fuellstand von Eimer 1 nach merge: " + one.getFillLevel());
Out.println("Fuellstand von Eimer 2 nach merge: " + two.getFillLevel());
}
}
[/CODE]
"Schreiben Sie ein Java-Programm Bucket.java, welches eine Klasse Bucket, deren Objekte Eimer darstellen, mit folgenden Attributen und Methoden deklariert:
• Bucket-Objekte haben jeweils ein Volumen (double volume) und einen Füllstand (double fillLevel) in Liter.
• Die Methoden double getFillLevel() und void setFillLevel(double level) sollen den Füllstand des Eimers zurückgeben bzw. setzen.
• Die Methode void fill() soll den Eimer vollständig füllen.
• Die Methode void merge(Bucket other) soll den Inhalt des Eimers other in diesen Eimer schütten. Würde der Eimer überlaufen, so geht der verschüttete Inhalt verloren. other soll nach Ausführung einen Füllstand von 0 haben.
Schreiben Sie zusätzlich eine main-Methode, welche zwei Eimer jeweils mit einem Volumen von 10 und einem Füllstand von 5 erzeugt. Rufen Sie auf dem zuerst erzeugten Objekt die Methode fill() auf und geben Sie den Füllstand dieses Objekts aus. Nutzen Sie zur Abfrage des Füllstands die getFillLevel()-Methode. Rufen Sie danach die Methode merge auf dem zuletzt erzeugten Objekt, mit dem zuerst erzeugten Objekt als Parameter, auf.
Beispielausgabe:
> java Bucket Fuellstand von Eimer 1 nach fill: 10.0
Fuellstand von Eimer 1 nach merge: 0.0
Fuellstand von Eimer 2 nach merge: 10.0"
Mein bisheriger Versuch sieht folgendermaßen aus:
Hat jemand einen Tipp, oder kann mir bei meinem Problem helfen ?
LG
[CODE lang="java" title="Bucket"]public class Bucket {
double level;
static int numBuckets;
static double fillLevel = 5;
static double volume = 10;
public Bucket(double volume, double fillLevel) {
numBuckets++;
}
double getFillLevel() {
return fillLevel;
}
void setFillLevel(double level) {
fillLevel = level;
}
void fill() {
level = volume;
setFillLevel(level);
}
void merge(Bucket other) {
double o = other.getFillLevel();
double t = getFillLevel();
t = t + o;
if (t > volume) {
t = volume;
}
o = 0;
}
public static void main(String[] args) {
Bucket one = new Bucket(volume, fillLevel);
Bucket two = new Bucket(volume, fillLevel);
one.fill();
Out.println("Fuellstand von Eimer 1 nach fill: " + one.getFillLevel());
two.merge(one);
Out.println("Fuellstand von Eimer 1 nach merge: " + one.getFillLevel());
Out.println("Fuellstand von Eimer 2 nach merge: " + two.getFillLevel());
}
}
[/CODE]