diff --git a/src/wetterstation/AktuelleBedingungenAnzeige.java b/src/wetterstation/AktuelleBedingungenAnzeige.java index 03256ee20016bce8ea0039feae72087fd557a9a3..f73dc784c56fac054d278bc4f903772668d6b331 100644 --- a/src/wetterstation/AktuelleBedingungenAnzeige.java +++ b/src/wetterstation/AktuelleBedingungenAnzeige.java @@ -1,19 +1,24 @@ package wetterstation; -public class AktuelleBedingungenAnzeige implements Beobachter { +import java.util.Observable; +import java.util.Observer; + +public class AktuelleBedingungenAnzeige implements Observer { private float temperatur; private float feuchtigkeit; WetterDaten wetterDaten; public AktuelleBedingungenAnzeige(WetterDaten wetterDaten) { this.wetterDaten = wetterDaten; - wetterDaten.registriereBeobachter(this); + wetterDaten.addObserver(this); } - public void aktualisieren() { - this.temperatur = wetterDaten.getTemperatur(); - this.feuchtigkeit = wetterDaten.getFeuchtigkeit(); - anzeigen(); + public void update(Observable o, Object arg) { + if (o instanceof WetterDaten) { + this.temperatur = ((WetterDaten) o).getTemperatur(); + this.feuchtigkeit = ((WetterDaten) o).getFeuchtigkeit(); + anzeigen(); + } } public void anzeigen() { diff --git a/src/wetterstation/Beobachter.java b/src/wetterstation/Beobachter.java deleted file mode 100644 index 1a37fd3640976327c16851c8d089d74f090074d4..0000000000000000000000000000000000000000 --- a/src/wetterstation/Beobachter.java +++ /dev/null @@ -1,5 +0,0 @@ -package wetterstation; - -public interface Beobachter { - public void aktualisieren(); -} diff --git a/src/wetterstation/StatistikAnzeige.java b/src/wetterstation/StatistikAnzeige.java index 6c0bc81ea73c007cf1a70a7d0c8dca43a0b9e677..2b9e66bedf01cb0c76a5b2c4dd4b960f5ea76fae 100644 --- a/src/wetterstation/StatistikAnzeige.java +++ b/src/wetterstation/StatistikAnzeige.java @@ -1,7 +1,9 @@ package wetterstation; +import java.util.Observable; +import java.util.Observer; -public class StatistikAnzeige implements Beobachter { +public class StatistikAnzeige implements Observer { private float maxTemp = 0.0f; private float minTemp = 200; private float tempSum= 0.0f; @@ -10,23 +12,25 @@ public class StatistikAnzeige implements Beobachter { public StatistikAnzeige(WetterDaten wetterDaten) { this.wetterDaten = wetterDaten; - wetterDaten.registriereBeobachter(this); + wetterDaten.addObserver(this); } - public void aktualisieren() { - float temp = wetterDaten.getTemperatur(); - tempSum += temp; - anzMesswerte++; + public void update(Observable o, Object arg) { + if (o instanceof WetterDaten) { + float temp = ((WetterDaten) o).getTemperatur(); + tempSum += temp; + anzMesswerte++; - if (temp > maxTemp) { - maxTemp = temp; - } + if (temp > maxTemp) { + maxTemp = temp; + } - if (temp < minTemp) { - minTemp = temp; - } + if (temp < minTemp) { + minTemp = temp; + } - anzeigen(); + anzeigen(); + } } public void anzeigen() { diff --git a/src/wetterstation/Subjekt.java b/src/wetterstation/Subjekt.java deleted file mode 100644 index cb7e2cb8e7e829650a6dbb9ade16d2b5535be072..0000000000000000000000000000000000000000 --- a/src/wetterstation/Subjekt.java +++ /dev/null @@ -1,26 +0,0 @@ -package wetterstation; - -import java.util.ArrayList; - -public abstract class Subjekt { - private ArrayList<Beobachter> beobachter = new ArrayList<Beobachter>(); - - public void registriereBeobachter(Beobachter b) { - beobachter.add(b); - } - - public void entferneBeobachter(Beobachter b) { - int i = beobachter.indexOf(b); - if (i >= 0) { - beobachter.remove(i); - } - } - - public void benachrichtigeBeobachter() { - for (int i = 0; i < beobachter.size(); i++) { - Beobachter observer = (Beobachter)beobachter.get(i); - observer.aktualisieren(); - } - } - -} diff --git a/src/wetterstation/VorhersageAnzeige.java b/src/wetterstation/VorhersageAnzeige.java index 1faa923505e8e9da2ccf05f809c2cc60ce2822ed..f10a27f086f132b80b05eb7531d081627cbdaa7e 100644 --- a/src/wetterstation/VorhersageAnzeige.java +++ b/src/wetterstation/VorhersageAnzeige.java @@ -1,20 +1,24 @@ package wetterstation; +import java.util.Observable; +import java.util.Observer; -public class VorhersageAnzeige implements Beobachter { +public class VorhersageAnzeige implements Observer { private float aktuellerLuftdruck = 29.92f; private float letzterLuftdruck; WetterDaten wetterDaten; public VorhersageAnzeige(WetterDaten wetterDaten) { this.wetterDaten = wetterDaten; - wetterDaten.registriereBeobachter(this); + wetterDaten.addObserver(this); } - public void aktualisieren() { - letzterLuftdruck = aktuellerLuftdruck; - aktuellerLuftdruck = wetterDaten.getLuftdruck(); - anzeigen(); + public void update(Observable o, Object arg) { + if (o instanceof WetterDaten) { + letzterLuftdruck = aktuellerLuftdruck; + aktuellerLuftdruck = ((WetterDaten) o).getLuftdruck(); + anzeigen(); + } } public void anzeigen() { diff --git a/src/wetterstation/WetterDaten.java b/src/wetterstation/WetterDaten.java index 2197603cb08aef5bd4303bb068964d8a8ef3aad2..e82cd9a921de032b2e17a4497869b1a9153a5374 100644 --- a/src/wetterstation/WetterDaten.java +++ b/src/wetterstation/WetterDaten.java @@ -1,14 +1,16 @@ package wetterstation; +import java.util.Observable; -public class WetterDaten extends Subjekt { +public class WetterDaten extends Observable { private float temperatur; private float feuchtigkeit; private float luftdruck; public void messwerteGeaendert() { System.out.println(this.toString()); - benachrichtigeBeobachter(); + setChanged(); + notifyObservers(); } public void setMesswerte(float temp, float feucht, float druck) {