Moin Moin
,
Ich habe vor kurzem angefangen Java zu programmieren und habe mir dazu das Buch "Java ist auch eine Insel" gekauft. Ich bin jetzt bei dem Kapitel Angewandete Objektorientierung angekommen und bin bei der Aufgabe mit MeckerMax und Trinkfreund stehen geblieben.
Problem:
Die Aufgabe besagt, dass ich eine Trinkfreund-Klasse erstellen soll und eine MeckerMax-Klasse. Trinkfreund trinkt Bier und kriegt pro Bier 0.2 Promille (Leberabbau nicht berücksichtigt
) hinzu. Der MeckerMax soll bei 1.0 Promille meckern und dem Trinkfreund "verbieten" noch ein Bier zu trinken. Bei mir darf der Trinkfreund sich aber ins Nirvana saufen, ohne dass der MeckerMax einschreitet. Mit dem Debugger habe ich herausgefunden, dass der Trinkerfreund wohl "heimlich" saufen muss, da der VetoableChange gar nicht bis zu dem MeckerMax kommt. Meine Frage ist nun warum?
Das ist meine Trinkfreund-Klasse
und das ist die MeckerMax-Klasse
Btw. ich habe das Internet schon nach der Lösung durchsucht aber bin nicht fündig geworden. Außerdem würde ich gerne erklärt bekommen warum es nicht so geht, wie ich es haben will, da ich schon Mehreres ausprobiert habe.
Ich habe vor kurzem angefangen Java zu programmieren und habe mir dazu das Buch "Java ist auch eine Insel" gekauft. Ich bin jetzt bei dem Kapitel Angewandete Objektorientierung angekommen und bin bei der Aufgabe mit MeckerMax und Trinkfreund stehen geblieben.
Problem:
Die Aufgabe besagt, dass ich eine Trinkfreund-Klasse erstellen soll und eine MeckerMax-Klasse. Trinkfreund trinkt Bier und kriegt pro Bier 0.2 Promille (Leberabbau nicht berücksichtigt
Das ist meine Trinkfreund-Klasse
Java:
import java.beans.*;
public class Trinkfreund
{
private double zAlkoholSpiegel;
private VetoableChangeSupport vetos = new VetoableChangeSupport(this);
public Trinkfreund()
{
}
public void nochEinBier() throws PropertyVetoException
{
double oldValue = this.zAlkoholSpiegel;
vetos.fireVetoableChange("Promille", oldValue, zAlkoholSpiegel);
zAlkoholSpiegel = zAlkoholSpiegel + 0.2;
}
public double promille()
{
return zAlkoholSpiegel;
}
public void addVetoableChangeListener(VetoableChangeListener l)
{
vetos.addVetoableChangeListener(l);
}
}
und das ist die MeckerMax-Klasse
Java:
import java.beans.*;
public class Meckermax implements VetoableChangeListener
{
public Meckermax()
{
}
@Override public void vetoableChange(PropertyChangeEvent e) throws PropertyVetoException
{
if("Promille".equals(e.getPropertyName()));
{
if(1.0 == (Double) e.getNewValue())
throw new PropertyVetoException("Jetzt ist Schluß", e);
}
}
}
Btw. ich habe das Internet schon nach der Lösung durchsucht aber bin nicht fündig geworden. Außerdem würde ich gerne erklärt bekommen warum es nicht so geht, wie ich es haben will, da ich schon Mehreres ausprobiert habe.