diff --git a/src/wetterstation/AktuelleBedingungenAnzeige.java b/src/wetterstation/AktuelleBedingungenAnzeige.java index c84afb0a8145d6abff41a5849a5466a41a439861..d4d8eb1f8607bd89d592ca749f928f2cb75bd789 100644 --- a/src/wetterstation/AktuelleBedingungenAnzeige.java +++ b/src/wetterstation/AktuelleBedingungenAnzeige.java @@ -1,30 +1,33 @@ package wetterstation; -import java.util.Observable; -import java.util.Observer; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; -public class AktuelleBedingungenAnzeige implements Observer { +public class AktuelleBedingungenAnzeige implements PropertyChangeListener { private float temperatur; private float feuchtigkeit; WetterDaten wetterDaten; public AktuelleBedingungenAnzeige(WetterDaten wetterDaten) { this.wetterDaten = wetterDaten; - wetterDaten.addPropertyListener(this); + wetterDaten.addPropertyChangeListener(this); } - public void update(Observable o, Object arg) { - if (o instanceof EigenschaftenSubjekt) { - WetterDaten daten = (WetterDaten) arg; - this.temperatur = daten.getTemperatur(); - this.feuchtigkeit = daten.getFeuchtigkeit(); - anzeigen(); + public void propertyChange(PropertyChangeEvent e) { + switch (e.getPropertyName()) { + case "Temperatur": + this.temperatur = (float)e.getNewValue(); + System.out.println("Aktuelle Bedingungen: " + temperatur + + " Grad C"); + break; + case "Feuchtigkeit": + this.feuchtigkeit = (float)e.getNewValue(); + System.out.println("Aktuelle Bedingungen: " + feuchtigkeit + "% Luftfeuchtigkeit"); + break; + default: + break; } } - public void anzeigen() { - System.out.println("Aktuelle Bedingungen: " + temperatur - + " Grad C und " + feuchtigkeit + "% Luftfeuchtigkeit"); - } } diff --git a/src/wetterstation/EigenschaftenSubjekt.java b/src/wetterstation/EigenschaftenSubjekt.java deleted file mode 100644 index db1d21993f78d3fb0655db2e264e65bd4ba841eb..0000000000000000000000000000000000000000 --- a/src/wetterstation/EigenschaftenSubjekt.java +++ /dev/null @@ -1,11 +0,0 @@ -package wetterstation; - -import java.util.Observable; - -public class EigenschaftenSubjekt extends Observable { - public void firePropertyChange(WetterDaten wetterDaten) { - setChanged(); - notifyObservers(wetterDaten); - } - -} diff --git a/src/wetterstation/StatistikAnzeige.java b/src/wetterstation/StatistikAnzeige.java index b19432310c1cd4bc456fe1c0dd7d037038fbae97..2e3926e809b780d61c2e5b994cf7337d5f5f033a 100644 --- a/src/wetterstation/StatistikAnzeige.java +++ b/src/wetterstation/StatistikAnzeige.java @@ -1,9 +1,9 @@ package wetterstation; -import java.util.Observable; -import java.util.Observer; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; -public class StatistikAnzeige implements Observer { +public class StatistikAnzeige implements PropertyChangeListener { private float maxTemp = 0.0f; private float minTemp = 200; private float tempSum= 0.0f; @@ -12,27 +12,32 @@ public class StatistikAnzeige implements Observer { public StatistikAnzeige(WetterDaten wetterDaten) { this.wetterDaten = wetterDaten; - wetterDaten.addPropertyListener(this); + wetterDaten.addPropertyChangeListener(this); } - public void update(Observable o, Object arg) { - if (o instanceof EigenschaftenSubjekt) { - WetterDaten daten = (WetterDaten) arg; - float temp = daten.getTemperatur(); - tempSum += temp; - anzMesswerte++; + public void propertyChange(PropertyChangeEvent e) { + float temp; + + switch (e.getPropertyName()) { + case "Temperatur": + temp = (float)e.getNewValue(); + tempSum += temp; + anzMesswerte++; - if (temp > maxTemp) { - maxTemp = temp; - } - - if (temp < minTemp) { - minTemp = temp; - } + if (temp > maxTemp) { + maxTemp = temp; + } + + if (temp < minTemp) { + minTemp = temp; + } - anzeigen(); + anzeigen(); + break; + default: + break; } - } + } public void anzeigen() { System.out.println("Mit/Max/Min Temperatur = " + (tempSum / anzMesswerte) diff --git a/src/wetterstation/VorhersageAnzeige.java b/src/wetterstation/VorhersageAnzeige.java index 25cda82a83d81dd77d86cec8699cdb500b15d491..d33adb7ff30172cc3f4ee7bf766200d7ce5a3821 100644 --- a/src/wetterstation/VorhersageAnzeige.java +++ b/src/wetterstation/VorhersageAnzeige.java @@ -1,26 +1,29 @@ package wetterstation; -import java.util.Observable; -import java.util.Observer; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; -public class VorhersageAnzeige implements Observer { +public class VorhersageAnzeige implements PropertyChangeListener { private float aktuellerLuftdruck = 29.92f; private float letzterLuftdruck; WetterDaten wetterDaten; public VorhersageAnzeige(WetterDaten wetterDaten) { this.wetterDaten = wetterDaten; - wetterDaten.addPropertyListener(this); + wetterDaten.addPropertyChangeListener(this); } - public void update(Observable o, Object arg) { - if (o instanceof EigenschaftenSubjekt) { - WetterDaten daten = (WetterDaten) arg; - letzterLuftdruck = aktuellerLuftdruck; - aktuellerLuftdruck = daten.getLuftdruck(); - anzeigen(); + public void propertyChange(PropertyChangeEvent e) { + switch (e.getPropertyName()) { + case "Luftdruck": + letzterLuftdruck = aktuellerLuftdruck; + aktuellerLuftdruck = (float)e.getNewValue(); + anzeigen(); + break; + default: + break; } - } + } public void anzeigen() { System.out.print("Vorhersage: "); diff --git a/src/wetterstation/WetterDaten.java b/src/wetterstation/WetterDaten.java index bbfeafb4e5f77d5e3452e72b8f4a1e556316b132..0d4336b93a63a446a96885b30da95a36b7093de4 100644 --- a/src/wetterstation/WetterDaten.java +++ b/src/wetterstation/WetterDaten.java @@ -1,28 +1,41 @@ package wetterstation; -import java.util.Observer; +import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; public class WetterDaten extends SensorDaten { private float temperatur; private float feuchtigkeit; private float luftdruck; - private EigenschaftenSubjekt subjekt; + private float old_temperatur; + private float old_feuchtigkeit; + private float old_luftdruck; + private PropertyChangeSupport changes; public WetterDaten() { - subjekt = new EigenschaftenSubjekt(); + changes = new PropertyChangeSupport(this); } - public void addPropertyListener(Observer o) { - subjekt.addObserver(o); + public void addPropertyChangeListener(PropertyChangeListener l) { + changes.addPropertyChangeListener(l); + } + + public void removePropertyChangeListener(PropertyChangeListener l) { + changes.removePropertyChangeListener(l); } public void messwerteGeaendert() { System.out.println(this.toString()); - subjekt.firePropertyChange(this); + changes.firePropertyChange("Temperatur", old_temperatur, temperatur); + changes.firePropertyChange("Feuchtigkeit", old_feuchtigkeit, feuchtigkeit); + changes.firePropertyChange("Luftdruck", old_luftdruck, luftdruck); } public void setMesswerte(float temp, float feucht, float druck) { + old_temperatur = this.temperatur; + old_feuchtigkeit = this.feuchtigkeit; + old_luftdruck = this.luftdruck; this.temperatur = temp; this.feuchtigkeit = feucht; this.luftdruck = druck;