Skip to content
Snippets Groups Projects
Commit 499c99b1 authored by Peter Hertkorn's avatar Peter Hertkorn
Browse files

Add common superclass for WetterDaten

parent f12cbd2d
No related branches found
No related tags found
No related merge requests found
package wetterstation; package wetterstation;
public class AktuelleBedingungenAnzeige implements Beobachter { public class AktuelleBedingungenAnzeige implements Beobachter {
private float temperatur; private float temperatur;
private float feuchtigkeit; private float feuchtigkeit;
WetterDaten wetterDaten;
public AktuelleBedingungenAnzeige(WetterDaten wetterDaten) { public AktuelleBedingungenAnzeige(WetterDaten wetterDaten) {
this.wetterDaten = wetterDaten;
wetterDaten.registriereBeobachter(this); wetterDaten.registriereBeobachter(this);
} }
public void aktualisieren(float temp, float feucht, float druck) { public void aktualisieren(Subjekt s) {
this.temperatur = temp; if (s instanceof WetterDaten) {
this.feuchtigkeit = feucht; this.temperatur = ((WetterDaten) s).getTemperatur();
anzeigen(); this.feuchtigkeit = ((WetterDaten) s).getFeuchtigkeit();
anzeigen();
}
} }
public void anzeigen() { public void anzeigen() {
......
package wetterstation; package wetterstation;
public interface Beobachter { public interface Beobachter {
public void aktualisieren(float temp, float feucht, float druck); public void aktualisieren(Subjekt s);
} }
package wetterstation; package wetterstation;
public class StatistikAnzeige implements Beobachter { public class StatistikAnzeige implements Beobachter {
private float maxTemp = 0.0f; private float maxTemp = 0.0f;
private float minTemp = 200; private float minTemp = 200;
private float tempSum= 0.0f; private float tempSum= 0.0f;
private int anzMesswerte; private int anzMesswerte;
WetterDaten wetterDaten;
public StatistikAnzeige(WetterDaten wetterDaten) { public StatistikAnzeige(WetterDaten wetterDaten) {
this.wetterDaten = wetterDaten;
wetterDaten.registriereBeobachter(this); wetterDaten.registriereBeobachter(this);
} }
public void aktualisieren(float temp, float feucht, float druck) { public void aktualisieren(Subjekt s) {
tempSum += temp; if (s instanceof WetterDaten) {
anzMesswerte++; float temp = ((WetterDaten) s).getTemperatur();
tempSum += temp;
anzMesswerte++;
if (temp > maxTemp) { if (temp > maxTemp) {
maxTemp = temp; maxTemp = temp;
} }
if (temp < minTemp) { if (temp < minTemp) {
minTemp = temp; minTemp = temp;
} }
anzeigen(); anzeigen();
}
} }
public void anzeigen() { public void anzeigen() {
......
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(this);
}
}
}
...@@ -4,17 +4,19 @@ package wetterstation; ...@@ -4,17 +4,19 @@ package wetterstation;
public class VorhersageAnzeige implements Beobachter { public class VorhersageAnzeige implements Beobachter {
private float aktuellerLuftdruck = 29.92f; private float aktuellerLuftdruck = 29.92f;
private float letzterLuftdruck; private float letzterLuftdruck;
WetterDaten wetterDaten;
public VorhersageAnzeige(WetterDaten wetterDaten) { public VorhersageAnzeige(WetterDaten wetterDaten) {
this.wetterDaten = wetterDaten;
wetterDaten.registriereBeobachter(this); wetterDaten.registriereBeobachter(this);
} }
public void aktualisieren(float temp, float feucht, float druck) { public void aktualisieren(Subjekt s) {
letzterLuftdruck = aktuellerLuftdruck; if (s instanceof WetterDaten) {
aktuellerLuftdruck = druck; letzterLuftdruck = aktuellerLuftdruck;
aktuellerLuftdruck = ((WetterDaten) s).getLuftdruck();
anzeigen(); anzeigen();
}
} }
public void anzeigen() { public void anzeigen() {
......
package wetterstation; package wetterstation;
import java.util.ArrayList;
public class WetterDaten { public class WetterDaten extends Subjekt {
private float temperatur; private float temperatur;
private float feuchtigkeit; private float feuchtigkeit;
private float luftdruck; private float luftdruck;
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(temperatur, feuchtigkeit, luftdruck);
}
}
public void messwerteGeaendert() { public void messwerteGeaendert() {
System.out.println(this.toString()); System.out.println(this.toString());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment