| AbstractSensor.java |
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