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

Use javabeans library for observer pattern

parent ed72a389
No related branches found
No related tags found
No related merge requests found
package wetterstation;
import java.util.Observable;
import java.util.Observer;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
public class AktuelleBedingungenAnzeige implements Observer {
public class AktuelleBedingungenAnzeige implements PropertyChangeListener {
private float temperatur;
private float feuchtigkeit;
WetterDaten wetterDaten;
public AktuelleBedingungenAnzeige(WetterDaten wetterDaten) {
this.wetterDaten = wetterDaten;
wetterDaten.addPropertyListener(this);
wetterDaten.addPropertyChangeListener(this);
}
public void update(Observable o, Object arg) {
if (o instanceof EigenschaftenSubjekt) {
WetterDaten daten = (WetterDaten) arg;
this.temperatur = daten.getTemperatur();
this.feuchtigkeit = daten.getFeuchtigkeit();
anzeigen();
public void propertyChange(PropertyChangeEvent e) {
switch (e.getPropertyName()) {
case "Temperatur":
this.temperatur = (float)e.getNewValue();
System.out.println("Aktuelle Bedingungen: " + temperatur
+ " Grad C");
break;
case "Feuchtigkeit":
this.feuchtigkeit = (float)e.getNewValue();
System.out.println("Aktuelle Bedingungen: " + feuchtigkeit + "% Luftfeuchtigkeit");
break;
default:
break;
}
}
public void anzeigen() {
System.out.println("Aktuelle Bedingungen: " + temperatur
+ " Grad C und " + feuchtigkeit + "% Luftfeuchtigkeit");
}
}
package wetterstation;
import java.util.Observable;
public class EigenschaftenSubjekt extends Observable {
public void firePropertyChange(WetterDaten wetterDaten) {
setChanged();
notifyObservers(wetterDaten);
}
}
package wetterstation;
import java.util.Observable;
import java.util.Observer;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
public class StatistikAnzeige implements Observer {
public class StatistikAnzeige implements PropertyChangeListener {
private float maxTemp = 0.0f;
private float minTemp = 200;
private float tempSum= 0.0f;
......@@ -12,13 +12,15 @@ public class StatistikAnzeige implements Observer {
public StatistikAnzeige(WetterDaten wetterDaten) {
this.wetterDaten = wetterDaten;
wetterDaten.addPropertyListener(this);
wetterDaten.addPropertyChangeListener(this);
}
public void update(Observable o, Object arg) {
if (o instanceof EigenschaftenSubjekt) {
WetterDaten daten = (WetterDaten) arg;
float temp = daten.getTemperatur();
public void propertyChange(PropertyChangeEvent e) {
float temp;
switch (e.getPropertyName()) {
case "Temperatur":
temp = (float)e.getNewValue();
tempSum += temp;
anzMesswerte++;
......@@ -31,6 +33,9 @@ public class StatistikAnzeige implements Observer {
}
anzeigen();
break;
default:
break;
}
}
......
package wetterstation;
import java.util.Observable;
import java.util.Observer;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
public class VorhersageAnzeige implements Observer {
public class VorhersageAnzeige implements PropertyChangeListener {
private float aktuellerLuftdruck = 29.92f;
private float letzterLuftdruck;
WetterDaten wetterDaten;
public VorhersageAnzeige(WetterDaten wetterDaten) {
this.wetterDaten = wetterDaten;
wetterDaten.addPropertyListener(this);
wetterDaten.addPropertyChangeListener(this);
}
public void update(Observable o, Object arg) {
if (o instanceof EigenschaftenSubjekt) {
WetterDaten daten = (WetterDaten) arg;
public void propertyChange(PropertyChangeEvent e) {
switch (e.getPropertyName()) {
case "Luftdruck":
letzterLuftdruck = aktuellerLuftdruck;
aktuellerLuftdruck = daten.getLuftdruck();
aktuellerLuftdruck = (float)e.getNewValue();
anzeigen();
break;
default:
break;
}
}
......
package wetterstation;
import java.util.Observer;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
public class WetterDaten extends SensorDaten {
private float temperatur;
private float feuchtigkeit;
private float luftdruck;
private EigenschaftenSubjekt subjekt;
private float old_temperatur;
private float old_feuchtigkeit;
private float old_luftdruck;
private PropertyChangeSupport changes;
public WetterDaten() {
subjekt = new EigenschaftenSubjekt();
changes = new PropertyChangeSupport(this);
}
public void addPropertyListener(Observer o) {
subjekt.addObserver(o);
public void addPropertyChangeListener(PropertyChangeListener l) {
changes.addPropertyChangeListener(l);
}
public void removePropertyChangeListener(PropertyChangeListener l) {
changes.removePropertyChangeListener(l);
}
public void messwerteGeaendert() {
System.out.println(this.toString());
subjekt.firePropertyChange(this);
changes.firePropertyChange("Temperatur", old_temperatur, temperatur);
changes.firePropertyChange("Feuchtigkeit", old_feuchtigkeit, feuchtigkeit);
changes.firePropertyChange("Luftdruck", old_luftdruck, luftdruck);
}
public void setMesswerte(float temp, float feucht, float druck) {
old_temperatur = this.temperatur;
old_feuchtigkeit = this.feuchtigkeit;
old_luftdruck = this.luftdruck;
this.temperatur = temp;
this.feuchtigkeit = feucht;
this.luftdruck = druck;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment