diff --git a/src/wetterstation/AktuelleBedingungenAnzeige.java b/src/wetterstation/AktuelleBedingungenAnzeige.java index 430fe980ef1cdda9194de7e070ca584a5a1333df..c7af2382945ae649d7f8484c7b6766eea45ba5d2 100644 --- a/src/wetterstation/AktuelleBedingungenAnzeige.java +++ b/src/wetterstation/AktuelleBedingungenAnzeige.java @@ -4,6 +4,10 @@ public class AktuelleBedingungenAnzeige implements Beobachter { private float temperatur; private float feuchtigkeit; + public AktuelleBedingungenAnzeige(WetterDaten wetterDaten) { + wetterDaten.registriereBeobachter(this); + } + public void aktualisieren(float temp, float feucht, float druck) { this.temperatur = temp; this.feuchtigkeit = feucht; diff --git a/src/wetterstation/StatistikAnzeige.java b/src/wetterstation/StatistikAnzeige.java index 020cdeee8a0b40baef871a28ef969ce07d1a64e9..39d61a05e0ca034d9c61d62a603b629841662349 100644 --- a/src/wetterstation/StatistikAnzeige.java +++ b/src/wetterstation/StatistikAnzeige.java @@ -6,6 +6,10 @@ public class StatistikAnzeige implements Beobachter { private float tempSum= 0.0f; private int anzMesswerte; + public StatistikAnzeige(WetterDaten wetterDaten) { + wetterDaten.registriereBeobachter(this); + } + public void aktualisieren(float temp, float feucht, float druck) { tempSum += temp; anzMesswerte++; diff --git a/src/wetterstation/VorhersageAnzeige.java b/src/wetterstation/VorhersageAnzeige.java index d6fd3b10347b731ece9aef2bd76877790fd1320c..4727fc8d7c1cc0fb3ce0d7ed52220f72b4daca4e 100644 --- a/src/wetterstation/VorhersageAnzeige.java +++ b/src/wetterstation/VorhersageAnzeige.java @@ -6,6 +6,10 @@ public class VorhersageAnzeige implements Beobachter { private float letzterLuftdruck; + public VorhersageAnzeige(WetterDaten wetterDaten) { + wetterDaten.registriereBeobachter(this); + } + public void aktualisieren(float temp, float feucht, float druck) { letzterLuftdruck = aktuellerLuftdruck; aktuellerLuftdruck = druck; diff --git a/src/wetterstation/WetterDaten.java b/src/wetterstation/WetterDaten.java index 5ddeb3d810dd51788052a2fc06f0c18fc09874ee..fed03bb5fc1873dfe9ed29b4c516084a13fa32fe 100644 --- a/src/wetterstation/WetterDaten.java +++ b/src/wetterstation/WetterDaten.java @@ -1,17 +1,23 @@ package wetterstation; import java.util.ArrayList; -import java.util.Arrays; public class WetterDaten { private float temperatur; private float feuchtigkeit; private float luftdruck; - ArrayList<Beobachter> beobachter = new ArrayList<Beobachter>( - Arrays.<Beobachter>asList(new AktuelleBedingungenAnzeige(), - new StatistikAnzeige(), - new VorhersageAnzeige())); + 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); diff --git a/src/wetterstation/WetterStation.java b/src/wetterstation/WetterStation.java index e0f38c9748e1e9211ffb0671a75c5c3425899f62..d3d81b52417f99f00e195e976fc95ab434aef8de 100644 --- a/src/wetterstation/WetterStation.java +++ b/src/wetterstation/WetterStation.java @@ -2,9 +2,14 @@ package wetterstation; public class WetterStation { + @SuppressWarnings("unused") public static void main(String[] args) { WetterDaten wetterDaten = new WetterDaten(); + AktuelleBedingungenAnzeige aktuelleAnzeige = new AktuelleBedingungenAnzeige(wetterDaten); + StatistikAnzeige statistikAnzeige = new StatistikAnzeige(wetterDaten); + VorhersageAnzeige vorhersageAnzeige = new VorhersageAnzeige(wetterDaten); + wetterDaten.setMesswerte(30, 65, 30.4f); wetterDaten.setMesswerte(32, 70, 29.2f); wetterDaten.setMesswerte(28, 90, 29.2f);