1   package sensor;
2    
3   import java.util.Date;
4   /**
5    * 183.592 Programmierpraxis TU Wien WS2014/15 H.Moritsch
6    * Punkt mit Sensoren
7    * Diese Klasse definiert einen Sensor. Das Auslesen des Wertes des Sensors -
8    * readValue() - wird nicht implementiert, daher ist diese Klasse abstrakt.
9    * Diese Klasse enthält die Variablen eines Sensors sowie den Konstruktor.
10   **/
11  public abstract class AbstractSensor implements Sensor {
12  
13      private final String name;  // der Name des Sensors
14      private Date date;          // der Zeitpunkt des letztmaligen Auslesens mittels read()
15      private double value;       // der zuletzt mittels readValue() ausgelesene Wert: 
16                                  // wird mittels readValue() in Unterklassen gesetzt
17  
18      // Konstruktor - setzt den Namen
19      // wird in den Unterklassen aufgerufen
20      protected AbstractSensor(String name) {
21          this.name = name;
22      }
23  
24      // abstrakte Methode zum Auslesen des Wertes
25      // hängt von der Art des Sensors ab
26      // wird erst in Unterklassen implementiert
27      protected abstract void readValue();
28  
29      // liefert den Namen    
30      public String getName() {
31          return name;
32      }
33  
34      // Auslesen des Sensors
35      public void read() {
36          date = new Date();      // aktuelle Zeit speichern (unabhängig von Art des Sensors)
37          readValue();            // Aufruf der abstrakten Methode
38      }
39  
40      // liefert den Zeitpunkt des letzten Auslesens
41      public Date getDate() {
42          return date;
43      }
44  
45      // liefert den zuletzt ausgelesenen Wert
46      public double getValue() {
47          return value;
48      }
49  
50      // setzt den zuletzt ausgelesenen Wert
51      // in einer Unterklasse
52      protected void setValue(double value) {
53          this.value = value;
54      }
55  
56  }
57