From ed72a389d0eb66ab8326dcee25e656e3a6ea4040 Mon Sep 17 00:00:00 2001
From: Peter Hertkorn <peter.hertkorn@reutlingen-university.de>
Date: Thu, 12 Nov 2020 18:56:48 +0100
Subject: [PATCH] Add superclass for WetterDaten

---
 .../AktuelleBedingungenAnzeige.java             | 10 ++++++----
 src/wetterstation/EigenschaftenSubjekt.java     | 11 +++++++++++
 src/wetterstation/SensorDaten.java              |  5 +++++
 src/wetterstation/StatistikAnzeige.java         |  7 ++++---
 src/wetterstation/VorhersageAnzeige.java        |  7 ++++---
 src/wetterstation/WetterDaten.java              | 17 +++++++++++++----
 6 files changed, 43 insertions(+), 14 deletions(-)
 create mode 100644 src/wetterstation/EigenschaftenSubjekt.java
 create mode 100644 src/wetterstation/SensorDaten.java

diff --git a/src/wetterstation/AktuelleBedingungenAnzeige.java b/src/wetterstation/AktuelleBedingungenAnzeige.java
index f73dc78..c84afb0 100644
--- a/src/wetterstation/AktuelleBedingungenAnzeige.java
+++ b/src/wetterstation/AktuelleBedingungenAnzeige.java
@@ -3,6 +3,7 @@ package wetterstation;
 import java.util.Observable;
 import java.util.Observer;
 
+
 public class AktuelleBedingungenAnzeige implements Observer {
 	private float temperatur;
 	private float feuchtigkeit;
@@ -10,13 +11,14 @@ public class AktuelleBedingungenAnzeige implements Observer {
 	
 	public AktuelleBedingungenAnzeige(WetterDaten wetterDaten) {
 		this.wetterDaten = wetterDaten;
-		wetterDaten.addObserver(this);
+		wetterDaten.addPropertyListener(this);
 	}
 	
 	public void update(Observable o, Object arg) {
-		if (o instanceof WetterDaten) {
-			this.temperatur = ((WetterDaten) o).getTemperatur();
-			this.feuchtigkeit = ((WetterDaten) o).getFeuchtigkeit();
+		if (o instanceof EigenschaftenSubjekt) {
+			WetterDaten daten = (WetterDaten) arg;
+			this.temperatur = daten.getTemperatur();
+			this.feuchtigkeit = daten.getFeuchtigkeit();
 			anzeigen();
 		}
 	}
diff --git a/src/wetterstation/EigenschaftenSubjekt.java b/src/wetterstation/EigenschaftenSubjekt.java
new file mode 100644
index 0000000..db1d219
--- /dev/null
+++ b/src/wetterstation/EigenschaftenSubjekt.java
@@ -0,0 +1,11 @@
+package wetterstation;
+
+import java.util.Observable;
+
+public class EigenschaftenSubjekt extends Observable {
+	public void firePropertyChange(WetterDaten wetterDaten) {
+		setChanged();
+		notifyObservers(wetterDaten);
+	}
+
+}
diff --git a/src/wetterstation/SensorDaten.java b/src/wetterstation/SensorDaten.java
new file mode 100644
index 0000000..1ed4e95
--- /dev/null
+++ b/src/wetterstation/SensorDaten.java
@@ -0,0 +1,5 @@
+package wetterstation;
+
+public abstract class SensorDaten {
+
+}
diff --git a/src/wetterstation/StatistikAnzeige.java b/src/wetterstation/StatistikAnzeige.java
index 2b9e66b..b194323 100644
--- a/src/wetterstation/StatistikAnzeige.java
+++ b/src/wetterstation/StatistikAnzeige.java
@@ -12,12 +12,13 @@ public class StatistikAnzeige implements Observer {
 
 	public StatistikAnzeige(WetterDaten wetterDaten) {
 		this.wetterDaten = wetterDaten;
-		wetterDaten.addObserver(this);
+		wetterDaten.addPropertyListener(this);
 	}
 	
 	public void update(Observable o, Object arg) {
-		if (o instanceof WetterDaten) {
-			float temp = ((WetterDaten) o).getTemperatur();
+		if (o instanceof EigenschaftenSubjekt) {
+			WetterDaten daten = (WetterDaten) arg;
+			float temp = daten.getTemperatur();
 			tempSum += temp;
 			anzMesswerte++;
 
diff --git a/src/wetterstation/VorhersageAnzeige.java b/src/wetterstation/VorhersageAnzeige.java
index f10a27f..25cda82 100644
--- a/src/wetterstation/VorhersageAnzeige.java
+++ b/src/wetterstation/VorhersageAnzeige.java
@@ -10,13 +10,14 @@ public class VorhersageAnzeige implements Observer {
 	
 	public VorhersageAnzeige(WetterDaten wetterDaten) {
 		this.wetterDaten = wetterDaten;
-		wetterDaten.addObserver(this);
+		wetterDaten.addPropertyListener(this);
 	}
 	
 	public void update(Observable o, Object arg) {
-		if (o instanceof WetterDaten) {
+		if (o instanceof EigenschaftenSubjekt) {
+			WetterDaten daten = (WetterDaten) arg;
 			letzterLuftdruck = aktuellerLuftdruck;
-			aktuellerLuftdruck = ((WetterDaten) o).getLuftdruck();
+			aktuellerLuftdruck = daten.getLuftdruck();
 			anzeigen();
 		}
 	}
diff --git a/src/wetterstation/WetterDaten.java b/src/wetterstation/WetterDaten.java
index e82cd9a..bbfeafb 100644
--- a/src/wetterstation/WetterDaten.java
+++ b/src/wetterstation/WetterDaten.java
@@ -1,16 +1,25 @@
 package wetterstation;
 
-import java.util.Observable;
+import java.util.Observer;
 
-public class WetterDaten extends Observable {
+
+public class WetterDaten extends SensorDaten {
 	private float temperatur;
 	private float feuchtigkeit;
 	private float luftdruck;
+	private EigenschaftenSubjekt subjekt;
+	
+	public WetterDaten() {
+		subjekt = new EigenschaftenSubjekt();
+	}
+
+	public void addPropertyListener(Observer o) {
+		subjekt.addObserver(o);
+	}
 	
 	public void messwerteGeaendert() {
 		System.out.println(this.toString());
-		setChanged();
-		notifyObservers();
+		subjekt.firePropertyChange(this);
 	}
 	
 	public void setMesswerte(float temp, float feucht, float druck) {
-- 
GitLab