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

Use java library for observer pattern

parent c20c8521
No related merge requests found
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();
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() {
System.out.println("Aktuelle Bedingungen: " + temperatur
......
package wetterstation;
public interface Beobachter {
public void aktualisieren();
}
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,11 +12,12 @@ 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();
public void update(Observable o, Object arg) {
if (o instanceof WetterDaten) {
float temp = ((WetterDaten) o).getTemperatur();
tempSum += temp;
anzMesswerte++;
......@@ -28,6 +31,7 @@ public class StatistikAnzeige implements Beobachter {
anzeigen();
}
}
public void anzeigen() {
System.out.println("Mit/Max/Min Temperatur = " + (tempSum / anzMesswerte)
......
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();
}
}
}
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() {
public void update(Observable o, Object arg) {
if (o instanceof WetterDaten) {
letzterLuftdruck = aktuellerLuftdruck;
aktuellerLuftdruck = wetterDaten.getLuftdruck();
aktuellerLuftdruck = ((WetterDaten) o).getLuftdruck();
anzeigen();
}
}
public void anzeigen() {
System.out.print("Vorhersage: ");
......
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) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment