diff --git a/src/wetterstation/AktuelleBedingungenAnzeige.java b/src/wetterstation/AktuelleBedingungenAnzeige.java index f73dc784c56fac054d278bc4f903772668d6b331..c84afb0a8145d6abff41a5849a5466a41a439861 100644 --- a/src/wetterstation/AktuelleBedingungenAnzeige.java +++ b/src/wetterstation/AktuelleBedingungenAnzeige.java @@ -3,6 +3,7 @@ package wetterstation; import java.util.Observable; import java.util.Observer; + public class AktuelleBedingungenAnzeige implements Observer { private float temperatur; private float feuchtigkeit; @@ -10,13 +11,14 @@ public class AktuelleBedingungenAnzeige implements Observer { public AktuelleBedingungenAnzeige(WetterDaten wetterDaten) { this.wetterDaten = wetterDaten; - wetterDaten.addObserver(this); + wetterDaten.addPropertyListener(this); } public void update(Observable o, Object arg) { - if (o instanceof WetterDaten) { - this.temperatur = ((WetterDaten) o).getTemperatur(); - this.feuchtigkeit = ((WetterDaten) o).getFeuchtigkeit(); + if (o instanceof EigenschaftenSubjekt) { + WetterDaten daten = (WetterDaten) arg; + this.temperatur = daten.getTemperatur(); + this.feuchtigkeit = daten.getFeuchtigkeit(); anzeigen(); } } diff --git a/src/wetterstation/EigenschaftenSubjekt.java b/src/wetterstation/EigenschaftenSubjekt.java new file mode 100644 index 0000000000000000000000000000000000000000..db1d21993f78d3fb0655db2e264e65bd4ba841eb --- /dev/null +++ b/src/wetterstation/EigenschaftenSubjekt.java @@ -0,0 +1,11 @@ +package wetterstation; + +import java.util.Observable; + +public class EigenschaftenSubjekt extends Observable { + public void firePropertyChange(WetterDaten wetterDaten) { + setChanged(); + notifyObservers(wetterDaten); + } + +} diff --git a/src/wetterstation/SensorDaten.java b/src/wetterstation/SensorDaten.java new file mode 100644 index 0000000000000000000000000000000000000000..1ed4e955804c6bbba868154bbf00084a66919635 --- /dev/null +++ b/src/wetterstation/SensorDaten.java @@ -0,0 +1,5 @@ +package wetterstation; + +public abstract class SensorDaten { + +} diff --git a/src/wetterstation/StatistikAnzeige.java b/src/wetterstation/StatistikAnzeige.java index 2b9e66bedf01cb0c76a5b2c4dd4b960f5ea76fae..b19432310c1cd4bc456fe1c0dd7d037038fbae97 100644 --- a/src/wetterstation/StatistikAnzeige.java +++ b/src/wetterstation/StatistikAnzeige.java @@ -12,12 +12,13 @@ public class StatistikAnzeige implements Observer { public StatistikAnzeige(WetterDaten wetterDaten) { this.wetterDaten = wetterDaten; - wetterDaten.addObserver(this); + wetterDaten.addPropertyListener(this); } public void update(Observable o, Object arg) { - if (o instanceof WetterDaten) { - float temp = ((WetterDaten) o).getTemperatur(); + if (o instanceof EigenschaftenSubjekt) { + WetterDaten daten = (WetterDaten) arg; + float temp = daten.getTemperatur(); tempSum += temp; anzMesswerte++; diff --git a/src/wetterstation/VorhersageAnzeige.java b/src/wetterstation/VorhersageAnzeige.java index f10a27f086f132b80b05eb7531d081627cbdaa7e..25cda82a83d81dd77d86cec8699cdb500b15d491 100644 --- a/src/wetterstation/VorhersageAnzeige.java +++ b/src/wetterstation/VorhersageAnzeige.java @@ -10,13 +10,14 @@ public class VorhersageAnzeige implements Observer { public VorhersageAnzeige(WetterDaten wetterDaten) { this.wetterDaten = wetterDaten; - wetterDaten.addObserver(this); + wetterDaten.addPropertyListener(this); } public void update(Observable o, Object arg) { - if (o instanceof WetterDaten) { + if (o instanceof EigenschaftenSubjekt) { + WetterDaten daten = (WetterDaten) arg; letzterLuftdruck = aktuellerLuftdruck; - aktuellerLuftdruck = ((WetterDaten) o).getLuftdruck(); + aktuellerLuftdruck = daten.getLuftdruck(); anzeigen(); } } diff --git a/src/wetterstation/WetterDaten.java b/src/wetterstation/WetterDaten.java index e82cd9a921de032b2e17a4497869b1a9153a5374..bbfeafb4e5f77d5e3452e72b8f4a1e556316b132 100644 --- a/src/wetterstation/WetterDaten.java +++ b/src/wetterstation/WetterDaten.java @@ -1,16 +1,25 @@ package wetterstation; -import java.util.Observable; +import java.util.Observer; -public class WetterDaten extends Observable { + +public class WetterDaten extends SensorDaten { private float temperatur; private float feuchtigkeit; private float luftdruck; + private EigenschaftenSubjekt subjekt; + + public WetterDaten() { + subjekt = new EigenschaftenSubjekt(); + } + + public void addPropertyListener(Observer o) { + subjekt.addObserver(o); + } public void messwerteGeaendert() { System.out.println(this.toString()); - setChanged(); - notifyObservers(); + subjekt.firePropertyChange(this); } public void setMesswerte(float temp, float feucht, float druck) {